Add prefer_simple_protocol option to ParseConfig

refs #650
pull/955/head
Jack Christensen 2021-03-04 19:56:14 -06:00
parent 1dc7133a63
commit d9ac491657
2 changed files with 31 additions and 0 deletions

11
conn.go
View File

@ -160,11 +160,22 @@ func ParseConfig(connString string) (*ConnConfig, error) {
}
}
preferSimpleProtocol := false
if s, ok := config.RuntimeParams["prefer_simple_protocol"]; ok {
delete(config.RuntimeParams, "prefer_simple_protocol")
if b, err := strconv.ParseBool(s); err == nil {
preferSimpleProtocol = b
} else {
return nil, errors.Errorf("invalid prefer_simple_protocol: %v", err)
}
}
connConfig := &ConnConfig{
Config: *config,
createdByParseConfig: true,
LogLevel: LogLevelInfo,
BuildStatementCache: buildStatementCache,
PreferSimpleProtocol: preferSimpleProtocol,
connString: connString,
}

View File

@ -169,6 +169,26 @@ func TestParseConfigExtractsStatementCacheOptions(t *testing.T) {
require.Equal(t, stmtcache.ModeDescribe, c.Mode())
}
func TestParseConfigExtractsPreferSimpleProtocol(t *testing.T) {
t.Parallel()
for _, tt := range []struct {
connString string
preferSimpleProtocol bool
}{
{"", false},
{"prefer_simple_protocol=false", false},
{"prefer_simple_protocol=0", false},
{"prefer_simple_protocol=true", true},
{"prefer_simple_protocol=1", true},
} {
config, err := pgx.ParseConfig(tt.connString)
require.NoError(t, err)
require.Equalf(t, tt.preferSimpleProtocol, config.PreferSimpleProtocol, "connString: `%s`", tt.connString)
require.Empty(t, config.RuntimeParams["prefer_simple_protocol"])
}
}
func TestExec(t *testing.T) {
t.Parallel()