diff options
Diffstat (limited to 'vendor/github.com/ncruces')
| -rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/conn.go | 3 | ||||
| -rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/func.go | 5 | ||||
| -rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/internal/util/error.go | 10 | ||||
| -rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/registry.go | 30 | 
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 +} | 
