Jingsong Lee created FLINK-22901: ------------------------------------ Summary: Introduce getChangeLogUpsertKeys in FlinkRelMetadataQuery Key: FLINK-22901 URL: https://issues.apache.org/jira/browse/FLINK-22901 Project: Flink Issue Type: Improvement Components: Table SQL / Planner Reporter: Jingsong Lee Assignee: Jingsong Lee Fix For: 1.14.0
{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)