@@ -301,7 +301,7 @@ func (c *conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, e
301
301
s .Close ()
302
302
return nil , util .TailErr
303
303
}
304
- return & stmt {Stmt : s , tmRead : c .tmRead , tmWrite : c .tmWrite }, nil
304
+ return & stmt {Stmt : s , tmRead : c .tmRead , tmWrite : c .tmWrite , inputs : - 2 }, nil
305
305
}
306
306
307
307
func (c * conn ) ExecContext (ctx context.Context , query string , args []driver.NamedValue ) (driver.Result , error ) {
@@ -335,6 +335,7 @@ type stmt struct {
335
335
* sqlite3.Stmt
336
336
tmWrite sqlite3.TimeFormat
337
337
tmRead sqlite3.TimeFormat
338
+ inputs int
338
339
}
339
340
340
341
var (
@@ -345,12 +346,17 @@ var (
345
346
)
346
347
347
348
func (s * stmt ) NumInput () int {
349
+ if s .inputs >= - 1 {
350
+ return s .inputs
351
+ }
348
352
n := s .Stmt .BindCount ()
349
353
for i := 1 ; i <= n ; i ++ {
350
354
if s .Stmt .BindName (i ) != "" {
355
+ s .inputs = - 1
351
356
return - 1
352
357
}
353
358
}
359
+ s .inputs = n
354
360
return n
355
361
}
356
362
@@ -389,12 +395,7 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driv
389
395
return & rows {ctx : ctx , stmt : s }, nil
390
396
}
391
397
392
- func (s * stmt ) setupBindings (args []driver.NamedValue ) error {
393
- err := s .Stmt .ClearBindings ()
394
- if err != nil {
395
- return err
396
- }
397
-
398
+ func (s * stmt ) setupBindings (args []driver.NamedValue ) (err error ) {
398
399
var ids [3 ]int
399
400
for _ , arg := range args {
400
401
ids := ids [:0 ]
0 commit comments