[ https://issues.apache.org/jira/browse/FLINK-22901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nico Kruber updated FLINK-22901: -------------------------------- Parent: FLINK-20374 Issue Type: Sub-task (was: Bug) > 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)