Feng>Maybe we can go a step further to provide configuration interfaces,
which
Feng>enable users to determine whether to enable a specified optimization

It might be OK to add kill-flags so added features can be disabled for
debugging purposes.
However, I would prefer to avoid adding options that will be used in
non-default values in production systems.

For instance, I think https://github.com/apache/calcite/pull/1703 (Reorder
RexCall predicates to a canonical form)
is ready for merge.

It improves planning performance across many tests, and it a small
patch: +255 -84.

The patch is an improvement, there are very tiny drawbacks, so I'm inclined
to commit the change.
Just in case you did not know
RelOptUtil#toString(org.apache.calcite.rel.RelNode) output is preserved by
the patch.
In other words, all the tests that use RelOptUtil#toString for dumping
plans will likely work as-is.

I have added a system property calcite.enable.rexnode.digest.normalize
(default=true) so the feature can be disabled
if someone thinks it causes issues (e.g. if there's a suspicion it slows
down the planning for some reason).
However, the full Calcite suite is executed with the default value only, so
I would not recommend using normalize=false in production.

Vladimir

Reply via email to