Skip to content

Commit ccdef72

Browse files
committed
stmt.Exec() should cache metadata
1 parent 90db683 commit ccdef72

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

statement.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,22 @@ func (stmt *mysqlStmt) Exec(args []driver.Value) (driver.Result, error) {
6565
handleOk := stmt.mc.clearResult()
6666

6767
// Read Result
68-
resLen, _, err := handleOk.readResultSetHeaderPacket()
68+
resLen, metadataFollows, err := handleOk.readResultSetHeaderPacket()
6969
if err != nil {
7070
return nil, err
7171
}
7272

7373
if resLen > 0 {
7474
// Columns
75-
if err = mc.skipColumns(resLen); err != nil {
76-
return nil, err
75+
if metadataFollows && stmt.mc.extCapabilities&clientCacheMetadata != 0 {
76+
// we can not skip column metadata because next stmt.Query() may use it.
77+
if stmt.columns, err = mc.readColumns(resLen); err != nil {
78+
return nil, err
79+
}
80+
} else {
81+
if err = mc.skipColumns(resLen); err != nil {
82+
return nil, err
83+
}
7784
}
7885

7986
// Rows

0 commit comments

Comments
 (0)