🎨 自动校验索引时考虑大小写忽略表 Fix https://github.com/siyuan-note/siyuan/issues/7125

This commit is contained in:
Liang Ding 2023-01-19 17:52:41 +08:00
parent f84efb9efa
commit a00af1bd6c
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
3 changed files with 29 additions and 4 deletions

View file

@ -1309,16 +1309,16 @@ func autoFixIndex() {
rootUpdatedMap := treenode.GetRootUpdated() rootUpdatedMap := treenode.GetRootUpdated()
dbRootUpdatedMap, err := sql.GetRootUpdated("blocks") dbRootUpdatedMap, err := sql.GetRootUpdated("blocks")
if nil == err { if nil == err {
reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap) reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap, "blocks")
} }
dbFtsRootUpdatedMap, err := sql.GetRootUpdated("blocks_fts") dbFtsRootUpdatedMap, err := sql.GetRootUpdated("blocks_fts")
if nil == err { if nil == err {
reindexTreeByUpdated(rootUpdatedMap, dbFtsRootUpdatedMap) reindexTreeByUpdated(rootUpdatedMap, dbFtsRootUpdatedMap, "blocks_fts")
} }
if !Conf.Search.CaseSensitive { if !Conf.Search.CaseSensitive {
dbFtsRootUpdatedMap, err := sql.GetRootUpdated("blocks_fts_case_insensitive") dbFtsRootUpdatedMap, err := sql.GetRootUpdated("blocks_fts_case_insensitive")
if nil == err { if nil == err {
reindexTreeByUpdated(rootUpdatedMap, dbFtsRootUpdatedMap) reindexTreeByUpdated(rootUpdatedMap, dbFtsRootUpdatedMap, "blocks_fts_case_insensitive")
} }
} }
@ -1345,7 +1345,7 @@ func autoFixIndex() {
util.PushStatusBar(Conf.Language(185)) util.PushStatusBar(Conf.Language(185))
} }
func reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap map[string]string) { func reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap map[string]string, blocksTable string) {
i := -1 i := -1
size := len(rootUpdatedMap) size := len(rootUpdatedMap)
for rootID, updated := range rootUpdatedMap { for rootID, updated := range rootUpdatedMap {
@ -1372,6 +1372,13 @@ func reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap map[string]string) {
continue continue
} }
} }
for rootID, _ := range dbRootUpdatedMap {
if _, ok := rootUpdatedMap[rootID]; !ok {
logging.LogWarnf("tree [%s] is not in block tree, remove it from [%s]", rootID, blocksTable)
sql.DeleteTree(blocksTable, rootID)
}
}
} }
func reindexTreeByPath(box, p string, i, size int) { func reindexTreeByPath(box, p string, i, size int) {

View file

@ -95,3 +95,17 @@ func UpdateBlockContent(block *Block) {
tx.Commit() tx.Commit()
putBlockCache(block) putBlockCache(block)
} }
func DeleteTree(table, rootID string) {
tx, err := BeginTx()
if nil != err {
return
}
stmt := "DELETE FROM `" + table + "` WHERE root_id = ?"
if err = execStmtTx(tx, stmt, rootID); nil != err {
tx.Rollback()
return
}
tx.Commit()
}

View file

@ -25,6 +25,7 @@ import (
"sync" "sync"
"time" "time"
"github.com/88250/lute/ast"
"github.com/88250/lute/parse" "github.com/88250/lute/parse"
"github.com/emirpasic/gods/sets/hashset" "github.com/emirpasic/gods/sets/hashset"
"github.com/siyuan-note/eventbus" "github.com/siyuan-note/eventbus"
@ -142,6 +143,9 @@ func FlushQueue() {
return return
} }
for _, box := range boxes.Values() { for _, box := range boxes.Values() {
if !ast.IsNodeIDPattern(box.(string)) {
continue
}
updateBoxHash(tx, box.(string)) updateBoxHash(tx, box.(string))
} }
CommitTx(tx) CommitTx(tx)