Optimize document moving and renaming performance https://github.com/siyuan-note/siyuan/issues/10560

This commit is contained in:
Daniel 2024-03-19 16:14:10 +08:00
parent cf6ac5a807
commit 9bc6415c6a
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 9 additions and 9 deletions

View file

@ -1211,18 +1211,18 @@ func batchDeleteByPathPrefix(tx *sql.Tx, boxID, pathPrefix string) (err error) {
return
}
func batchUpdateHPath(tx *sql.Tx, boxID, rootID, newHPath string, context map[string]interface{}) (err error) {
stmt := "UPDATE blocks SET hpath = ? WHERE box = ? AND root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, boxID, rootID); nil != err {
func batchUpdateHPath(tx *sql.Tx, rootID, newHPath string, context map[string]interface{}) (err error) {
stmt := "UPDATE blocks SET hpath = ? WHERE root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, rootID); nil != err {
return
}
stmt = "UPDATE blocks_fts SET hpath = ? WHERE box = ? AND root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, boxID, rootID); nil != err {
stmt = "UPDATE blocks_fts SET hpath = ? WHERE root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, rootID); nil != err {
return
}
if !caseSensitive {
stmt = "UPDATE blocks_fts_case_insensitive SET hpath = ? WHERE box = ? AND root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, boxID, rootID); nil != err {
stmt = "UPDATE blocks_fts_case_insensitive SET hpath = ? WHERE root_id = ?"
if err = execStmtTx(tx, stmt, newHPath, rootID); nil != err {
return
}
}

View file

@ -174,13 +174,13 @@ func execOp(op *dbQueueOperation, tx *sql.Tx, context map[string]interface{}) (e
case "delete_ids":
err = batchDeleteByRootIDs(tx, op.removeTreeIDs, context)
case "rename":
err = batchUpdateHPath(tx, op.renameTree.Box, op.renameTree.ID, op.renameTree.HPath, context)
err = batchUpdateHPath(tx, op.renameTree.ID, op.renameTree.HPath, context)
if nil != err {
break
}
err = updateRootContent(tx, path.Base(op.renameTree.HPath), op.renameTree.Root.IALAttr("updated"), op.renameTree.ID)
case "rename_sub_tree":
err = batchUpdateHPath(tx, op.renameTree.Box, op.renameTree.ID, op.renameTree.HPath, context)
err = batchUpdateHPath(tx, op.renameTree.ID, op.renameTree.HPath, context)
case "delete_box":
err = deleteByBoxTx(tx, op.box)
case "delete_box_refs":