flink icon indicating copy to clipboard operation
flink copied to clipboard

[FLINK-33996][table-planner]: Avoid merging projects if leads to redundant computation

Open jeyhunkarimov opened this issue 1 year ago • 2 comments

What is the purpose of the change

The current optimizer/planner merges two Projection/Calc nodes if they are deterministic. In some scenarios, this check is not enough. Especially, when the top Projection/Calc node uses the already computed value from the bottom Project/Calc node, merging the two of them might lead to redundant computation (recomputing the same expressions several times). In fact, our tests contained many tests that computed the same expression several times.

Brief change log

  • Extend the mergeable method and add an additional check
  • Add tests

Verifying this change

This change added tests to CalcMergeTestBase

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)

jeyhunkarimov avatar Jan 05 '24 16:01 jeyhunkarimov

CI report:

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

flinkbot avatar Jan 05 '24 16:01 flinkbot

Hi @hackergin @LadyForest could you please review this PR in your available time? Thanks

jeyhunkarimov avatar Jan 06 '24 09:01 jeyhunkarimov