[
https://issues.apache.org/jira/browse/FLINK-22901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jingsong Lee closed FLINK-22901.
--------------------------------
Resolution: Fixed
Fixed via:
master: 59578126533484923effd91e2b48a39dda6ffc1a
> Introduce getChangeLogUpsertKeys in FlinkRelMetadataQuery
> ---------------------------------------------------------
>
> Key: FLINK-22901
> URL: https://issues.apache.org/jira/browse/FLINK-22901
> Project: Flink
> Issue Type: Bug
> 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)