[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jira] [Created] (CALCITE-2449) RexSimplify overhaul

Vladimir Sitnikov created CALCITE-2449:

             Summary: RexSimplify overhaul
                 Key: CALCITE-2449
                 URL: https://issues.apache.org/jira/browse/CALCITE-2449
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.17.0
            Reporter: Vladimir Sitnikov
            Assignee: Julian Hyde

I would like to update \{{RexSimplify}} as follows:

1) Avoid multiple passes over the same expressions. Current logic calls "simplify" in multiple places, and it might cause simplification of the same tree again and again.

2) I would like to rework \{{unknownAsFalse}} into support for \{{IS TRUE}}. Current support for \{{unknownAsFalse}} is hard to follow, and it looks like IS_TRUE(expr) allows for the same optimizations. In other words, "unknownAsFalse" would become a silent adding of IS_TRUE on top of the input expression. Then rules like \{{OR(x, y) IS TRUE ==> x IS TRUE or y IS TRUE}} would push \{{IS TRUE}} downstream.

3) I would like to "reorder" predicates in a defined order (e.g. rewrite \{{5=x ==> x=5}} or \{{(x=1 or y=2) and (z=3)}} ==> \{{(z=3) and (x=1 or y=2)}}. It looks like adding \{{int nodeCount;}} to \{{RexNode}} would be helpful to rank rex nodes.

4) There are other bugs identified by expression fuzzer (like {{and(null, not(null))}} conversion to true and so on)

This message was sent by Atlassian JIRA