This is an automated email from the ASF dual-hosted git repository.
vozerov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new d81c0e057 [CALCITE-5083] In RelBuilder.project_, do not unwrap SARGs
d81c0e057 is described below
commit d81c0e057b46969f0887c272b01ece60f23936a1
Author: Vladimir Ozerov <[email protected]>
AuthorDate: Mon Apr 4 22:38:53 2022 +0300
[CALCITE-5083] In RelBuilder.project_, do not unwrap SARGs
---
.../main/java/org/apache/calcite/tools/RelBuilder.java | 7 +------
.../calcite/test/MaterializedViewRelOptRulesTest.java | 8 ++++----
.../java/org/apache/calcite/test/RelBuilderTest.java | 18 ++++++++++++++++++
3 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
index 1bcacf3f6..f141968a1 100644
--- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
+++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
@@ -1940,13 +1940,8 @@ public class RelBuilder {
// Simplify expressions.
if (config.simplify()) {
- final RexShuttle shuttle =
- RexUtil.searchShuttle(getRexBuilder(), null, 2);
for (int i = 0; i < nodeList.size(); i++) {
- final RexNode node0 = nodeList.get(i);
- final RexNode node1 = simplifier.simplifyPreservingType(node0);
- final RexNode node2 = node1.accept(shuttle);
- nodeList.set(i, node2);
+ nodeList.set(i, simplifier.simplifyPreservingType(nodeList.get(i)));
}
}
diff --git
a/core/src/test/java/org/apache/calcite/test/MaterializedViewRelOptRulesTest.java
b/core/src/test/java/org/apache/calcite/test/MaterializedViewRelOptRulesTest.java
index 0dbf876c8..ccbb85141 100644
---
a/core/src/test/java/org/apache/calcite/test/MaterializedViewRelOptRulesTest.java
+++
b/core/src/test/java/org/apache/calcite/test/MaterializedViewRelOptRulesTest.java
@@ -1058,8 +1058,8 @@ class MaterializedViewRelOptRulesTest {
+ " where s.\"store_id\" = 1")
.withDefaultSchemaSpec(CalciteAssert.SchemaSpec.JDBC_FOODMART)
.checkingThatResultContains(""
- + "EnumerableCalc(expr#0..7=[{inputs}], expr#8=[1],
expr#9=[>=($t1, $t8)],"
- + " expr#10=[3], expr#11=[<=($t1, $t10)], expr#12=[AND($t9,
$t11)], $f0=[$t12])\n"
+ + "EnumerableCalc(expr#0..7=[{inputs}], expr#8=[Sarg[[1..3]]], "
+ + "expr#9=[SEARCH($t1, $t8)], $f0=[$t9])\n"
+ " EnumerableTableScan(table=[[foodmart, MV0]])")
.ok();
}
@@ -1075,8 +1075,8 @@ class MaterializedViewRelOptRulesTest {
+ " where s.\"store_id\" = 1")
.withDefaultSchemaSpec(CalciteAssert.SchemaSpec.JDBC_FOODMART)
.checkingThatResultContains(""
- + "EnumerableCalc(expr#0..17=[{inputs}], expr#18=[1],
expr#19=[>=($t8, $t18)], "
- + "expr#20=[3], expr#21=[<=($t8, $t20)], expr#22=[AND($t19,
$t21)], $f0=[$t22])\n"
+ + "EnumerableCalc(expr#0..17=[{inputs}], expr#18=[Sarg[[1..3]]], "
+ + "expr#19=[SEARCH($t8, $t18)], $f0=[$t19])\n"
+ " EnumerableTableScan(table=[[foodmart, MV0]])")
.ok();
}
diff --git a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
index 8cce18d76..5851dcbfe 100644
--- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
@@ -3059,6 +3059,24 @@ public class RelBuilderTest {
assertThat(ex.getMessage(), allOf(containsString("Expression"),
containsString("not found")));
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-5083">[CALCITE-5083]
+ * In RelBuilder.project_, do not unwrap SARGs</a>. */
+ @Test void testProjectWithSarg() {
+ final RelBuilder builder = RelBuilder.create(config().build());
+ RelNode root =
+ builder.scan("EMP")
+ .project(
+ builder.between(
+ builder.field("DEPTNO"),
+ builder.literal(20),
+ builder.literal(30)))
+ .build();
+ final String expected = "LogicalProject($f0=[SEARCH($7,
Sarg[[20..30]])])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
+ assertThat(root, hasTree(expected));
+ }
+
/** Test case for
* <a
href="https://issues.apache.org/jira/browse/CALCITE-4409">[CALCITE-4409]
* Improve exception when RelBuilder tries to create a field on a non-struct
expression</a>. */