[
https://issues.apache.org/jira/browse/CALCITE-4073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17159695#comment-17159695
]
Julian Hyde commented on CALCITE-4073:
--------------------------------------
Good grief, whose idea was it to redefine RexNode.equals to attempt some kind
of mathematical proof? RexNode should be a dumb data structure. Smarts should
be elsewhere. We're going off the rails here. Let's have some discussions on
dev@ before we consider any more PRs to "improve" RexNode.
> Add a new component RexNormalize for more effect rex nodes normalization
> ------------------------------------------------------------------------
>
> Key: CALCITE-4073
> URL: https://issues.apache.org/jira/browse/CALCITE-4073
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.24.0
> Reporter: Danny Chen
> Assignee: Danny Chen
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.24.0
>
> Time Spent: 6h 10m
> Remaining Estimate: 0h
>
> Currently, we only have simple normalization such as:
> $2 = $1 => $1 = $2
> $2 > $1 => $1 < $2
> we can extend the logic to more like:
> - put the complex predicates behind, like OR(OR(udf($1), $2), $3) => OR($3,
> OR(udf($1), $2))
> - put the udf operand behind, like OR(udf($1), $2) => OR($2, udf($1))
> - put the local variables that appears more frequently in the front, which is
> more user-friendly to code generation because the variable can be cached and
> reused.
> Also note that, we should allows flexible configuration for switch this
> function on/off(not a system calcite property now) for downstream users and
> projects(because the normalization may have some performance trade-off).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)