Skip to content

Commit

Permalink
server: make long-data type no longer check nullBitmap (#7573)
Browse files Browse the repository at this point in the history
  • Loading branch information
lysu authored Sep 5, 2018
1 parent 74a6ddd commit 4538bcd
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions server/conn_stmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,15 +246,23 @@ func parseStmtArgs(args []interface{}, boundParams [][]byte, nullBitmap, paramTy
var isNull bool

for i := 0; i < len(args); i++ {
if nullBitmap[i>>3]&(1<<(uint(i)%8)) > 0 {
args[i] = nil
continue
}
// if params had received via ComStmtSendLongData, use them directly.
// ref https://dev.mysql.com/doc/internals/en/com-stmt-send-long-data.html
// see clientConn#handleStmtSendLongData
if boundParams[i] != nil {
args[i] = boundParams[i]
continue
}

// check nullBitMap to determine the NULL arguments.
// ref https://dev.mysql.com/doc/internals/en/com-stmt-execute.html
// notice: some client(e.g. mariadb) will set nullBitMap even if data had be sent via ComStmtSendLongData,
// so this check need place after boundParam's check.
if nullBitmap[i>>3]&(1<<(uint(i)%8)) > 0 {
args[i] = nil
continue
}

if (i<<1)+1 >= len(paramTypes) {
return mysql.ErrMalformPacket
}
Expand Down

0 comments on commit 4538bcd

Please sign in to comment.