]> Cypherpunks repositories - gostls13.git/commitdiff
database/sql: check NumInput on Stmt.Exec
authorGwenael Treguier <gwenn.kahz@gmail.com>
Fri, 11 Jan 2013 21:28:33 +0000 (13:28 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 11 Jan 2013 21:28:33 +0000 (13:28 -0800)
Fixes #3678.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6460087

src/pkg/database/sql/sql.go

index e7c7780ef2e685ed9456cec45c2dbcd7cd6ffcbe..31fc830bb3c9b7f19f4c326cc7af98a9335a8ad8 100644 (file)
@@ -369,16 +369,7 @@ func (db *DB) exec(query string, args []interface{}) (res Result, err error) {
        }
        defer sti.Close()
 
-       dargs, err := driverArgs(sti, args)
-       if err != nil {
-               return nil, err
-       }
-
-       resi, err := sti.Exec(dargs)
-       if err != nil {
-               return nil, err
-       }
-       return result{resi}, nil
+       return resultFromStatement(sti, args...)
 }
 
 // Query executes a query that returns rows, typically a SELECT.
@@ -608,16 +599,7 @@ func (tx *Tx) Exec(query string, args ...interface{}) (Result, error) {
        }
        defer sti.Close()
 
-       dargs, err := driverArgs(sti, args)
-       if err != nil {
-               return nil, err
-       }
-
-       resi, err := sti.Exec(dargs)
-       if err != nil {
-               return nil, err
-       }
-       return result{resi}, nil
+       return resultFromStatement(sti, args...)
 }
 
 // Query executes a query that returns rows, typically a SELECT.
@@ -682,6 +664,10 @@ func (s *Stmt) Exec(args ...interface{}) (Result, error) {
        }
        defer releaseConn(nil)
 
+       return resultFromStatement(si, args...)
+}
+
+func resultFromStatement(si driver.Stmt, args ...interface{}) (Result, error) {
        // -1 means the driver doesn't know how to count the number of
        // placeholders, so we won't sanity check input here and instead let the
        // driver deal with errors.