suibianwanwan created CALCITE-6614: -------------------------------------- Summary: 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
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)