summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3
diff options
context:
space:
mode:
authorLibravatar Daenney <daenney@users.noreply.github.com>2024-07-08 22:03:00 +0200
committerLibravatar GitHub <noreply@github.com>2024-07-08 22:03:00 +0200
commit1de41f64f2d75a7fb72579e576e23c9c66c6d8fe (patch)
treebe693d9d82c759c1c8586fadac78cc83d4d51d2e /vendor/github.com/ncruces/go-sqlite3
parent[chore/frontend] Put ActivityPub logo on index page (#3087) (diff)
downloadgotosocial-1de41f64f2d75a7fb72579e576e23c9c66c6d8fe.tar.xz
[chore] Bump ncruces/go-sqlite3 to 0.17.1 (#3085)
More linkanme fixes.
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/conn.go3
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/func.go5
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/error.go10
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/registry.go30
4 files changed, 46 insertions, 2 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/conn.go b/vendor/github.com/ncruces/go-sqlite3/conn.go
index f170ccf57..39870b140 100644
--- a/vendor/github.com/ncruces/go-sqlite3/conn.go
+++ b/vendor/github.com/ncruces/go-sqlite3/conn.go
@@ -72,6 +72,9 @@ func newConn(filename string, flags OpenFlag) (conn *Conn, err error) {
c.arena = c.newArena(1024)
c.ctx = context.WithValue(c.ctx, connKey{}, c)
c.handle, err = c.openDB(filename, flags)
+ if err == nil {
+ err = initExtensions(c)
+ }
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/ncruces/go-sqlite3/func.go b/vendor/github.com/ncruces/go-sqlite3/func.go
index 255584a43..ab486e79a 100644
--- a/vendor/github.com/ncruces/go-sqlite3/func.go
+++ b/vendor/github.com/ncruces/go-sqlite3/func.go
@@ -31,8 +31,9 @@ func (c *Conn) CollationNeeded(cb func(db *Conn, name string)) error {
//
// This can be used to load schemas that contain
// one or more unknown collating sequences.
-func (c *Conn) AnyCollationNeeded() {
- c.call("sqlite3_anycollseq_init", uint64(c.handle), 0, 0)
+func (c Conn) AnyCollationNeeded() error {
+ r := c.call("sqlite3_anycollseq_init", uint64(c.handle), 0, 0)
+ return c.error(r)
}
// CreateCollation defines a new collating sequence.
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
index 1f5555fd3..2aecac96e 100644
--- a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go
@@ -104,3 +104,13 @@ func ErrorCodeString(rc uint32) string {
}
return "sqlite3: unknown error"
}
+
+type ErrorJoiner []error
+
+func (j *ErrorJoiner) Join(errs ...error) {
+ for _, err := range errs {
+ if err != nil {
+ *j = append(*j, err)
+ }
+ }
+}
diff --git a/vendor/github.com/ncruces/go-sqlite3/registry.go b/vendor/github.com/ncruces/go-sqlite3/registry.go
new file mode 100644
index 000000000..043d69eeb
--- /dev/null
+++ b/vendor/github.com/ncruces/go-sqlite3/registry.go
@@ -0,0 +1,30 @@
+package sqlite3
+
+import "sync"
+
+var (
+ // +checklocks:extRegistryMtx
+ extRegistry []func(*Conn) error
+ extRegistryMtx sync.RWMutex
+)
+
+// AutoExtension causes the entryPoint function to be invoked
+// for each new database connection that is created.
+//
+// https://sqlite.org/c3ref/auto_extension.html
+func AutoExtension(entryPoint func(*Conn) error) {
+ extRegistryMtx.Lock()
+ defer extRegistryMtx.Unlock()
+ extRegistry = append(extRegistry, entryPoint)
+}
+
+func initExtensions(c *Conn) error {
+ extRegistryMtx.RLock()
+ defer extRegistryMtx.RUnlock()
+ for _, f := range extRegistry {
+ if err := f(c); err != nil {
+ return err
+ }
+ }
+ return nil
+}