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

Reply via email to