]> Cypherpunks.ru repositories - gostls13.git/commit
database/sql: close driver.Connector if it implements io.Closer
authorIvan Trubach <mr.trubach@icloud.com>
Thu, 25 Feb 2021 19:15:04 +0000 (19:15 +0000)
committerEmmanuel Odeke <emmanuel@orijtech.com>
Thu, 25 Feb 2021 19:34:27 +0000 (19:34 +0000)
commit194b636f8f1ff7d6b709b5b9010d1d14b3919e66
treefafdc7368e92f04ceff0708ff25be931635f2525
parent4ebb6f5110af3e60455d8751b996b958afb25a36
database/sql: close driver.Connector if it implements io.Closer

This change allows driver implementations to manage resources in
driver.Connector, e.g. to share the same underlying database handle
between multiple connections. That is, it allows embedded databases
with in-memory backends like SQLite and Genji to safely release the
resources once the sql.DB is closed.

This makes it possible to address oddities with in-memory stores in
SQLite and Genji drivers without introducing too much complexity in
the driver implementations.

See also:
- https://github.com/mattn/go-sqlite3/issues/204
- https://github.com/mattn/go-sqlite3/issues/511
- https://github.com/genjidb/genji/issues/210

Fixes #41790

Change-Id: Idbd19763134438ed38288b9d44f16608e4e97fd7
GitHub-Last-Rev: 962c785dfb3bb6ad98b2216bcedd84ba383fe872
GitHub-Pull-Request: golang/go#41710
Reviewed-on: https://go-review.googlesource.com/c/go/+/258360
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Trust: Emmanuel Odeke <emmanuel@orijtech.com>
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Go Bot <gobot@golang.org>
src/database/sql/driver/driver.go
src/database/sql/fakedb_test.go
src/database/sql/sql.go
src/database/sql/sql_test.go