aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/database/sql/sql.go
diff options
context:
space:
mode:
authorGwenael Treguier <gwenn.kahz@gmail.com>2013-01-11 13:28:33 -0800
committerBrad Fitzpatrick <bradfitz@golang.org>2013-01-11 13:28:33 -0800
commit7f0449a1086dce557c6071c951cfec8664e8d456 (patch)
treeabcb47e782ccf4a49ee3a962e6c972ec601f48f4 /src/pkg/database/sql/sql.go
parentab1385ec95fe5eec367b8c40196a8962c1ca8ee5 (diff)
downloadgo-7f0449a1086dce557c6071c951cfec8664e8d456.tar.xz
database/sql: check NumInput on Stmt.Exec
Fixes #3678. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/6460087
Diffstat (limited to 'src/pkg/database/sql/sql.go')
-rw-r--r--src/pkg/database/sql/sql.go26
1 files changed, 6 insertions, 20 deletions
diff --git a/src/pkg/database/sql/sql.go b/src/pkg/database/sql/sql.go
index e7c7780ef2..31fc830bb3 100644
--- a/src/pkg/database/sql/sql.go
+++ b/src/pkg/database/sql/sql.go
@@ -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.