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

Jingsong Lee updated FLINK-22901:
---------------------------------
    Description: 
{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}

  was:
{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}


> 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
>             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)

Reply via email to