Skip to content

Commit 32a54ed

Browse files
committed
Fix FormatDSN missing ConnectionAttributes
1 parent 44553d6 commit 32a54ed

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

AUTHORS

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Animesh Ray <mail.rayanimesh at gmail.com>
2121
Arne Hormann <arnehormann at gmail.com>
2222
Ariel Mashraki <ariel at mashraki.co.il>
2323
Asta Xie <xiemengjun at gmail.com>
24+
Bogdan Constantinescu <bog.con.bc at gmail.com>
2425
Brian Hendriks <brian at dolthub.com>
2526
Bulat Gaifullin <gaifullinbf at gmail.com>
2627
Caine Jette <jette at alum.mit.edu>

dsn.go

+4
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@ func (cfg *Config) FormatDSN() string {
290290
writeDSNParam(&buf, &hasParam, "columnsWithAlias", "true")
291291
}
292292

293+
if cfg.ConnectionAttributes != "" {
294+
writeDSNParam(&buf, &hasParam, "connectionAttributes", url.QueryEscape(cfg.ConnectionAttributes))
295+
}
296+
293297
if cfg.InterpolateParams {
294298
writeDSNParam(&buf, &hasParam, "interpolateParams", "true")
295299
}

dsn_test.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ var testDSNs = []struct {
7777
}, {
7878
"user:password@/dbname?loc=UTC&timeout=30s&parseTime=true&timeTruncate=1h",
7979
&Config{User: "user", Passwd: "password", Net: "tcp", Addr: "127.0.0.1:3306", DBName: "dbname", Loc: time.UTC, Timeout: 30 * time.Second, ParseTime: true, MaxAllowedPacket: defaultMaxAllowedPacket, Logger: defaultLogger, AllowNativePasswords: true, CheckConnLiveness: true, timeTruncate: time.Hour},
80+
}, {
81+
"foo:bar@tcp(192.168.1.50:3307)/baz?timeout=10s&connectionAttributes=program_name:MySQLGoDriver%2FTest,program_version:1.2.3",
82+
&Config{User: "foo", Passwd: "bar", Net: "tcp", Addr: "192.168.1.50:3307", DBName: "baz", Loc: time.UTC, Timeout: 10 * time.Second, MaxAllowedPacket: defaultMaxAllowedPacket, Logger: defaultLogger, AllowNativePasswords: true, CheckConnLiveness: true, ConnectionAttributes: "program_name:MySQLGoDriver/Test,program_version:1.2.3"},
8083
},
8184
}
8285

@@ -109,7 +112,8 @@ func TestDSNParserInvalid(t *testing.T) {
109112
"User:pass@tcp(1.2.3.4:3306)", // no trailing slash
110113
"net()/", // unknown default addr
111114
"user:pass@tcp(127.0.0.1:3306)/db/name", // invalid dbname
112-
"user:password@/dbname?allowFallbackToPlaintext=PREFERRED", // wrong bool flag
115+
"user:password@/dbname?allowFallbackToPlaintext=PREFERRED", // wrong bool flag
116+
"user:password@/dbname?connectionAttributes=attr1:/unescaped/value", // unescaped
113117
//"/dbname?arg=/some/unescaped/path",
114118
}
115119

0 commit comments

Comments
 (0)