diff options
| author | Daniel Theophanes <kardianos@gmail.com> | 2017-11-14 08:53:56 -0800 |
|---|---|---|
| committer | Daniel Theophanes <kardianos@gmail.com> | 2017-11-16 22:36:07 +0000 |
| commit | b44b2feb914d866250f2efb744b24de0ce8c161a (patch) | |
| tree | 6820e8a597a5d2e51282ca3f490f92522995d665 /src/database/sql/driver/driver.go | |
| parent | 096b195df5b6b29521af3e10ef40f4118164596b (diff) | |
| download | go-b44b2feb914d866250f2efb744b24de0ce8c161a.tar.xz | |
database/sql: allow OpenConnector in a driver.Driver interface
While driver.Connector was previously added to allow non-string
connection arguments and access to the context, most users of
the sql package will continue to rely on a string DSN.
Allow drivers to implement a string DSN to Connector interface
that both allows a single parsing of the string DSN and uses
the Connector interface which passes available context to
the driver dialer.
Fixes #22713
Change-Id: Ia0b862262f4c4670effe2538d0d6d43733fea18d
Reviewed-on: https://go-review.googlesource.com/77550
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/database/sql/driver/driver.go')
| -rw-r--r-- | src/database/sql/driver/driver.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/database/sql/driver/driver.go b/src/database/sql/driver/driver.go index b3f9d9c26c..b9bf19c04d 100644 --- a/src/database/sql/driver/driver.go +++ b/src/database/sql/driver/driver.go @@ -55,6 +55,17 @@ type Driver interface { Open(name string) (Conn, error) } +// DriverContext enhances the Driver interface by returning a Connector +// rather then a single Conn. +// It separates out the name parsing step from actually connecting to the +// database. It also gives dialers access to the context by using the +// Connector. +type DriverContext interface { + // OpenConnector must parse the name in the same format that Driver.Open + // parses the name parameter. + OpenConnector(name string) (Connector, error) +} + // Connector is an optional interface that drivers can implement. // It allows drivers to provide more flexible methods to open // database connections without requiring the use of a DSN string. |
