flink icon indicating copy to clipboard operation
flink copied to clipboard

[FLINK-35037][table-planner]Optimize uniqueKeys and upsertKeys inference of windows with ROW_NUMBER.

Open RubyChou opened this issue 1 year ago • 1 comments

What is the purpose of the change

The PR aims to add valid uniqueKeys and uniqueKeys candidates for windows with ROW_NUMBER. The candidates are pairs of partition by keys and field of ROW_NUMBER for each window group.

Brief change log

  • Add getUniqueKeysOfWindowGroup function to resolve uniqueKeys candidates for window group who contains ROW_NUMBER.
  • Change uniqueKeys/UpsertKeys/ColumnUniqueness inference logic for relNodes of Window, BatchPhysicalOverAggregate and StreamPhysicalOverAggregate types.
  • Test the logic in corresponding tests, like FlinkRelMdColumnUniquenessTest
  • Fix wrong initialization of window groups in FlinkRelMdHandlerTestBase.

Verifying this change

This change added tests and can be verified as follows:

  • *Added tests in FlinkRelMdColumnUniquenessTest, FlinkRelMdUniqueKeysTest and FlinkRelMdUpsertKeysTest to check if partition by keys and field of ROW_NUMBER are candidates. *

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): (no)
  • The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
  • The serializers: (no)
  • The runtime per-record code paths (performance sensitive): (no)
  • Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
  • The S3 file system connector: (no)

Documentation

  • Does this pull request introduce a new feature? (no)
  • If yes, how is the feature documented? (not applicable)

RubyChou avatar Apr 09 '24 08:04 RubyChou

CI report:

  • 47e9fe2fbdc2a0ebd9084a2d4acdce12fd917d47 Azure: SUCCESS
Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

flinkbot avatar Apr 09 '24 08:04 flinkbot