This is an automated email from the ASF dual-hosted git repository. mbudiu pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 56f47eef5c12098d92f644ee917da2423ee3627e Author: suibianwanwan <[email protected]> AuthorDate: Mon Oct 7 16:38:19 2024 +0800 [CALCITE-6614] InnodbFilterRule incorrectly constructs condition when creating InnodbFilter --- .../src/main/java/org/apache/calcite/adapter/innodb/InnodbRules.java | 5 ++++- .../apache/calcite/adapter/innodb/InnodbToEnumerableConverter.java | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbRules.java b/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbRules.java index 8c66c0b4b6..2b92a6e664 100644 --- a/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbRules.java +++ b/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbRules.java @@ -184,10 +184,13 @@ public class InnodbRules { final IndexCondition indexCondition = translator.translateMatch(filter.getCondition()); + RexNode condition = + RexUtil.composeConjunction(cluster.getRexBuilder(), + indexCondition.getPushDownConditions()); InnodbFilter innodbFilter = InnodbFilter.create(cluster, traitSet, convert(filter.getInput(), InnodbRel.CONVENTION), - filter.getCondition(), indexCondition, tableDef, + condition, indexCondition, tableDef, scan.getForceIndexName()); // if some conditions can be pushed down, we left the remainder conditions diff --git a/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbToEnumerableConverter.java b/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbToEnumerableConverter.java index 858ddbb3a0..a30273ac41 100644 --- a/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbToEnumerableConverter.java +++ b/innodb/src/main/java/org/apache/calcite/adapter/innodb/InnodbToEnumerableConverter.java @@ -73,8 +73,7 @@ public class InnodbToEnumerableConverter extends ConverterImpl @Override public @Nullable RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) { - final RelOptCost cost = requireNonNull(super.computeSelfCost(planner, mq)); - return cost.multiplyBy(.1); + return requireNonNull(super.computeSelfCost(planner, mq)); } static List<String> innodbFieldNames(final RelDataType rowType) {
