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

Jingsong Lee reopened FLINK-22901:
----------------------------------

re-open for 1.13

> Introduce getChangeLogUpsertKeys in FlinkRelMetadataQuery
> ---------------------------------------------------------
>
>                 Key: FLINK-22901
>                 URL: https://issues.apache.org/jira/browse/FLINK-22901
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / Planner
>            Reporter: Jingsong Lee
>            Assignee: Jingsong Lee
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.14.0
>
>
> For fix FLINK-20374, we need to resolve streaming computation disorder. we 
> need to introduce a change log upsert keys, this is not unique keys.
>  
> {code:java}
> /**
>  * Determines the set of change log upsert minimal keys for this expression. 
> A key is
>  * represented as an {@link org.apache.calcite.util.ImmutableBitSet}, where 
> each bit position
>  * represents a 0-based output column ordinal.
>  *
>  * <p>Different from the unique keys: In distributed streaming computing, one 
> record may be
>  * divided into RowKind.UPDATE_BEFORE and RowKind.UPDATE_AFTER. If a key 
> changing join is
>  * connected downstream, the two records will be divided into different 
> tasks, resulting in
>  * disorder. In this case, the downstream cannot rely on the order of the 
> original key. So in
>  * this case, it has unique keys in the traditional sense, but it doesn't 
> have change log upsert
>  * keys.
>  *
>  * @return set of keys, or null if this information cannot be determined 
> (whereas empty set
>  *     indicates definitely no keys at all)
>  */
> public Set<ImmutableBitSet> getChangeLogUpsertKeys(RelNode rel);
> {code}



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

Reply via email to