Handles parameters set in DSN after the connection is established
()
| 104 | |
| 105 | // Handles parameters set in DSN after the connection is established |
| 106 | func (mc *mysqlConn) handleParams() (err error) { |
| 107 | var cmdSet strings.Builder |
| 108 | |
| 109 | for param, val := range mc.cfg.Params { |
| 110 | if cmdSet.Len() == 0 { |
| 111 | // Heuristic: 29 chars for each other key=value to reduce reallocations |
| 112 | cmdSet.Grow(4 + len(param) + 3 + len(val) + 30*(len(mc.cfg.Params)-1)) |
| 113 | cmdSet.WriteString("SET ") |
| 114 | } else { |
| 115 | cmdSet.WriteString(", ") |
| 116 | } |
| 117 | cmdSet.WriteString(param) |
| 118 | cmdSet.WriteString(" = ") |
| 119 | cmdSet.WriteString(val) |
| 120 | } |
| 121 | |
| 122 | if cmdSet.Len() > 0 { |
| 123 | err = mc.exec(cmdSet.String()) |
| 124 | } |
| 125 | |
| 126 | return |
| 127 | } |
| 128 | |
| 129 | // markBadConn replaces errBadConnNoWrite with driver.ErrBadConn. |
| 130 | // This function is used to return driver.ErrBadConn only when safe to retry. |