diff --git a/go.mod b/go.mod index e2d5ed41b..82ee58663 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/gdamore/tcell/v2 v2.13.10 github.com/gopacket/gopacket v1.7.1 github.com/jpillora/sizestr v1.0.0 - github.com/mattn/go-sqlite3 v1.14.50 + github.com/mattn/go-sqlite3 v1.14.52 github.com/navidys/tvxwidgets v0.14.0 github.com/netobserv/flowlogs-pipeline v1.12.0-community github.com/netobserv/netobserv-ebpf-agent v1.12.0-community diff --git a/go.sum b/go.sum index 0f723abd9..7d4a80ee6 100644 --- a/go.sum +++ b/go.sum @@ -136,8 +136,8 @@ github.com/mariomac/guara v0.0.0-20250408105519-1e4dbdfb7136 h1:SOKpjp57SUaZeXPA github.com/mariomac/guara v0.0.0-20250408105519-1e4dbdfb7136/go.mod h1:Yolpa1FCtmN9py66WkFE+6xI2ZlRE89zkLeaowPc/g0= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/mattn/go-sqlite3 v1.14.50 h1:dmdFvo1XG4MPzA4IkAmE9upVz/Nj31uRoM5+jC8hYbY= -github.com/mattn/go-sqlite3 v1.14.50/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9sB6w= +github.com/mattn/go-sqlite3 v1.14.52 h1:wVbm2Qnf4OXkqhBTSPuCRZDRnxfbVrrmiCEroVdog8U= +github.com/mattn/go-sqlite3 v1.14.52/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9sB6w= github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/moby/spdystream v0.5.1 h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y= diff --git a/vendor/github.com/mattn/go-sqlite3/callback.go b/vendor/github.com/mattn/go-sqlite3/callback.go index b7df2be7f..7dcf08d1f 100644 --- a/vendor/github.com/mattn/go-sqlite3/callback.go +++ b/vendor/github.com/mattn/go-sqlite3/callback.go @@ -29,7 +29,6 @@ import ( "math" "reflect" "sync" - "sync/atomic" "unsafe" ) @@ -104,27 +103,28 @@ type handleVal struct { val any } -var handleLock sync.Mutex -var handleVals atomic.Value // stores map[unsafe.Pointer]handleVal +// handleVals maps unsafe.Pointer handles to handleVal. A sync.Map keeps +// lookups lock-free on the hot callback path while insertion and removal +// stay O(1); the previous copy-on-write map made every registration copy +// the whole table, so opening N connections (each registering several +// functions) was quadratic in time and allocation. +var handleVals sync.Map func newHandle(db *SQLiteConn, v any) unsafe.Pointer { - val := handleVal{db: db, val: v} var p unsafe.Pointer = C.malloc(C.size_t(1)) if p == nil { panic("can't allocate 'cgo-pointer hack index pointer': ptr == nil") } - - handleLock.Lock() - defer handleLock.Unlock() - - next := cloneHandleVals(len(loadHandleVals()) + 1) - next[p] = val - handleVals.Store(next) + handleVals.Store(p, handleVal{db: db, val: v}) return p } func lookupHandleVal(handle unsafe.Pointer) handleVal { - return loadHandleVals()[handle] + v, ok := handleVals.Load(handle) + if !ok { + return handleVal{} + } + return v.(handleVal) } func lookupHandle(handle unsafe.Pointer) any { @@ -134,55 +134,20 @@ func lookupHandle(handle unsafe.Pointer) any { // deleteHandle releases a single handle created by newHandle. It is a no-op // if the handle is unknown (e.g. already released). func deleteHandle(handle unsafe.Pointer) { - handleLock.Lock() - defer handleLock.Unlock() - - current := loadHandleVals() - if _, ok := current[handle]; !ok { - return + if _, ok := handleVals.LoadAndDelete(handle); ok { + C.free(handle) } - next := make(map[unsafe.Pointer]handleVal, len(current)-1) - for h, v := range current { - if h == handle { - continue - } - next[h] = v - } - handleVals.Store(next) - C.free(handle) } func deleteHandles(db *SQLiteConn) { - handleLock.Lock() - defer handleLock.Unlock() - - current := loadHandleVals() - if len(current) == 0 { - return - } - - next := make(map[unsafe.Pointer]handleVal, len(current)) - for handle, val := range current { - if val.db == db { - C.free(handle) - continue + handleVals.Range(func(handle, val any) bool { + if val.(handleVal).db == db { + if _, ok := handleVals.LoadAndDelete(handle); ok { + C.free(handle.(unsafe.Pointer)) + } } - next[handle] = val - } - handleVals.Store(next) -} - -func loadHandleVals() map[unsafe.Pointer]handleVal { - m, _ := handleVals.Load().(map[unsafe.Pointer]handleVal) - return m -} - -func cloneHandleVals(size int) map[unsafe.Pointer]handleVal { - next := make(map[unsafe.Pointer]handleVal, size) - for handle, val := range loadHandleVals() { - next[handle] = val - } - return next + return true + }) } // This is only here so that tests can refer to it. diff --git a/vendor/github.com/mattn/go-sqlite3/convert.go b/vendor/github.com/mattn/go-sqlite3/convert.go index f7a9dcd72..a77fc4c0f 100644 --- a/vendor/github.com/mattn/go-sqlite3/convert.go +++ b/vendor/github.com/mattn/go-sqlite3/convert.go @@ -159,7 +159,7 @@ func convertAssign(dest, src any) error { } dpv := reflect.ValueOf(dest) - if dpv.Kind() != reflect.Ptr { + if dpv.Kind() != reflect.Pointer { return errors.New("destination not a pointer") } if dpv.IsNil() { @@ -192,7 +192,7 @@ func convertAssign(dest, src any) error { // This also allows scanning into user defined types such as "type Int int64". // For symmetry, also check for string destination types. switch dv.Kind() { - case reflect.Ptr: + case reflect.Pointer: if src == nil { dv.Set(reflect.Zero(dv.Type())) return nil diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3.go b/vendor/github.com/mattn/go-sqlite3/sqlite3.go index c30bb8f1e..c519de769 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3.go @@ -220,6 +220,25 @@ _sqlite3_prepare_v2_internal(sqlite3 *db, const char *zSql, int nBytes, sqlite3_ } #endif +// Steps a statement once and reports the post-step column count and the +// cumulative re-prepare count, in a single CGO crossing. Used for the +// eager first step of cached statements: only after the first step is an +// expired statement guaranteed to have been re-prepared following a +// schema change, so only then do the column count and metadata describe +// the current schema. +static int +_sqlite3_step_columns(sqlite3_stmt* stmt, int* ncol, int* repreps) +{ + int rv = _sqlite3_step_internal(stmt); + *ncol = sqlite3_column_count(stmt); +#ifdef SQLITE_STMTSTATUS_REPREPARE + *repreps = sqlite3_stmt_status(stmt, SQLITE_STMTSTATUS_REPREPARE, 0); +#else + *repreps = -1; +#endif + return rv; +} + void _sqlite3_result_text(sqlite3_context* ctx, const char* s, int n) { sqlite3_result_text(ctx, s, n, &free); } @@ -445,8 +464,11 @@ type SQLiteDriver struct { // SQLiteConn implements driver.Conn. type SQLiteConn struct { - mu sync.Mutex - db *C.sqlite3 + mu sync.Mutex + db *C.sqlite3 + // activeRows identifies the cancellable Rows currently calling sqlite3_step. + // It is guarded by mu so a stale cancellation cannot interrupt later work. + activeRows *SQLiteRows loc *time.Location txlock string funcs []*functionInfo @@ -477,6 +499,10 @@ type SQLiteStmt struct { namedParams map[string][3]int cacheKey string metadata *sqliteStmtMetadata + // repreps is the statement's cumulative re-prepare count observed + // at the last eager first step; a change means SQLite re-prepared + // the statement after a schema change and metadata must be rebuilt. + repreps C.int } type sqliteStmtMetadata struct { @@ -492,14 +518,18 @@ type SQLiteResult struct { // SQLiteRows implements driver.Rows. type SQLiteRows struct { - s *SQLiteStmt - nc int32 // Number of columns - cls bool // True if we need to close the parent statement in Close - cols []string - decltype []string - colvals *C.sqlite3_go_col - ctx context.Context // no better alternative to pass context into Next() method - closemu sync.Mutex + s *SQLiteStmt + nc int32 // Number of columns + cls bool // True if we need to close the parent statement in Close + cols []string + decltype []string + colvals *C.sqlite3_go_col + ctx context.Context // no better alternative to pass context into Next() method + stopCancellation func() bool + // pendingStep buffers the result of the eager first step taken for + // cached statements in query(); -1 when no step is buffered. + pendingStep C.int + closemu sync.Mutex } type functionInfo struct { @@ -968,7 +998,7 @@ func (c *SQLiteConn) exec(ctx context.Context, query string, args []driver.Named na := s.NumInput() if len(args)-start < na { s.Close() - return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args)) + return nil, fmt.Errorf("not enough args to execute query: want %d got %d", na, len(args)-start) } stmtArgs := stmtArgs(args, start, na) res, err = s.(*SQLiteStmt).exec(ctx, stmtArgs) @@ -1609,6 +1639,18 @@ func (d *SQLiteDriver) Open(dsn string) (driver.Conn, error) { return nil, err } + if conn.stmtCacheEnabled && int(C.sqlite3_libversion_number()) < 3020000 { + // Schema-change detection for cached statements relies on + // SQLITE_STMTSTATUS_REPREPARE (3.20.0); with an older runtime + // library run without the cache rather than risk serving + // statements whose metadata a schema change has expired. The + // compile-time check in _sqlite3_step_columns is not enough: + // with USE_LIBSQLITE3 the header and the runtime library can + // differ. + conn.stmtCache = nil + conn.stmtCacheEnabled = false + } + exec := func(s string) error { cs := C.CString(s) rv := C.sqlite3_exec(db, cs, nil, nil, nil) @@ -2354,13 +2396,24 @@ func (s *SQLiteStmt) query(ctx context.Context, args []driver.NamedValue) (drive } rows := &SQLiteRows{ - s: s, - nc: int32(C.sqlite3_column_count(s.s)), - cls: s.cls, - cols: nil, - decltype: nil, - colvals: nil, - ctx: ctx, + s: s, + cls: s.cls, + ctx: ctx, + pendingStep: -1, + } + if s.cacheKey != "" { + // A schema change expires cached statements and SQLite only + // re-prepares them on their next step, so the column count and + // metadata read before stepping could describe the old schema. + // Take the query's first step eagerly (it was going to run at + // the first Next anyway) and read them afterwards. + rv, err := rows.eagerFirstStepLocked() + if err != nil { + return nil, err + } + rows.pendingStep = rv + } else { + rows.nc = int32(C.sqlite3_column_count(s.s)) } if rows.nc > 0 { rows.colvals = (*C.sqlite3_go_col)(C.malloc(C.size_t(rows.nc) * C.size_t(unsafe.Sizeof(C.sqlite3_go_col{})))) @@ -2466,6 +2519,7 @@ func (s *SQLiteStmt) Readonly() bool { func (rc *SQLiteRows) Close() error { rc.closemu.Lock() defer rc.closemu.Unlock() + rc.stopWatchingCancellation() s := rc.s if s == nil { if rc.colvals != nil { @@ -2497,6 +2551,40 @@ func (rc *SQLiteRows) Close() error { return nil } +func (c *SQLiteConn) interruptActiveRows(rows *SQLiteRows) { + c.mu.Lock() + defer c.mu.Unlock() + if c.activeRows == rows && c.db != nil { + C.sqlite3_interrupt(c.db) + } +} + +func (rc *SQLiteRows) stopWatchingCancellation() { + if rc.stopCancellation == nil { + return + } + // A false return is harmless: a callback already in progress can interrupt + // only while rc owns conn.activeRows, which is guarded by conn.mu. + rc.stopCancellation() + rc.stopCancellation = nil +} + +func (rc *SQLiteRows) startStepping() { + conn := rc.s.c + conn.mu.Lock() + conn.activeRows = rc + conn.mu.Unlock() +} + +func (rc *SQLiteRows) finishStepping() { + conn := rc.s.c + conn.mu.Lock() + if conn.activeRows == rc { + conn.activeRows = nil + } + conn.mu.Unlock() +} + func (s *SQLiteStmt) cacheMetadata() bool { return !s.cls || s.cacheKey != "" } @@ -2583,33 +2671,88 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error { return io.EOF } - if rc.ctx.Done() == nil { - return rc.nextSyncLocked(dest) + if rv := rc.pendingStep; rv >= 0 { + rc.pendingStep = -1 + return rc.readStepResultLocked(dest, rv) } - sema := make(chan struct{}) - var err error - go func() { - err = rc.nextSyncLocked(dest) - close(sema) - }() - select { - case <-sema: - return err - case <-rc.ctx.Done(): - select { - case <-sema: // no need to interrupt - default: - // this is still racy and can be no-op if executed between sqlite3_* calls in nextSyncLocked. - C.sqlite3_interrupt(rc.s.c.db) - <-sema // ensure goroutine completed + + if rc.stopCancellation == nil { + if rc.ctx.Done() == nil { + rv := C._sqlite3_step_internal(rc.s.s) + return rc.readStepResultLocked(dest, rv) } - return rc.ctx.Err() + conn := rc.s.c + rc.stopCancellation = context.AfterFunc(rc.ctx, func() { + conn.interruptActiveRows(rc) + }) + } + if err := rc.ctx.Err(); err != nil { + return err + } + rv := rc.stepCancellableLocked() + err := rc.readStepResultLocked(dest, rv) + if ctxErr := rc.ctx.Err(); ctxErr != nil { + return ctxErr } + return err +} + +// eagerFirstStepLocked performs the first step of a cached statement +// under the same cancellation rules as Next, records the post-step +// column count, and drops the statement's cached metadata when SQLite +// re-prepared it after a schema change. Note that this runs the first +// step at query time, so a data-modifying statement issued through +// Query executes even if Next is never called. +func (rc *SQLiteRows) eagerFirstStepLocked() (C.int, error) { + s := rc.s + s.mu.Lock() + defer s.mu.Unlock() + + if rc.ctx.Done() != nil && rc.stopCancellation == nil { + conn := s.c + rc.stopCancellation = context.AfterFunc(rc.ctx, func() { + conn.interruptActiveRows(rc) + }) + } + if err := rc.ctx.Err(); err != nil { + rc.stopWatchingCancellation() + return 0, err + } + var ncol, repreps C.int + var rv C.int + if rc.ctx.Done() == nil { + rv = C._sqlite3_step_columns(s.s, &ncol, &repreps) + } else { + rc.startStepping() + rv = C._sqlite3_step_columns(s.s, &ncol, &repreps) + rc.finishStepping() + } + if err := rc.ctx.Err(); err != nil { + rc.stopWatchingCancellation() + C._sqlite3_reset_clear(s.s) + return 0, err + } + if rv != C.SQLITE_ROW && rv != C.SQLITE_DONE { + rc.stopWatchingCancellation() + err := s.c.lastError() + C._sqlite3_reset_clear(s.s) + return 0, err + } + rc.nc = int32(ncol) + if repreps != s.repreps { + s.repreps = repreps + s.metadata = nil + } + return rv, nil +} + +func (rc *SQLiteRows) stepCancellableLocked() C.int { + rc.startStepping() + defer rc.finishStepping() + return C._sqlite3_step_internal(rc.s.s) } -// nextSyncLocked moves cursor to next; must be called with locked mutex. -func (rc *SQLiteRows) nextSyncLocked(dest []driver.Value) error { - rv := C._sqlite3_step_internal(rc.s.s) +func (rc *SQLiteRows) readStepResultLocked(dest []driver.Value, rv C.int) error { if rv == C.SQLITE_DONE { return io.EOF } diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go index bd9a3bc09..5a8cd36c7 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go @@ -11,43 +11,41 @@ import ( "crypto/sha512" ) -// This file provides several different implementations for the -// default embedded sqlite_crypt function. -// This function is uses a caesar-cypher by default -// and is used within the UserAuthentication module to encode -// the password. +// This file provides several different implementations for the default +// embedded sqlite_crypt function. This function uses a caesar-cypher by +// default and is used within the UserAuthentication module to encode the +// password. // // The provided functions can be used as an overload to the sqlite_crypt // function through the use of the RegisterFunc on the connection. // -// Because the functions can serv a purpose to an end-user -// without using the UserAuthentication module -// the functions are default compiled in. +// Because the functions can serve a purpose to an end-user without using the +// UserAuthentication module the functions are default compiled in. // // From SQLITE3 - user-auth.txt // The sqlite_user.pw field is encoded by a built-in SQL function -// "sqlite_crypt(X,Y)". The two arguments are both BLOBs. The first argument -// is the plaintext password supplied to the sqlite3_user_authenticate() -// interface. The second argument is the sqlite_user.pw value and is supplied +// "sqlite_crypt(X,Y)". The two arguments are both BLOBs. The first argument is +// the plain-text password supplied to the sqlite3_user_authenticate() +// interface. The second argument is the sqlite_user.pw value and is supplied // so that the function can extract the "salt" used by the password encoder. -// The result of sqlite_crypt(X,Y) is another blob which is the value that -// ends up being stored in sqlite_user.pw. To verify credentials X supplied -// by the sqlite3_user_authenticate() routine, SQLite runs: +// The result of sqlite_crypt(X,Y) is another blob which is the value that ends +// up being stored in sqlite_user.pw. To verify credentials X supplied by the +// sqlite3_user_authenticate() routine, SQLite runs: // // sqlite_user.pw == sqlite_crypt(X, sqlite_user.pw) // // To compute an appropriate sqlite_user.pw value from a new or modified -// password X, sqlite_crypt(X,NULL) is run. A new random salt is selected -// when the second argument is NULL. +// password X, sqlite_crypt(X,NULL) is run. A new random salt is selected when +// the second argument is NULL. // -// The built-in version of of sqlite_crypt() uses a simple Caesar-cypher -// which prevents passwords from being revealed by searching the raw database -// for ASCII text, but is otherwise trivally broken. For better password -// security, the database should be encrypted using the SQLite Encryption -// Extension or similar technology. Or, the application can use the -// sqlite3_create_function() interface to provide an alternative -// implementation of sqlite_crypt() that computes a stronger password hash, -// perhaps using a cryptographic hash function like SHA1. +// The built-in version of of sqlite_crypt() uses a simple Caesar-cypher which +// prevents passwords from being revealed by searching the raw database for +// ASCII text, but is otherwise trivally broken. For better password security, +// the database should be encrypted using the SQLite Encryption Extension or +// similar technology. Or, the application can use the +// sqlite3_create_function() interface to provide an alternative implementation +// of sqlite_crypt() that computes a stronger password hash, perhaps using a +// cryptographic hash function like SHA1. // CryptEncoderSHA1 encodes a password with SHA1 func CryptEncoderSHA1(pass []byte, hash any) []byte { diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go index 6ef230862..45714dacc 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build libsqlite3 -// +build libsqlite3 package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go index d4f8ce651..3503ce1cf 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_omit_load_extension -// +build sqlite_omit_load_extension package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go index 51240cbf6..91b41b461 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_allow_uri_authority -// +build sqlite_allow_uri_authority package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go index 565dbc298..f28ebe8b0 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build !windows && sqlite_app_armor -// +build !windows,sqlite_app_armor package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go index 9aff0b1bf..2ca311242 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go @@ -1,5 +1,4 @@ //go:build sqlite_column_metadata -// +build sqlite_column_metadata package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_dbstat.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_dbstat.go index d03384614..c8f10eb21 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_dbstat.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_dbstat.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_dbstat -// +build sqlite_dbstat package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go index 82c944e1b..2fbae03ef 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_foreign_keys -// +build sqlite_foreign_keys package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go index 2645f284b..6c041bcad 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_fts5 || fts5 -// +build sqlite_fts5 fts5 package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go index 2d47827be..1c148c2fb 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_icu || icu -// +build sqlite_icu icu package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go index cd2e54011..e0e3a1930 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_introspect -// +build sqlite_introspect package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go index bd62d9a2a..dc1ab98d2 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_math_functions -// +build sqlite_math_functions package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go index 9a30566b3..62a4bd79c 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_os_trace -// +build sqlite_os_trace package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_percentile.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_percentile.go index 3461d9a55..ff75e728d 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_percentile.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_percentile.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_percentile -// +build sqlite_percentile package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go index ed725eeb9..629abcf0f 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build cgo -// +build cgo package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go index 37e048ffd..90c3c6ee2 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_preupdate_hook -// +build sqlite_preupdate_hook package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go index f60da6c16..1289dc9d4 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build !sqlite_preupdate_hook && cgo -// +build !sqlite_preupdate_hook,cgo package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go index 6bb05b843..600e84b55 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_secure_delete -// +build sqlite_secure_delete package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go index 982020aeb..eda669b98 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_secure_delete_fast -// +build sqlite_secure_delete_fast package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go index d00ead0b6..6d6ce017b 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go @@ -1,5 +1,4 @@ //go:build libsqlite3 && !sqlite_serialize -// +build libsqlite3,!sqlite_serialize package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go index 799fbb0fc..12b211334 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_stat4 -// +build sqlite_stat4 package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go index dddb655da..7cb8d6ead 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build cgo && sqlite_unlock_notify -// +build cgo,sqlite_unlock_notify package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go index 5a4927665..c1a14106d 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_userauth -// +build sqlite_userauth package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go index df13c9d2d..234146490 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_vacuum_full -// +build sqlite_vacuum_full package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go index a2e48814b..6cf38d68c 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_vacuum_incr -// +build sqlite_vacuum_incr package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go index 90a025648..cee38ec64 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_vtable || vtable -// +build sqlite_vtable vtable package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go index fb4d32517..26680e0df 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build solaris -// +build solaris package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_sql.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_sql.go index 47c522f48..6148a03d4 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_sql.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_sql.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build cgo -// +build cgo package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go index 6c47cce19..d7979bd20 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build sqlite_trace || trace -// +build sqlite_trace trace package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go index 6527f6fd9..29a99e5dc 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build cgo -// +build cgo package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go b/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go index f863bcd36..6a2bc0986 100644 --- a/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go +++ b/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build windows -// +build windows package sqlite3 diff --git a/vendor/github.com/mattn/go-sqlite3/static_mock.go b/vendor/github.com/mattn/go-sqlite3/static_mock.go index d2c5a2760..17248686a 100644 --- a/vendor/github.com/mattn/go-sqlite3/static_mock.go +++ b/vendor/github.com/mattn/go-sqlite3/static_mock.go @@ -4,7 +4,6 @@ // license that can be found in the LICENSE file. //go:build !cgo -// +build !cgo package sqlite3 diff --git a/vendor/modules.txt b/vendor/modules.txt index 162f39a10..bde8f2368 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -167,7 +167,7 @@ github.com/json-iterator/go # github.com/lucasb-eyer/go-colorful v1.3.0 ## explicit; go 1.12 github.com/lucasb-eyer/go-colorful -# github.com/mattn/go-sqlite3 v1.14.50 +# github.com/mattn/go-sqlite3 v1.14.52 ## explicit; go 1.21 github.com/mattn/go-sqlite3 # github.com/moby/spdystream v0.5.1