Skip to content

Commit acb481b

Browse files
committed
handleParams: use strings.Builder instead of direct []byte
1 parent 5748e04 commit acb481b

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

connection.go

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

4848
// Handles parameters set in DSN after the connection is established
4949
func (mc *mysqlConn) handleParams() (err error) {
50-
var cmdSet []byte
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
@@ -66,21 +66,21 @@ func (mc *mysqlConn) handleParams() (err error) {
6666

6767
// Other system vars accumulated in a single SET command
6868
default:
69-
if cmdSet == nil {
69+
if cmdSet.Len() == 0 {
7070
// Heuristic: 29 chars for each other key=value to reduce reallocations
71-
cmdSet = make([]byte, 0, 4+len(param)+1+len(val)+30*(len(mc.cfg.Params)-1))
72-
cmdSet = append(cmdSet, "SET "...)
71+
cmdSet.Grow(4 + len(param) + 1 + len(val) + 30*(len(mc.cfg.Params)-1))
72+
cmdSet.WriteString("SET ")
7373
} else {
74-
cmdSet = append(cmdSet, ',')
74+
cmdSet.WriteByte(',')
7575
}
76-
cmdSet = append(cmdSet, param...)
77-
cmdSet = append(cmdSet, '=')
78-
cmdSet = append(cmdSet, val...)
76+
cmdSet.WriteString(param)
77+
cmdSet.WriteByte('=')
78+
cmdSet.WriteString(val)
7979
}
8080
}
8181

82-
if cmdSet != nil {
83-
err = mc.exec(string(cmdSet))
82+
if cmdSet.Len() > 0 {
83+
err = mc.exec(cmdSet.String())
8484
if err != nil {
8585
return
8686
}

0 commit comments

Comments
 (0)