diff --git a/conn.go b/conn.go index a75b4398..bc2d7578 100644 --- a/conn.go +++ b/conn.go @@ -364,6 +364,20 @@ func ParseURI(uri string) (ConnConfig, error) { return cp, err } + ignoreKeys := map[string]struct{}{ + "sslmode": struct{}{}, + } + + cp.RuntimeParams = make(map[string]string) + + for k, v := range url.Query() { + if _, ok := ignoreKeys[k]; ok { + continue + } + + cp.RuntimeParams[k] = v[0] + } + return cp, nil } diff --git a/conn_test.go b/conn_test.go index b60c471e..22cace48 100644 --- a/conn_test.go +++ b/conn_test.go @@ -311,6 +311,7 @@ func TestParseURI(t *testing.T) { }, UseFallbackTLS: true, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, }, }, { @@ -324,6 +325,7 @@ func TestParseURI(t *testing.T) { TLSConfig: nil, UseFallbackTLS: false, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, }, }, { @@ -339,6 +341,7 @@ func TestParseURI(t *testing.T) { }, UseFallbackTLS: true, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, }, }, { @@ -354,6 +357,7 @@ func TestParseURI(t *testing.T) { }, UseFallbackTLS: true, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, }, }, { @@ -368,6 +372,7 @@ func TestParseURI(t *testing.T) { }, UseFallbackTLS: true, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, }, }, { @@ -381,6 +386,24 @@ func TestParseURI(t *testing.T) { }, UseFallbackTLS: true, FallbackTLSConfig: nil, + RuntimeParams: map[string]string{}, + }, + }, + { + url: "postgres://jack@localhost/mydb?application_name=pgxtest&search_path=myschema", + connParams: pgx.ConnConfig{ + User: "jack", + Host: "localhost", + Database: "mydb", + TLSConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + UseFallbackTLS: true, + FallbackTLSConfig: nil, + RuntimeParams: map[string]string{ + "application_name": "pgxtest", + "search_path": "myschema", + }, }, }, }