JingsongLi opened a new pull request #17207:
URL: https://github.com/apache/flink/pull/17207


   Cherry-pick #16096
   
   ## What is the purpose of the change
   
   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.
   
   ```
   /**
    * 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);
   ```
   
   
   ## Brief change log
   
   - Introduce `FlinkRelMdChangeLogUpsertKeys`
   - Introduce `FlinkRelMdChangeLogUpsertKeysTest`
   
   ## Verifying this change
   
   `FlinkRelMdChangeLogUpsertKeysTest`
   
   ## Does this pull request potentially affect one of the following parts:
   
     - Dependencies (does it add or upgrade a dependency): (yes / no) no
     - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: (yes / no) no
     - The serializers: (yes / no / don't know) no
     - The runtime per-record code paths (performance sensitive): (yes / no / 
don't know) no
     - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: (yes / no / don't 
know) no
     - The S3 file system connector: (yes / no / don't know) no
   
   ## Documentation
   
     - Does this pull request introduce a new feature? (yes / no) no
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to