From 502e29f485c2a3ed5691601a689911199fd5aef0 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 6 Mar 2012 17:44:47 -0800 Subject: [PATCH] database/sql: add docs about connection state, pooling Fixes #3223 R=golang-dev, r CC=golang-dev https://golang.org/cl/5755063 --- src/pkg/database/sql/sql.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/pkg/database/sql/sql.go b/src/pkg/database/sql/sql.go index f50daa11a1f..2fdf57b6c85 100644 --- a/src/pkg/database/sql/sql.go +++ b/src/pkg/database/sql/sql.go @@ -175,6 +175,16 @@ var ErrNoRows = errors.New("sql: no rows in result set") // DB is a database handle. It's safe for concurrent use by multiple // goroutines. +// +// If the underlying database driver has the concept of a connection +// and per-connection session state, the sql package manages creating +// and freeing connections automatically, including maintaining a free +// pool of idle connections. If observing session state is required, +// either do not share a *DB between multiple concurrent goroutines or +// create and observe all state only within a transaction. Once +// DB.Open is called, the returned Tx is bound to a single isolated +// connection. Once Tx.Commit or Tx.Rollback is called, that +// connection is returned to DB's idle connection pool. type DB struct { driver driver.Driver dsn string