From b5c24a0ff9b766ab8950ba1226c95110cd90c630 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Thu, 17 Oct 2024 18:19:15 +0100 Subject: [PATCH] Upgrade ai3/go-common --- go.mod | 2 +- go.sum | 4 +-- .../ai3/go-common/sqlutil/db.go | 27 ++++++++++++++----- vendor/modules.txt | 2 +- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 28bdd44..c0a1eea 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.21.0 toolchain go1.22.1 require ( - git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088 + git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4 github.com/google/go-cmp v0.6.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 77d4d42..dabe792 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088 h1:VD6KF7j6y0yDETNFl5x0lGnQetpSBa3K4rYx9fiJqAQ= -git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088/go.mod h1:JpPfOTGgbvAElF0wdmv81y6l3CRsdS4z3IkNOETUDVo= +git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4 h1:xB5K4GL4VlguEOknhgz+AN3k8nmx19y91RRUvByaLnQ= +git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4/go.mod h1:JpPfOTGgbvAElF0wdmv81y6l3CRsdS4z3IkNOETUDVo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= diff --git a/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go b/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go index 5316834..3b8bd3d 100644 --- a/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go +++ b/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go @@ -5,6 +5,7 @@ import ( "database/sql" "fmt" "log" + "net/url" "strings" _ "github.com/mattn/go-sqlite3" @@ -13,11 +14,24 @@ import ( // DebugMigrations can be set to true to dump statements to stderr. var DebugMigrations bool -const defaultOptions = "?cache=shared&_busy_timeout=10000&_journal=WAL&_sync=OFF" +// See https://github.com/mattn/go-sqlite3/issues/209 for details on +// why these default parameters were chosen. WAL mode is mandatory for +// external litestream support. +func defaultOptions() url.Values { + v := make(url.Values) + v.Set("cache", "shared") + v.Set("_journal", "WAL") + v.Set("_sync", "OFF") + v.Set("_busy_timeout", "999999") + v.Set("_fk", "true") + v.Set("_cache_size", "268435456") + v.Set("_auto_vacuum", "incremental") + return v +} type sqlOptions struct { migrations []func(*sql.Tx) error - sqlopts string + sqlopts url.Values } type Option func(*sqlOptions) @@ -28,16 +42,16 @@ func WithMigrations(migrations []func(*sql.Tx) error) Option { } } -func WithSqliteOptions(sqlopts string) Option { +func WithSqliteOption(opt, value string) Option { return func(opts *sqlOptions) { - opts.sqlopts = sqlopts + opts.sqlopts.Set(opt, value) } } // OpenDB opens a SQLite database and runs the database migrations. func OpenDB(dburi string, options ...Option) (*sql.DB, error) { var opts sqlOptions - opts.sqlopts = defaultOptions + opts.sqlopts = defaultOptions() for _, o := range options { o(&opts) } @@ -45,7 +59,7 @@ func OpenDB(dburi string, options ...Option) (*sql.DB, error) { // Add sqlite3-specific parameters if none are already // specified in the connection URI. if !strings.Contains(dburi, "?") { - dburi += opts.sqlopts + dburi = fmt.Sprintf("%s?%s", dburi, opts.sqlopts.Encode()) } db, err := sql.Open("sqlite3", dburi) @@ -56,6 +70,7 @@ func OpenDB(dburi string, options ...Option) (*sql.DB, error) { // Limit the pool to a single connection. // https://github.com/mattn/go-sqlite3/issues/209 db.SetMaxOpenConns(1) + db.SetMaxIdleConns(1) if err = migrate(db, opts.migrations); err != nil { db.Close() // nolint diff --git a/vendor/modules.txt b/vendor/modules.txt index 3fc51d8..619bc14 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088 +# git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4 ## explicit; go 1.21.0 git.autistici.org/ai3/go-common git.autistici.org/ai3/go-common/clientutil -- GitLab