Commit 0bbf0ec0 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

database/sql: use method values instead of generating closures

Reduces garbage.

R=adg, r
CC=dsymonds, gobot, golang-dev
https://golang.org/cl/9088045
parent 6c4943cb
...@@ -219,6 +219,10 @@ type driverConn struct { ...@@ -219,6 +219,10 @@ type driverConn struct {
dbmuClosed bool // same as closed, but guarded by db.mu, for connIfFree dbmuClosed bool // same as closed, but guarded by db.mu, for connIfFree
} }
func (dc *driverConn) releaseConn(err error) {
dc.db.putConn(dc, err)
}
func (dc *driverConn) removeOpenStmt(si driver.Stmt) { func (dc *driverConn) removeOpenStmt(si driver.Stmt) {
dc.Lock() dc.Lock()
defer dc.Unlock() defer dc.Unlock()
...@@ -367,10 +371,7 @@ func (db *DB) removeDepLocked(x finalCloser, dep interface{}) func() error { ...@@ -367,10 +371,7 @@ func (db *DB) removeDepLocked(x finalCloser, dep interface{}) func() error {
if !done { if !done {
return func() error { return nil } return func() error { return nil }
} }
return func() error { return x.finalClose
//println(fmt.Sprintf("calling final close on %T %v (%#v)", x, x, x))
return x.finalClose()
}
} }
// Open opens a database specified by its database driver name and a // Open opens a database specified by its database driver name and a
...@@ -710,9 +711,7 @@ func (db *DB) query(query string, args []interface{}) (*Rows, error) { ...@@ -710,9 +711,7 @@ func (db *DB) query(query string, args []interface{}) (*Rows, error) {
return nil, err return nil, err
} }
releaseConn := func(err error) { db.putConn(ci, err) } return db.queryConn(ci, ci.releaseConn, query, args)
return db.queryConn(ci, releaseConn, query, args)
} }
// queryConn executes a query on the given connection. // queryConn executes a query on the given connection.
...@@ -1154,8 +1153,7 @@ func (s *Stmt) connStmt() (ci *driverConn, releaseConn func(error), si driver.St ...@@ -1154,8 +1153,7 @@ func (s *Stmt) connStmt() (ci *driverConn, releaseConn func(error), si driver.St
} }
conn := cs.dc conn := cs.dc
releaseConn = func(err error) { s.db.putConn(conn, err) } return conn, conn.releaseConn, cs.si, nil
return conn, releaseConn, cs.si, nil
} }
// Query executes a prepared query statement with the given arguments // Query executes a prepared query statement with the given arguments
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment