Skip to content

Commit dec4081

Browse files
authored
fix parsing prepare response (#1057)
* fix parsing prepare response https://dev.mysql.com/doc/dev/mysql-server/9.3.0/page_protocol_com_stmt_prepare.html warnings is optional from server, & is preceded by a reserved byte * WarningsNum
1 parent 7545647 commit dec4081

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

client/client_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ func (s *clientTestSuite) testStmt_DropTable() {
269269

270270
stmt, err := s.c.Prepare(str)
271271
require.NoError(s.T(), err)
272+
require.Zero(s.T(), stmt.WarningsNum())
272273

273274
defer stmt.Close()
274275

client/stmt.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,14 @@ func (c *Conn) Prepare(query string) (*Stmt, error) {
265265
s.params = int(binary.LittleEndian.Uint16(data[pos:]))
266266
pos += 2
267267

268-
// warnings
269-
s.warnings = int(binary.LittleEndian.Uint16(data[pos:]))
270-
// pos += 2
268+
// reserved
269+
pos += 1
270+
271+
if len(data) >= 12 {
272+
// warnings
273+
s.warnings = int(binary.LittleEndian.Uint16(data[pos:]))
274+
// pos += 2
275+
}
271276

272277
if s.params > 0 {
273278
if err := s.conn.readUntilEOF(); err != nil {

0 commit comments

Comments
 (0)