Skip to content

Commit 3143ff8

Browse files
committed
update
1 parent 5ad9e06 commit 3143ff8

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

client/conn.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func (c *Conn) Execute(command string, args ...interface{}) (*Result, error) {
306306
// flag set to signal the server multiple queries are executed. Handling the responses
307307
// is up to the implementation of perResultCallback.
308308
func (c *Conn) ExecuteMultiple(query string, perResultCallback ExecPerResultCallback) (*Result, error) {
309-
if err := c.writeCommandStr(COM_QUERY, query); err != nil {
309+
if err := c.exec_send(query); err != nil {
310310
return nil, errors.Trace(err)
311311
}
312312

@@ -359,7 +359,7 @@ func (c *Conn) ExecuteMultiple(query string, perResultCallback ExecPerResultCall
359359
//
360360
// ExecuteSelectStreaming should be used only for SELECT queries with a large response resultset for memory preserving.
361361
func (c *Conn) ExecuteSelectStreaming(command string, result *Result, perRowCallback SelectPerRowCallback, perResultCallback SelectPerResultCallback) error {
362-
if err := c.writeCommandStr(COM_QUERY, command); err != nil {
362+
if err := c.exec_send(command); err != nil {
363363
return errors.Trace(err)
364364
}
365365

@@ -485,9 +485,18 @@ func (c *Conn) ReadOKPacket() (*Result, error) {
485485
return c.readOK()
486486
}
487487

488+
// Send COM_QUERY and read the result
489+
func (c *Conn) exec(query string) (*Result, error) {
490+
err := c.exec_send(query)
491+
if err != nil {
492+
return nil, err
493+
}
494+
return c.readResult(false)
495+
}
496+
488497
// Sends COM_QUERY
489498
// https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query.html
490-
func (c *Conn) exec(query string) (*Result, error) {
499+
func (c *Conn) exec_send(query string) error {
491500
var buf bytes.Buffer
492501

493502
if c.includeLine {
@@ -524,15 +533,15 @@ func (c *Conn) exec(query string) (*Result, error) {
524533

525534
_, err := buf.Write(utils.StringToByteSlice(query))
526535
if err != nil {
527-
return nil, err
536+
return err
528537
}
529538

530539
if err := c.writeCommandBuf(COM_QUERY, buf.Bytes()); err != nil {
531-
return nil, errors.Trace(err)
540+
return errors.Trace(err)
532541
}
533542
c.queryAttributes = nil
534543

535-
return c.readResult(false)
544+
return nil
536545
}
537546

538547
// CapabilityString is returning a string with the names of capability flags

client/stmt.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,23 @@ func (s *Stmt) write(args ...interface{}) error {
119119
paramValues[i] = Uint64ToBytes(uint64(v))
120120
case uint8:
121121
paramTypes[i] = []byte{MYSQL_TYPE_TINY}
122-
paramFlags[i] = []byte{BINARY_FLAG}
122+
paramFlags[i] = []byte{PARAM_UNSIGNED}
123123
paramValues[i] = []byte{v}
124124
case uint16:
125125
paramTypes[i] = []byte{MYSQL_TYPE_SHORT}
126-
paramFlags[i] = []byte{BINARY_FLAG}
126+
paramFlags[i] = []byte{PARAM_UNSIGNED}
127127
paramValues[i] = Uint16ToBytes(v)
128128
case uint32:
129129
paramTypes[i] = []byte{MYSQL_TYPE_LONG}
130-
paramFlags[i] = []byte{BINARY_FLAG}
130+
paramFlags[i] = []byte{PARAM_UNSIGNED}
131131
paramValues[i] = Uint32ToBytes(v)
132132
case uint:
133133
paramTypes[i] = []byte{MYSQL_TYPE_LONGLONG}
134-
paramFlags[i] = []byte{BINARY_FLAG}
134+
paramFlags[i] = []byte{PARAM_UNSIGNED}
135135
paramValues[i] = Uint64ToBytes(uint64(v))
136136
case uint64:
137137
paramTypes[i] = []byte{MYSQL_TYPE_LONGLONG}
138-
paramFlags[i] = []byte{BINARY_FLAG}
138+
paramFlags[i] = []byte{PARAM_UNSIGNED}
139139
paramValues[i] = Uint64ToBytes(v)
140140
case bool:
141141
paramTypes[i] = []byte{MYSQL_TYPE_TINY}

mysql/const.go

+4
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ const (
178178
UNIQUE_FLAG = 65536
179179
)
180180

181+
const (
182+
PARAM_UNSIGNED = 128
183+
)
184+
181185
const (
182186
DEFAULT_ADDR = "127.0.0.1:3306"
183187
DEFAULT_IPV6_ADDR = "[::1]:3306"

0 commit comments

Comments
 (0)