In CALCITE-2450, we proposed a change to normalize the RexNode, and there is a discussion[1], the change is in very early phrase and the normalization pattern is unstable.
There is actually no common consensus about what a form (or pattern) a desired normalization should be: • People may have different requests in different contexts. • Different downstream projects may also have different requests The problem becomes critical after CALCITE-3786 because there are more cases be normalized (about 50+ plan changes). In CALCITE-3786, we move the normalization to constructor because the digest equals and object equals should be equivalent for the RexCalls. The downstream project like Apache Flink would have much more cases with normalized plans. But actually, the normalization gains little. I think other downstream projects have similar situation. I would suggest to default disable the normalization until it is “stable” enough, at least, after we have a consensus about what is a normalized pattern should be, there is an issue [3] already and we can have more discussion based on that. Appreciate for your suggestions, thanks in advance ~ [1] https://lists.apache.org/x/thread.html/54bf3ed733eb7e725ce3ea397334aad8f1323ead13e450b1753b1521@%3Cdev.calcite.apache.org%3E [2] https://issues.apache.org/jira/browse/CALCITE-2450 [3] https://issues.apache.org/jira/browse/CALCITE-4073 Best, Danny Chan