You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/04/22 11:47:00 UTC

[jira] [Updated] (FLINK-5184) Error result of compareSerialized in RowComparator class

     [ https://issues.apache.org/jira/browse/FLINK-5184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ASF GitHub Bot updated FLINK-5184:
----------------------------------
    Labels: pull-request-available  (was: )

> 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 SQL / API
>    Affects Versions: 1.2.0
>            Reporter: godfrey he
>            Assignee: godfrey he
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.1.4, 1.2.0
>
>
> 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
(v8.3.4#803005)