Skip to content

Commit 407e13d

Browse files
committed
Handle some errors.
1 parent 9132f74 commit 407e13d

File tree

7 files changed

+34
-18
lines changed

7 files changed

+34
-18
lines changed

driver/driver.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,9 @@ func (s *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (drive
466466
old := s.Stmt.Conn().SetInterrupt(ctx)
467467
defer s.Stmt.Conn().SetInterrupt(old)
468468

469-
err = s.Stmt.Exec()
470-
s.Stmt.ClearBindings()
469+
err = errors.Join(
470+
s.Stmt.Exec(),
471+
s.Stmt.ClearBindings())
471472
if err != nil {
472473
return nil, err
473474
}
@@ -604,8 +605,9 @@ var (
604605
)
605606

606607
func (r *rows) Close() error {
607-
r.Stmt.ClearBindings()
608-
return r.Stmt.Reset()
608+
return errors.Join(
609+
r.Stmt.Reset(),
610+
r.Stmt.ClearBindings())
609611
}
610612

611613
func (r *rows) Columns() []string {

ext/closure/closure.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,9 @@ func (c *cursor) Filter(idxNum int, idxStr string, arg ...sqlite3.Value) error {
215215
if curr.depth >= maxDepth {
216216
continue
217217
}
218-
stmt.BindInt64(1, curr.id)
218+
if err := stmt.BindInt64(1, curr.id); err != nil {
219+
return err
220+
}
219221
for stmt.Step() {
220222
if stmt.ColumnType(0) == sqlite3.INTEGER {
221223
next := stmt.ColumnInt64(0)
@@ -225,7 +227,9 @@ func (c *cursor) Filter(idxNum int, idxStr string, arg ...sqlite3.Value) error {
225227
}
226228
}
227229
}
228-
stmt.Reset()
230+
if err := stmt.Reset(); err != nil {
231+
return err
232+
}
229233
}
230234
return nil
231235
}

ext/csv/csv.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,10 @@ func (c *cursor) Filter(idxNum int, idxStr string, arg ...sqlite3.Value) error {
214214
return err
215215
}
216216
if c.table.header {
217-
c.Next() // skip header
217+
err = c.Next() // skip header
218+
if err != nil {
219+
return err
220+
}
218221
}
219222
c.rowID = 0
220223
return c.Next()

ext/pivot/pivot.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,11 @@ func declare(db *sqlite3.Conn, _, _, _ string, arg ...string) (res *table, err e
9999
}
100100

101101
func (t *table) Close() error {
102+
var errs []error
102103
for _, c := range t.cols {
103-
c.Close()
104+
errs = append(errs, c.Close())
104105
}
105-
return nil
106+
return errors.Join(errs...)
106107
}
107108

108109
func (t *table) BestIndex(idx *sqlite3.IndexInfo) error {

ext/statement/stmt.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package statement
88

99
import (
1010
"encoding/json"
11+
"errors"
1112
"strconv"
1213
"strings"
1314
"unsafe"
@@ -150,17 +151,20 @@ type cursor struct {
150151
func (c *cursor) Close() error {
151152
if c.stmt == c.table.stmt {
152153
c.table.inuse = false
153-
c.stmt.ClearBindings()
154-
return c.stmt.Reset()
154+
return errors.Join(
155+
c.stmt.Reset(),
156+
c.stmt.ClearBindings())
155157
}
156158
return c.stmt.Close()
157159
}
158160

159161
func (c *cursor) Filter(idxNum int, idxStr string, arg ...sqlite3.Value) error {
160162
c.arg = arg
161163
c.rowID = 0
162-
c.stmt.ClearBindings()
163-
if err := c.stmt.Reset(); err != nil {
164+
err := errors.Join(
165+
c.stmt.Reset(),
166+
c.stmt.ClearBindings())
167+
if err != nil {
164168
return err
165169
}
166170

func.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,10 @@ func finalCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp uint32)
172172
db := ctx.Value(connKey{}).(*Conn)
173173
fn, handle := callbackAggregate(db, pAgg, pApp)
174174
fn.Value(Context{db, pCtx})
175-
util.DelHandle(ctx, handle)
175+
if err := util.DelHandle(ctx, handle); err != nil {
176+
Context{db, pCtx}.ResultError(err)
177+
return // notest
178+
}
176179
}
177180

178181
func valueCallback(ctx context.Context, mod api.Module, pCtx, pAgg uint32) {

stmt.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,15 +316,14 @@ func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error {
316316
}
317317
switch v := format.Encode(value).(type) {
318318
case string:
319-
s.BindText(param, v)
319+
return s.BindText(param, v)
320320
case int64:
321-
s.BindInt64(param, v)
321+
return s.BindInt64(param, v)
322322
case float64:
323-
s.BindFloat(param, v)
323+
return s.BindFloat(param, v)
324324
default:
325325
panic(util.AssertErr())
326326
}
327-
return nil
328327
}
329328

330329
func (s *Stmt) bindRFC3339Nano(param int, value time.Time) error {

0 commit comments

Comments
 (0)