Skip to content

Instantly share code, notes, and snippets.

@slene
Created January 7, 2014 09:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slene/8297019 to your computer and use it in GitHub Desktop.
Save slene/8297019 to your computer and use it in GitHub Desktop.
diff --git a/qbs.go b/qbs.go
index f3a6774..558657b 100644
--- a/qbs.go
+++ b/qbs.go
@@ -273,6 +273,7 @@ func (q *Qbs) doQueryRow(out interface{}, query string, args ...interface{}) err
if err != nil {
return q.updateTxError(err)
}
+ defer stmt.Close()
rows, err := stmt.Query(args...)
if err != nil {
return q.updateTxError(err)
@@ -298,6 +299,7 @@ func (q *Qbs) doQueryRows(out interface{}, query string, args ...interface{}) er
if err != nil {
return q.updateTxError(err)
}
+ defer stmt.Close()
rows, err := stmt.Query(args...)
if err != nil {
return q.updateTxError(err)
@@ -366,6 +368,7 @@ func (q *Qbs) Exec(query string, args ...interface{}) (sql.Result, error) {
if err != nil {
return nil, q.updateTxError(err)
}
+ defer stmt.Close()
result, err := stmt.Exec(args...)
if err != nil {
return nil, q.updateTxError(err)
@@ -382,6 +385,7 @@ func (q *Qbs) QueryRow(query string, args ...interface{}) *sql.Row {
q.updateTxError(err)
return nil
}
+ defer stmt.Close()
return stmt.QueryRow(args...)
}
@@ -394,39 +398,40 @@ func (q *Qbs) Query(query string, args ...interface{}) (rows *sql.Rows, err erro
q.updateTxError(err)
return
}
+ defer stmt.Close()
return stmt.Query(args...)
}
// Same as sql.Db.Prepare or sql.Tx.Prepare depends on if transaction has began
func (q *Qbs) prepare(query string) (stmt *sql.Stmt, err error) {
- var ok bool
+ // var ok bool
if q.tx != nil {
- stmt, ok = q.txStmtMap[query]
- if ok {
- return
- }
+ // stmt, ok = q.txStmtMap[query]
+ // if ok {
+ // return
+ // }
stmt, err = q.tx.Prepare(query)
if err != nil {
q.updateTxError(err)
return
}
- q.txStmtMap[query] = stmt
+ // q.txStmtMap[query] = stmt
} else {
- mu.RLock()
- stmt, ok = stmtMap[query]
- mu.RUnlock()
- if ok {
- return
- }
+ // mu.RLock()
+ // stmt, ok = stmtMap[query]
+ // mu.RUnlock()
+ // if ok {
+ // return
+ // }
stmt, err = db.Prepare(query + ";")
if err != nil {
q.updateTxError(err)
return
}
- mu.Lock()
- stmtMap[query] = stmt
- mu.Unlock()
+ // mu.Lock()
+ // stmtMap[query] = stmt
+ // mu.Unlock()
}
return
}
@@ -631,6 +636,7 @@ func (q *Qbs) doQueryMap(query string, once bool, args ...interface{}) ([]map[st
if err != nil {
return nil, q.updateTxError(err)
}
+ defer stmt.Close()
rows, err := stmt.Query(args...)
if err != nil {
return nil, q.updateTxError(err)
@@ -676,6 +682,7 @@ func (q *Qbs) QueryStruct(dest interface{}, query string, args ...interface{}) e
if err != nil {
return q.updateTxError(err)
}
+ defer stmt.Close()
rows, err := stmt.Query(args...)
if err != nil {
return q.updateTxError(err)
@@ -744,6 +751,7 @@ func (q *Qbs) Iterate(structPtr interface{}, do func() error) error {
if err != nil {
return q.updateTxError(err)
}
+ defer stmt.Close()
rows, err := stmt.Query(args...)
if err != nil {
return q.updateTxError(err)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment