Skip to content

Commit 3f51e4e

Browse files
authored
On connect, set all variables in a single SET statement (go-sql-driver#1099)
When opening a connection, instead of iterating on all variables and calling "SET <variable>=<value>" for each, we now use a single SET statement with all pairs using a comma as separator: SET <variable1>=<value1>,<variable2>=<value2>,...
1 parent 096feaa commit 3f51e4e

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

connection.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ type mysqlConn struct {
4747

4848
// Handles parameters set in DSN after the connection is established
4949
func (mc *mysqlConn) handleParams() (err error) {
50+
var params []string
5051
for param, val := range mc.cfg.Params {
5152
switch param {
52-
// Charset
53+
// Charset: character_set_connection, character_set_client, character_set_results
5354
case "charset":
5455
charsets := strings.Split(val, ",")
5556
for i := range charsets {
@@ -63,12 +64,16 @@ func (mc *mysqlConn) handleParams() (err error) {
6364
return
6465
}
6566

66-
// System Vars
67+
// Other system vars
6768
default:
68-
err = mc.exec("SET " + param + "=" + val + "")
69-
if err != nil {
70-
return
71-
}
69+
params = append(params, param+"="+val)
70+
}
71+
}
72+
73+
if len(params) > 0 {
74+
err = mc.exec("SET " + strings.Join(params, ","))
75+
if err != nil {
76+
return
7277
}
7378
}
7479

0 commit comments

Comments
 (0)