Skip to content

Commit b14a5e6

Browse files
mcdoker18jackc
authored andcommitted
Register pgx driver using major version
Fixed: #1480
1 parent d15cc95 commit b14a5e6

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
@@ -58,6 +58,7 @@ import (
5858
"math"
5959
"math/rand"
6060
"reflect"
61+
"sort"
6162
"strconv"
6263
"strings"
6364
"sync"
@@ -84,7 +85,13 @@ func init() {
8485
configs: make(map[string]*pgx.ConnConfig),
8586
}
8687
fakeTxConns = make(map[*pgx.Conn]*sql.Tx)
87-
sql.Register("pgx", pgxDriver)
88+
89+
drivers := sql.Drivers()
90+
// if pgx driver was already registered by different pgx major version then we skip registration under the default name.
91+
if i := sort.SearchStrings(sql.Drivers(), "pgx"); len(drivers) >= i || drivers[i] != "pgx" {
92+
sql.Register("pgx", pgxDriver)
93+
}
94+
sql.Register("pgx/v4", pgxDriver)
8895

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

stdlib/sql_test.go

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

159159
func TestSQLOpen(t *testing.T) {
160-
db, err := sql.Open("pgx", os.Getenv("PGX_TEST_DATABASE"))
161-
require.NoError(t, err)
162-
closeDB(t, db)
160+
tests := []struct {
161+
driverName string
162+
}{
163+
{driverName: "pgx"},
164+
{driverName: "pgx/v4"},
165+
}
166+
167+
for _, tt := range tests {
168+
tt := tt
169+
170+
t.Run(tt.driverName, func(t *testing.T) {
171+
db, err := sql.Open(tt.driverName, os.Getenv("PGX_TEST_DATABASE"))
172+
require.NoError(t, err)
173+
closeDB(t, db)
174+
})
175+
}
163176
}
164177

165178
func TestNormalLifeCycle(t *testing.T) {

0 commit comments

Comments
 (0)