mirror of https://github.com/jackc/pgx.git
ParseDSN extracts RuntimeParams
parent
5b0550c1cb
commit
829d61ce40
6
conn.go
6
conn.go
|
@ -381,7 +381,7 @@ func ParseURI(uri string) (ConnConfig, error) {
|
||||||
return cp, nil
|
return cp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var dsn_regexp = regexp.MustCompile(`([a-z]+)=((?:"[^"]+")|(?:[^ ]+))`)
|
var dsn_regexp = regexp.MustCompile(`([a-zA-Z_]+)=((?:"[^"]+")|(?:[^ ]+))`)
|
||||||
|
|
||||||
// ParseDSN parses a database DSN (data source name) into a ConnConfig
|
// ParseDSN parses a database DSN (data source name) into a ConnConfig
|
||||||
//
|
//
|
||||||
|
@ -397,6 +397,8 @@ func ParseDSN(s string) (ConnConfig, error) {
|
||||||
|
|
||||||
var sslmode string
|
var sslmode string
|
||||||
|
|
||||||
|
cp.RuntimeParams = make(map[string]string)
|
||||||
|
|
||||||
for _, b := range m {
|
for _, b := range m {
|
||||||
switch b[1] {
|
switch b[1] {
|
||||||
case "user":
|
case "user":
|
||||||
|
@ -415,6 +417,8 @@ func ParseDSN(s string) (ConnConfig, error) {
|
||||||
cp.Database = b[2]
|
cp.Database = b[2]
|
||||||
case "sslmode":
|
case "sslmode":
|
||||||
sslmode = b[2]
|
sslmode = b[2]
|
||||||
|
default:
|
||||||
|
cp.RuntimeParams[b[1]] = b[2]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
32
conn_test.go
32
conn_test.go
|
@ -431,11 +431,12 @@ func TestParseDSN(t *testing.T) {
|
||||||
{
|
{
|
||||||
url: "user=jack password=secret host=localhost port=5432 dbname=mydb sslmode=disable",
|
url: "user=jack password=secret host=localhost port=5432 dbname=mydb sslmode=disable",
|
||||||
connParams: pgx.ConnConfig{
|
connParams: pgx.ConnConfig{
|
||||||
User: "jack",
|
User: "jack",
|
||||||
Password: "secret",
|
Password: "secret",
|
||||||
Host: "localhost",
|
Host: "localhost",
|
||||||
Port: 5432,
|
Port: 5432,
|
||||||
Database: "mydb",
|
Database: "mydb",
|
||||||
|
RuntimeParams: map[string]string{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -451,6 +452,7 @@ func TestParseDSN(t *testing.T) {
|
||||||
},
|
},
|
||||||
UseFallbackTLS: true,
|
UseFallbackTLS: true,
|
||||||
FallbackTLSConfig: nil,
|
FallbackTLSConfig: nil,
|
||||||
|
RuntimeParams: map[string]string{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -466,6 +468,7 @@ func TestParseDSN(t *testing.T) {
|
||||||
},
|
},
|
||||||
UseFallbackTLS: true,
|
UseFallbackTLS: true,
|
||||||
FallbackTLSConfig: nil,
|
FallbackTLSConfig: nil,
|
||||||
|
RuntimeParams: map[string]string{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -480,6 +483,7 @@ func TestParseDSN(t *testing.T) {
|
||||||
},
|
},
|
||||||
UseFallbackTLS: true,
|
UseFallbackTLS: true,
|
||||||
FallbackTLSConfig: nil,
|
FallbackTLSConfig: nil,
|
||||||
|
RuntimeParams: map[string]string{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -493,6 +497,24 @@ func TestParseDSN(t *testing.T) {
|
||||||
},
|
},
|
||||||
UseFallbackTLS: true,
|
UseFallbackTLS: true,
|
||||||
FallbackTLSConfig: nil,
|
FallbackTLSConfig: nil,
|
||||||
|
RuntimeParams: map[string]string{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: "user=jack host=localhost dbname=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",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue