godfrey he created FLINK-5184:
---------------------------------
Summary: Error result of compareSerialized in RowComparator class
Key: FLINK-5184
URL: https://issues.apache.org/jira/browse/FLINK-5184
Project: Flink
Issue Type: Bug
Components: Table API & SQL
Affects Versions: 1.2.0
Reporter: godfrey he
RowSerializer will write null mask for all fields in a row before serialize row
data to DataOutputView.
{code:title=RowSerializer.scala|borderStyle=solid}
override def serialize(value: Row, target: DataOutputView) {
val len = fieldSerializers.length
if (value.productArity != len) {
throw new RuntimeException("Row arity of value does not match
serializers.")
}
// write a null mask
writeNullMask(len, value, target)
......
}
{code}
RowComparator will deserialize a row data from DataInputView when call
compareSerialized method. However, the first parameter value of
readIntoNullMask method is wrong, which should be the count of all fields,
rather than the length of serializers (to deserialize the first n fields for
comparison).
{code:title=RowComparator.scala|borderStyle=solid}
override def compareSerialized(firstSource: DataInputView, secondSource:
DataInputView): Int = {
val len = serializers.length
val keyLen = keyPositions.length
readIntoNullMask(len, firstSource, nullMask1)
readIntoNullMask(len, secondSource, nullMask2)
......
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)