From c2e278e5d485fd26b6d8ef54c25bc00168f82eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Proch=C3=A1zka?= Date: Mon, 13 Feb 2023 19:44:54 +0100 Subject: [PATCH] simplify duplicate `pgx` registration guard The binary search is overkill here. Readability first. --- stdlib/sql.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/stdlib/sql.go b/stdlib/sql.go index ddb15ff6..97ecc9b2 100644 --- a/stdlib/sql.go +++ b/stdlib/sql.go @@ -66,7 +66,6 @@ import ( "math" "math/rand" "reflect" - "sort" "strconv" "strings" "sync" @@ -87,9 +86,9 @@ func init() { configs: make(map[string]*pgx.ConnConfig), } - 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" { + // if pgx driver was already registered by different pgx major version then we + // skip registration under the default name. + if !contains(sql.Drivers(), "pgx") { sql.Register("pgx", pgxDriver) } sql.Register("pgx/v5", pgxDriver) @@ -111,6 +110,17 @@ func init() { } } +// TODO replace by slices.Contains when experimental package will be merged to stdlib +// https://pkg.go.dev/golang.org/x/exp/slices#Contains +func contains(list []string, y string) bool { + for _, x := range list { + if x == y { + return true + } + } + return false +} + // OptionOpenDB options for configuring the driver when opening a new db pool. type OptionOpenDB func(*connector)