[ 
https://issues.apache.org/jira/browse/FLINK-19446?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17204433#comment-17204433
 ] 

Jark Wu edited comment on FLINK-19446 at 9/30/20, 4:03 AM:
-----------------------------------------------------------

That's true. I think we need to know whether this is a "changed" field. 
Depending on whether field is null is not enough. Do you have any idea [~tinny]?


was (Author: jark):
That's true. I think we need to know whether this is a "changed" field. 
Depending on whether field is null is not enough.

> canal-json has a situation that -U and +U are equal, when updating the null 
> field to be non-null
> ------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-19446
>                 URL: https://issues.apache.org/jira/browse/FLINK-19446
>             Project: Flink
>          Issue Type: Bug
>          Components: Formats (JSON, Avro, Parquet, ORC, SequenceFile)
>    Affects Versions: 1.11.1
>            Reporter: Zhengchao Shi
>            Priority: Major
>             Fix For: 1.12.0
>
>
> line 118 in CanalJsonDeserializationSchema#deserialize method:
> {code:java}
> GenericRowData after = (GenericRowData) data.getRow(i, fieldCount);
> GenericRowData before = (GenericRowData) old.getRow(i, fieldCount);
> for (int f = 0; f < fieldCount; f++) {
>       if (before.isNullAt(f)) {
>               // not null fields in "old" (before) means the fields are 
> changed
>               // null/empty fields in "old" (before) means the fields are not 
> changed
>               // so we just copy the not changed fields into before
>               before.setField(f, after.getField(f));
>       }
> }
> before.setRowKind(RowKind.UPDATE_BEFORE);
> after.setRowKind(RowKind.UPDATE_AFTER);
> {code}
> if a field is null before update,it will cause -U and +U to be equal



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to