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>
This commit is contained in:
Daniel Theophanes 2017-11-14 08:53:56 -08:00
parent 096b195df5
commit b44b2feb91
4 changed files with 42 additions and 0 deletions

View file

@ -71,6 +71,16 @@ func (c *fakeConnector) Driver() driver.Driver {
return fdriver
}
type fakeDriverCtx struct {
fakeDriver
}
var _ driver.DriverContext = &fakeDriverCtx{}
func (cc *fakeDriverCtx) OpenConnector(name string) (driver.Connector, error) {
return &fakeConnector{name: name}, nil
}
type fakeDB struct {
name string