From f69798f91e9880e08b9ca047dfd52a3d2940bc96 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 23 Aug 2022 10:13:51 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=95=B0=E6=8D=AE=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=92=8C=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=86=E9=A1=B5=E5=92=8C=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=20https://github.com/siyuan-note/siyuan/issues/4901?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/main.go | 1 + kernel/mobile/kernel.go | 1 + kernel/sql/database.go | 49 +++++++++++++++++++++++------------------ 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/kernel/main.go b/kernel/main.go index 3f39a34ae..aea697819 100644 --- a/kernel/main.go +++ b/kernel/main.go @@ -34,6 +34,7 @@ func main() { go server.Serve(false) model.InitAppearance() sql.InitDatabase(false) + sql.InitHistoryDatabase(false) sql.SetCaseSensitive(model.Conf.Search.CaseSensitive) model.SyncData(true, false, false) diff --git a/kernel/mobile/kernel.go b/kernel/mobile/kernel.go index edfc00dfb..24866015d 100644 --- a/kernel/mobile/kernel.go +++ b/kernel/mobile/kernel.go @@ -48,6 +48,7 @@ func StartKernel(container, appDir, workspaceDir, nativeLibDir, privateDataDir, go func() { model.InitAppearance() sql.InitDatabase(false) + sql.InitHistoryDatabase(false) sql.SetCaseSensitive(model.Conf.Search.CaseSensitive) model.SyncData(true, false, false) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index 2d8d6e18c..f116bf239 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -144,6 +144,34 @@ func initDBTables() { if nil != err { logging.LogFatalf("create table [refs] failed: %s", err) } +} + +func InitHistoryDatabase(forceRebuild bool) { + if !forceRebuild && gulu.File.IsExist(util.HistoryDBPath) { + return + } + + if nil != historyDB { + historyDB.Close() + } + dsn := util.HistoryDBPath + "?_journal_mode=OFF" + + "&_synchronous=OFF" + + "&_secure_delete=OFF" + + "&_cache_size=-20480" + + "&_page_size=8192" + + "&_busy_timeout=7000" + + "&_ignore_check_constraints=ON" + + "&_temp_store=MEMORY" + + "&_case_sensitive_like=OFF" + + "&_locking_mode=EXCLUSIVE" + var err error + historyDB, err = sql.Open("sqlite3_extended", dsn) + if nil != err { + logging.LogFatalf("create database failed: %s", err) + } + historyDB.SetMaxIdleConns(1) + historyDB.SetMaxOpenConns(1) + historyDB.SetConnMaxLifetime(365 * 24 * time.Hour) historyDB.Exec("DROP TABLE history_fts_case_insensitive") _, err = db.Exec("CREATE VIRTUAL TABLE history_fts_case_insensitive USING fts5(type UNINDEXED, op UNINDEXED, title, content, created UNINDEXED, path UNINDEXED, tokenize=\"siyuan case_insensitive\")") @@ -201,27 +229,6 @@ func initDBConnection() { db.SetMaxIdleConns(20) db.SetMaxOpenConns(20) db.SetConnMaxLifetime(365 * 24 * time.Hour) - - if nil != historyDB { - historyDB.Close() - } - dsn = util.HistoryDBPath + "?_journal_mode=OFF" + - "&_synchronous=OFF" + - "&_secure_delete=OFF" + - "&_cache_size=-20480" + - "&_page_size=8192" + - "&_busy_timeout=7000" + - "&_ignore_check_constraints=ON" + - "&_temp_store=MEMORY" + - "&_case_sensitive_like=OFF" + - "&_locking_mode=EXCLUSIVE" - historyDB, err = sql.Open("sqlite3_extended", dsn) - if nil != err { - logging.LogFatalf("create database failed: %s", err) - } - historyDB.SetMaxIdleConns(1) - historyDB.SetMaxOpenConns(1) - historyDB.SetConnMaxLifetime(365 * 24 * time.Hour) } func SetCaseSensitive(b bool) {