distsql: return zeroLenData if data length is nil. (#2965)

TiKV doesn't return RowsData when RowsData length is 0, so we sliced a nil data when
data length is zero.
This can only be reproduced on TiKV, so no unit test is added.
This commit is contained in:
Ewan Chou
2017-03-30 15:54:27 +08:00
committed by Han Fei
parent e068663cdc
commit aa8298ef6e

View File

@ -139,6 +139,8 @@ func (pr *partialResult) unmarshal(resultSubset []byte) error {
return nil
}
var zeroLenData = make([]byte, 0)
// Next returns the next row of the sub result.
// If no more row to return, data would be nil.
func (pr *partialResult) Next() (handle int64, data []byte, err error) {
@ -148,6 +150,10 @@ func (pr *partialResult) Next() (handle int64, data []byte, err error) {
}
rowMeta := chunk.RowsMeta[pr.cursor]
data = chunk.RowsData[pr.dataOffset : pr.dataOffset+rowMeta.Length]
if data == nil {
// The caller checks if data is nil to determine finished.
data = zeroLenData
}
pr.dataOffset += rowMeta.Length
handle = rowMeta.Handle
pr.cursor++