diff options
author | 2024-03-04 09:42:11 +0000 | |
---|---|---|
committer | 2024-03-04 09:42:11 +0000 | |
commit | adb4cdcf6c9eacd369eaaf5b21774b198d57c040 (patch) | |
tree | a4f9c8fe2ce147fa952bcb795690afb9bb2affcb /vendor/modernc.org/sqlite/sqlite.go | |
parent | [bugfix] update postgresqlstmt to correctly use postgres err hook (#2711) (diff) | |
download | gotosocial-adb4cdcf6c9eacd369eaaf5b21774b198d57c040.tar.xz |
[chore]: Bump modernc.org/sqlite from 1.28.0 to 1.29.2 (#2718)
Diffstat (limited to 'vendor/modernc.org/sqlite/sqlite.go')
-rw-r--r-- | vendor/modernc.org/sqlite/sqlite.go | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/vendor/modernc.org/sqlite/sqlite.go b/vendor/modernc.org/sqlite/sqlite.go index 9763713fa..86f5eddf6 100644 --- a/vendor/modernc.org/sqlite/sqlite.go +++ b/vendor/modernc.org/sqlite/sqlite.go @@ -492,10 +492,23 @@ func toNamedValues(vals []driver.Value) (r []driver.NamedValue) { func (s *stmt) exec(ctx context.Context, args []driver.NamedValue) (r driver.Result, err error) { var pstmt uintptr var done int32 - if ctx != nil && ctx.Done() != nil { - defer interruptOnDone(ctx, s.c, &done)() + if ctx != nil { + if ctxDone := ctx.Done(); ctxDone != nil { + select { + case <-ctxDone: + return nil, ctx.Err() + default: + } + defer interruptOnDone(ctx, s.c, &done)() + } } + defer func() { + if ctx != nil && atomic.LoadInt32(&done) != 0 { + r, err = nil, ctx.Err() + } + }() + for psql := s.psql; *(*byte)(unsafe.Pointer(psql)) != 0 && atomic.LoadInt32(&done) == 0; { if pstmt, err = s.c.prepareV2(&psql); err != nil { return nil, err @@ -532,7 +545,7 @@ func (s *stmt) exec(ctx context.Context, args []driver.NamedValue) (r driver.Res switch rc & 0xff { case sqlite3.SQLITE_DONE, sqlite3.SQLITE_ROW: - // nop + r, err = newResult(s.c) default: return s.c.errstr(int32(rc)) } @@ -548,7 +561,7 @@ func (s *stmt) exec(ctx context.Context, args []driver.NamedValue) (r driver.Res return nil, err } } - return newResult(s.c) + return r, err } // NumInput returns the number of placeholder parameters. @@ -576,14 +589,23 @@ func (s *stmt) Query(args []driver.Value) (driver.Rows, error) { //TODO StmtQuer func (s *stmt) query(ctx context.Context, args []driver.NamedValue) (r driver.Rows, err error) { var pstmt uintptr var done int32 - if ctx != nil && ctx.Done() != nil { - defer interruptOnDone(ctx, s.c, &done)() + if ctx != nil { + if ctxDone := ctx.Done(); ctxDone != nil { + select { + case <-ctxDone: + return nil, ctx.Err() + default: + } + defer interruptOnDone(ctx, s.c, &done)() + } } var allocs []uintptr defer func() { - if r == nil && err == nil { + if ctx != nil && atomic.LoadInt32(&done) != 0 { + r, err = nil, ctx.Err() + } else if r == nil && err == nil { r, err = newRows(s.c, pstmt, allocs, true) } }() |