From a9c199129600ccc38ce1b84873c98a75294fa72c Mon Sep 17 00:00:00 2001 From: demoManito <1430482733@qq.com> Date: Thu, 23 May 2024 14:31:24 +0800 Subject: [PATCH 1/2] Allow to change (or disable) the default driver name for registration --- conn.go | 15 +++++++++++++-- conn_test.go | 19 ++++++++++++++++++- ssl_test.go | 2 +- url.go | 2 +- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/conn.go b/conn.go index bc0983608..4284b9480 100644 --- a/conn.go +++ b/conn.go @@ -57,8 +57,19 @@ func (d Driver) Open(name string) (driver.Conn, error) { return Open(name) } +// This variable can be replaced with -ldflags like below: +// go build "-ldflags=-X github.com/lib/pq.driverName=custom" +var driverName = "postgres" + func init() { - sql.Register("postgres", &Driver{}) + if driverName != "" { + sql.Register(driverName, &Driver{}) + } +} + +// DriverName return default driver name +func DriverName() string { + return driverName } type parameterStatus struct { @@ -1251,7 +1262,7 @@ func (cn *conn) auth(r *readBuf, o values) { token, err = cli.GetInitTokenFromSpn(spn) } else { // Allow the kerberos service name to be overridden - service := "postgres" + service := driverName if val, ok := o["krbsrvname"]; ok { service = val } diff --git a/conn_test.go b/conn_test.go index 96f70dddf..40defcc20 100644 --- a/conn_test.go +++ b/conn_test.go @@ -15,6 +15,16 @@ import ( "time" ) +// This variable can be replaced with -ldflags like below: +// go test "-ldflags=-X github.com/lib/pq.driverNameTest=custom" +var driverNameTest string + +func init() { + if driverNameTest == "" { + driverNameTest = driverName + } +} + type Fatalistic interface { Fatal(args ...interface{}) } @@ -49,7 +59,7 @@ func testConninfo(conninfo string) string { } func openTestConnConninfo(conninfo string) (*sql.DB, error) { - return sql.Open("postgres", testConninfo(conninfo)) + return sql.Open(driverNameTest, testConninfo(conninfo)) } func openTestConn(t Fatalistic) *sql.DB { @@ -1971,3 +1981,10 @@ func TestStmtExecContext(t *testing.T) { }) } } + +func TestDriverName(t *testing.T) { + dn := DriverName() + if dn != driverName { + t.Fatalf("DriverName() returned driverName: %v, want: %v", dn, driverName) + } +} diff --git a/ssl_test.go b/ssl_test.go index 4c631b81b..dd04fa64b 100644 --- a/ssl_test.go +++ b/ssl_test.go @@ -359,7 +359,7 @@ func TestSNISupport(t *testing.T) { // We are okay to skip this error as we are polling serverErrChan and we'll get an error // or timeout from the server side in case of problems here. - db, _ := sql.Open("postgres", connStr) + db, _ := sql.Open(driverNameTest, connStr) _, _ = db.Exec("SELECT 1") // Check SNI data diff --git a/url.go b/url.go index aec6e95be..62ed55152 100644 --- a/url.go +++ b/url.go @@ -35,7 +35,7 @@ func ParseURL(url string) (string, error) { return "", err } - if u.Scheme != "postgres" && u.Scheme != "postgresql" { + if u.Scheme != driverName && u.Scheme != "postgresql" { return "", fmt.Errorf("invalid connection protocol: %s", u.Scheme) } From 491ecd85b26ad6c359168a2963f9e07fc5c5baed Mon Sep 17 00:00:00 2001 From: demoManito <1430482733@qq.com> Date: Thu, 23 May 2024 14:40:09 +0800 Subject: [PATCH 2/2] hstore_test.go use pg.DriverName() --- hstore/hstore_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hstore/hstore_test.go b/hstore/hstore_test.go index 0d361ae94..02822e459 100644 --- a/hstore/hstore_test.go +++ b/hstore/hstore_test.go @@ -5,7 +5,7 @@ import ( "os" "testing" - _ "github.com/lib/pq" + "github.com/lib/pq" ) type Fatalistic interface { @@ -24,7 +24,7 @@ func openTestConn(t Fatalistic) *sql.DB { os.Setenv("PGSSLMODE", "disable") } - conn, err := sql.Open("postgres", "") + conn, err := sql.Open(pq.DriverName(), "") if err != nil { t.Fatal(err) }