1
0
mirror of https://github.com/golang/go synced 2024-11-25 00:37:57 -07:00

exp/sql: NumInput() allow -1 to ignore checking.

Some database driver can't get number of parameters.
For example:
        http://support.microsoft.com/kb/240205/en-us
So, added way to ignore checking number of parameters with return -1.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5376091
This commit is contained in:
Yasuhiro Matsumoto 2011-11-15 16:29:43 -08:00 committed by Brad Fitzpatrick
parent 5b7827ec07
commit 5e5c5c2789
2 changed files with 12 additions and 2 deletions

View File

@ -97,6 +97,9 @@ type Stmt interface {
Close() error
// NumInput returns the number of placeholder parameters.
// -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.
NumInput() int
// Exec executes a query that doesn't return rows, such

View File

@ -474,7 +474,10 @@ func (s *Stmt) Exec(args ...interface{}) (Result, error) {
}
defer releaseConn()
if want := si.NumInput(); len(args) != want {
// -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.
if want := si.NumInput(); want != -1 && len(args) != want {
return nil, fmt.Errorf("db: expected %d arguments, got %d", want, len(args))
}
@ -570,7 +573,11 @@ func (s *Stmt) Query(args ...interface{}) (*Rows, error) {
if err != nil {
return nil, err
}
if len(args) != si.NumInput() {
// -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.
if want := si.NumInput(); want != -1 && len(args) != want {
return nil, fmt.Errorf("db: statement expects %d inputs; got %d", si.NumInput(), len(args))
}
sargs, err := subsetTypeArgs(args)