From e5686a0198d4d11bfed19bf9894315eae90b126b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Tue, 14 Oct 2025 19:17:10 +0000 Subject: [PATCH 1/2] 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 --- client/stmt.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/client/stmt.go b/client/stmt.go index 30d878b55..bab79c7ba 100644 --- a/client/stmt.go +++ b/client/stmt.go @@ -265,9 +265,14 @@ func (c *Conn) Prepare(query string) (*Stmt, error) { s.params = int(binary.LittleEndian.Uint16(data[pos:])) pos += 2 - // warnings - s.warnings = int(binary.LittleEndian.Uint16(data[pos:])) - // pos += 2 + // reserved + pos += 1 + + if len(data) >= 12 { + // warnings + s.warnings = int(binary.LittleEndian.Uint16(data[pos:])) + // pos += 2 + } if s.params > 0 { if err := s.conn.readUntilEOF(); err != nil { From 0e0e4c709bf68d8bb30f80ab809a1c939c65703b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Fri, 17 Oct 2025 15:05:42 +0000 Subject: [PATCH 2/2] WarningsNum --- client/client_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/client/client_test.go b/client/client_test.go index 0d39bbc3b..7443e2877 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -269,6 +269,7 @@ func (s *clientTestSuite) testStmt_DropTable() { stmt, err := s.c.Prepare(str) require.NoError(s.T(), err) + require.Zero(s.T(), stmt.WarningsNum()) defer stmt.Close()