]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Expose SetSynchronous as an option
authorMatt Joiner <anacrolix@gmail.com>
Tue, 11 May 2021 06:16:29 +0000 (16:16 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 14 May 2021 05:41:56 +0000 (15:41 +1000)
storage/sqlite/sqlite-storage.go

index ed9aefb3077250d3e3594c0e05a24f1396ee50dc..d1c504e9c488015d4eafdcc662b28a83edb028a3 100644 (file)
@@ -26,6 +26,7 @@ import (
 type conn = *sqlite.Conn
 
 type InitConnOpts struct {
+       SetSynchronous string
        SetJournalMode string
        MmapSizeOk     bool  // If false, a package-specific default will be used.
        MmapSize       int64 // If MmapSizeOk is set, use sqlite default if < 0, otherwise this value.
@@ -40,16 +41,18 @@ func (me InitConnOpts) JournalMode() string {
 
 var UnexpectedJournalMode = errors.New("unexpected journal mode")
 
-func initConn(conn conn, opts InitConnOpts) error {
+func initConn(conn conn, opts InitConnOpts) (err error) {
        // Recursive triggers are required because we need to trim the blob_meta size after trimming to
        // capacity. Hopefully we don't hit the recursion limit, and if we do, there's an error thrown.
-       err := sqlitex.ExecTransient(conn, "pragma recursive_triggers=on", nil)
+       err = sqlitex.ExecTransient(conn, "pragma recursive_triggers=on", nil)
        if err != nil {
                return err
        }
-       err = sqlitex.ExecTransient(conn, `pragma synchronous=off`, nil)
-       if err != nil {
-               return err
+       if opts.SetSynchronous != "" {
+               err = sqlitex.ExecTransient(conn, `pragma synchronous=`+opts.SetSynchronous, nil)
+               if err != nil {
+                       return err
+               }
        }
        if opts.SetJournalMode != "" {
                err = sqlitex.ExecTransient(conn, fmt.Sprintf(`pragma journal_mode=%s`, opts.SetJournalMode), func(stmt *sqlite.Stmt) error {