Skip to content

Commit 7fed69b

Browse files
prochacjackc
authored andcommitted
simplify duplicate pgx registration guard
The binary search is overkill here. Readability first.
1 parent 1e68b39 commit 7fed69b

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

stdlib/sql.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import (
5858
"math"
5959
"math/rand"
6060
"reflect"
61-
"sort"
6261
"strconv"
6362
"strings"
6463
"sync"
@@ -86,9 +85,9 @@ func init() {
8685
}
8786
fakeTxConns = make(map[*pgx.Conn]*sql.Tx)
8887

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" {
88+
// if pgx driver was already registered by different pgx major version then we
89+
// skip registration under the default name.
90+
if !contains(sql.Drivers(), "pgx") {
9291
sql.Register("pgx", pgxDriver)
9392
}
9493
sql.Register("pgx/v4", pgxDriver)
@@ -110,6 +109,17 @@ func init() {
110109
}
111110
}
112111

112+
// TODO replace by slices.Contains when experimental package will be merged to stdlib
113+
// https://pkg.go.dev/golang.org/x/exp/slices#Contains
114+
func contains(list []string, y string) bool {
115+
for _, x := range list {
116+
if x == y {
117+
return true
118+
}
119+
}
120+
return false
121+
}
122+
113123
var (
114124
fakeTxMutex sync.Mutex
115125
fakeTxConns map[*pgx.Conn]*sql.Tx

0 commit comments

Comments
 (0)