]> Sergey Matveev's repositories - btrtrc.git/commitdiff
sqlite storage: Init schema in NewPool instead of NewProvider and add an option to...
authorMatt Joiner <anacrolix@gmail.com>
Tue, 3 Nov 2020 02:11:44 +0000 (13:11 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 3 Nov 2020 02:11:44 +0000 (13:11 +1100)
storage/sqlite/sqlite-storage.go

index 44af1fdf6537b5f981ddd086c8210b49a9bffbad..8c2a770e1f8323ee5c8b4dfd1787af466da28217 100644 (file)
@@ -154,6 +154,7 @@ type NewPoolOpts struct {
        NumConns int
        // Forces WAL, disables shared caching.
        ConcurrentBlobReads bool
+       DontInitSchema      bool
 }
 
 // There's some overlap here with NewPoolOpts, and I haven't decided what needs to be done. For now,
@@ -190,6 +191,14 @@ func NewPool(opts NewPoolOpts) (_ ConnPool, _ ProviderOpts, err error) {
        if err != nil {
                return
        }
+       if !opts.DontInitSchema {
+               conn := conns.Get(context.TODO())
+               defer conns.Put(conn)
+               err = initSchema(conn)
+               if err != nil {
+                       return
+               }
+       }
        return conns, ProviderOpts{
                NumConns:           opts.NumConns,
                ConcurrentBlobRead: opts.ConcurrentBlobReads,
@@ -226,12 +235,6 @@ func NewProvider(pool ConnPool, opts ProviderOpts) (_ *provider, err error) {
        if err != nil {
                return
        }
-       conn := pool.Get(context.TODO())
-       defer pool.Put(conn)
-       err = initSchema(conn)
-       if err != nil {
-               return
-       }
        writes := make(chan writeRequest)
        prov := &provider{pool: pool, writes: writes, opts: opts}
        runtime.SetFinalizer(prov, func(p *provider) {