flink
flink copied to clipboard
[FLINK-33996][table-planner]: Avoid merging projects if leads to redundant computation
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)
CI report:
- b155d7d66139ff41b0a30efc0fab57edde3557e7 Azure: SUCCESS
Bot commands
The @flinkbot bot supports the following commands:-
@flinkbot run azure
re-run the last Azure build
Hi @hackergin @LadyForest could you please review this PR in your available time? Thanks