Skip to content

Commit

Permalink
Register pgx driver using major version
Browse files Browse the repository at this point in the history
Fixed: #1480
  • Loading branch information
mcdoker18 authored and jackc committed Feb 11, 2023
1 parent d15cc95 commit b14a5e6
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
9 changes: 8 additions & 1 deletion stdlib/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import (
"math"
"math/rand"
"reflect"
"sort"
"strconv"
"strings"
"sync"
Expand All @@ -84,7 +85,13 @@ func init() {
configs: make(map[string]*pgx.ConnConfig),
}
fakeTxConns = make(map[*pgx.Conn]*sql.Tx)
sql.Register("pgx", pgxDriver)

drivers := sql.Drivers()
// if pgx driver was already registered by different pgx major version then we skip registration under the default name.
if i := sort.SearchStrings(sql.Drivers(), "pgx"); len(drivers) >= i || drivers[i] != "pgx" {
sql.Register("pgx", pgxDriver)
}
sql.Register("pgx/v4", pgxDriver)

databaseSQLResultFormats = pgx.QueryResultFormatsByOID{
pgtype.BoolOID: 1,
Expand Down
19 changes: 16 additions & 3 deletions stdlib/sql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,22 @@ func closeStmt(t *testing.T, stmt *sql.Stmt) {
}

func TestSQLOpen(t *testing.T) {
db, err := sql.Open("pgx", os.Getenv("PGX_TEST_DATABASE"))
require.NoError(t, err)
closeDB(t, db)
tests := []struct {
driverName string
}{
{driverName: "pgx"},
{driverName: "pgx/v4"},
}

for _, tt := range tests {
tt := tt

t.Run(tt.driverName, func(t *testing.T) {
db, err := sql.Open(tt.driverName, os.Getenv("PGX_TEST_DATABASE"))
require.NoError(t, err)
closeDB(t, db)
})
}
}

func TestNormalLifeCycle(t *testing.T) {
Expand Down

0 comments on commit b14a5e6

Please sign in to comment.