[ 
https://issues.apache.org/jira/browse/CALCITE-6614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mihai Budiu resolved CALCITE-6614.
----------------------------------
    Fix Version/s: 1.39.0
       Resolution: Fixed

Fixed in 
https://github.com/apache/calcite/commit/f14e944477674d987b91a4edacadb58c759eb74d
Thank you for the contribution, [~suibianwanwan33]

> InnodbFilterRule incorrectly constructs condition when creating InnodbFilter 
> -----------------------------------------------------------------------------
>
>                 Key: CALCITE-6614
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6614
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: suibianwanwan
>            Priority: Major
>             Fix For: 1.39.0
>
>
> InnodbFilter only use the pushDownCondition when it executes.
> {code:java}
> @Override public void implement(Implementor implementor) {
>   implementor.visitChild(0, getInput());
>   implementor.setIndexCondition(indexCondition);
> } {code}
> However, in InnodbFilterRule, the filter condition is constructed using the 
> entire condition, which may cause some rules to be incorrectly optimised
> {code:java}
>  RelNode convert(LogicalFilter filter, InnodbTableScan scan) {
>       final IndexCondition indexCondition =
>           translator.translateMatch(filter.getCondition());
>       InnodbFilter innodbFilter =
>           InnodbFilter.create(cluster, traitSet,
>               convert(filter.getInput(), InnodbRel.CONVENTION),
>               // wrong setting
>               filter.getCondition(), indexCondition, tableDef,
>               scan.getForceIndexName());
>       if (innodbFilter.indexCondition.canPushDown()) {
>         return LogicalFilter.create(innodbFilter,
>             RexUtil.composeConjunction(cluster.getRexBuilder(),
>                 indexCondition.getRemainderConditions()));
>       }
>       return filter;
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to