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)

Reply via email to