]> Cypherpunks repositories - gostls13.git/commitdiff
database/sql: support ErrSkip in Tx.Exec
authorAndrew Balholm <andybalholm@gmail.com>
Thu, 9 Feb 2012 22:19:22 +0000 (09:19 +1100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 9 Feb 2012 22:19:22 +0000 (09:19 +1100)
If the database driver supports the Execer interface but returns
ErrSkip, calling Exec on a transaction was returning the error instead
of using the slow path.

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

src/pkg/database/sql/sql.go

index fe43f92b98c75f6020cd5d342d9d5fa7ca3f7030..e7a067b8938c73dcde1897ca7a230b7adfdd7f8d 100644 (file)
@@ -523,10 +523,12 @@ func (tx *Tx) Exec(query string, args ...interface{}) (Result, error) {
 
        if execer, ok := ci.(driver.Execer); ok {
                resi, err := execer.Exec(query, args)
-               if err != nil {
+               if err == nil {
+                       return result{resi}, nil
+               }
+               if err != driver.ErrSkip {
                        return nil, err
                }
-               return result{resi}, nil
        }
 
        sti, err := ci.Prepare(query)