File tree Expand file tree Collapse file tree 1 file changed +14
-5
lines changed Expand file tree Collapse file tree 1 file changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -47,7 +47,7 @@ type mysqlConn struct {
4747
4848// Handles parameters set in DSN after the connection is established
4949func (mc * mysqlConn ) handleParams () (err error ) {
50- var params [] string
50+ var cmdSet strings. Builder
5151 for param , val := range mc .cfg .Params {
5252 switch param {
5353 // Charset: character_set_connection, character_set_client, character_set_results
@@ -64,14 +64,23 @@ func (mc *mysqlConn) handleParams() (err error) {
6464 return
6565 }
6666
67- // Other system vars
67+ // Other system vars accumulated in a single SET command
6868 default :
69- params = append (params , param + "=" + val )
69+ if cmdSet .Len () == 0 {
70+ // Heuristic: 29 chars for each other key=value to reduce reallocations
71+ cmdSet .Grow (4 + len (param ) + 1 + len (val ) + 30 * (len (mc .cfg .Params )- 1 ))
72+ cmdSet .WriteString ("SET " )
73+ } else {
74+ cmdSet .WriteByte (',' )
75+ }
76+ cmdSet .WriteString (param )
77+ cmdSet .WriteByte ('=' )
78+ cmdSet .WriteString (val )
7079 }
7180 }
7281
73- if len ( params ) > 0 {
74- err = mc .exec ("SET " + strings . Join ( params , "," ))
82+ if cmdSet . Len ( ) > 0 {
83+ err = mc .exec (cmdSet . String ( ))
7584 if err != nil {
7685 return
7786 }
You can’t perform that action at this time.
0 commit comments