[
https://issues.apache.org/jira/browse/CALCITE-3192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16892865#comment-16892865
]
Zoltan Haindrich commented on CALCITE-3192:
-------------------------------------------
[[email protected]] throwing away the predicates might save this case; but may
probably not fix all cases; and the usage of this predicates is usefull; could
help further symplify cases - so I try to save it :)
I've further looked into this; and the main problem seems to be that order
relations are antisymmetric.
An expression could be only used as a predicate during an or simplification if
the relation is not antisymmetric.
In case of:
{code}
aRx or ( xRb and c )
{code}
when we use {{not(aRx)}} as a predicate; if antisymmetry applies it could
become {{xRa}}
but note that in case of {{(xRa and xRb)}} we do not know anything about the
relation of a and b.
R could be < or some other inequality operator.
I think the requirement to apply CALCITE-2247 logic is that relation in the
predicate must have "partial equvivalence" properties.
> Simplify OR incorrectly weaks condition
> ---------------------------------------
>
> Key: CALCITE-3192
> URL: https://issues.apache.org/jira/browse/CALCITE-3192
> Project: Calcite
> Issue Type: Bug
> Reporter: Jess Balint
> Priority: Major
> Fix For: 1.21.0
>
>
> RexSimplify is transforming
> * {{OR(AND(>(999, $8), =($2, 'Franklin')), <(100, $8))}}
> * to {{OR(=($2, 'Franklin'), <(100, $8))}}
> the predicates are accumulated in {{simplifyOrTerms()}} but not discarded
> when iterating the second time
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)