[ https://issues.apache.org/jira/browse/FLINK-5184?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15705142#comment-15705142 ]
ASF GitHub Bot commented on FLINK-5184: --------------------------------------- Github user fhueske commented on the issue: https://github.com/apache/flink/pull/2894 Thanks for fixing this bug @godfreyhe! +1 to merge > 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 > Assignee: 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)