Skip to content

Commit 255f16b

Browse files
mcdoker18jackc
authored andcommitted
Register pgx driver using major version
Fixed: #1480
1 parent a47e836 commit 255f16b

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

stdlib/sql.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ import (
6666
"math"
6767
"math/rand"
6868
"reflect"
69+
"sort"
6970
"strconv"
7071
"strings"
7172
"sync"
@@ -85,7 +86,13 @@ func init() {
8586
pgxDriver = &Driver{
8687
configs: make(map[string]*pgx.ConnConfig),
8788
}
88-
sql.Register("pgx", pgxDriver)
89+
90+
drivers := sql.Drivers()
91+
// if pgx driver was already registered by different pgx major version then we skip registration under the default name.
92+
if i := sort.SearchStrings(sql.Drivers(), "pgx"); len(drivers) >= i || drivers[i] != "pgx" {
93+
sql.Register("pgx", pgxDriver)
94+
}
95+
sql.Register("pgx/v5", pgxDriver)
8996

9097
databaseSQLResultFormats = pgx.QueryResultFormatsByOID{
9198
pgtype.BoolOID: 1,

stdlib/sql_test.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,22 @@ func closeStmt(t *testing.T, stmt *sql.Stmt) {
146146
}
147147

148148
func TestSQLOpen(t *testing.T) {
149-
db, err := sql.Open("pgx", os.Getenv("PGX_TEST_DATABASE"))
150-
require.NoError(t, err)
151-
closeDB(t, db)
149+
tests := []struct {
150+
driverName string
151+
}{
152+
{driverName: "pgx"},
153+
{driverName: "pgx/v5"},
154+
}
155+
156+
for _, tt := range tests {
157+
tt := tt
158+
159+
t.Run(tt.driverName, func(t *testing.T) {
160+
db, err := sql.Open(tt.driverName, os.Getenv("PGX_TEST_DATABASE"))
161+
require.NoError(t, err)
162+
closeDB(t, db)
163+
})
164+
}
152165
}
153166

154167
func TestNormalLifeCycle(t *testing.T) {

0 commit comments

Comments
 (0)