You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by za...@apache.org on 2025/04/30 07:13:15 UTC

(calcite) branch main updated (cb27eed9d7 -> fcd55b9a61)

This is an automated email from the ASF dual-hosted git repository.

zabetak pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git


    from cb27eed9d7 [CALCITE-6946] Expand predicates from disjunction for inputs of Join
     new 700adce921 [CALCITE-6989] Enhance RexBuilder#makeIn to create SEARCH for ARRAY literals
     new fcd55b9a61 Rename test to mention expected result and add JIRA in Javadoc

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/calcite/rex/RexBuilder.java     |  1 +
 .../java/org/apache/calcite/rex/RexLiteral.java     |  3 +++
 .../java/org/apache/calcite/rex/RexBuilderTest.java | 21 +++++++++++++++++++++
 3 files changed, 25 insertions(+)


(calcite) 01/02: [CALCITE-6989] Enhance RexBuilder#makeIn to create SEARCH for ARRAY literals

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zabetak pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git

commit 700adce921d358f84941ab9eebc00ed6ce81f03e
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Mon Apr 14 17:15:08 2025 +0300

    [CALCITE-6989] Enhance RexBuilder#makeIn to create SEARCH for ARRAY literals
---
 .../src/main/java/org/apache/calcite/rex/RexBuilder.java |  1 +
 .../src/main/java/org/apache/calcite/rex/RexLiteral.java |  3 +++
 .../test/java/org/apache/calcite/rex/RexBuilderTest.java | 16 ++++++++++++++++
 3 files changed, 20 insertions(+)

diff --git a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
index f50abd7b74..19036f75b2 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
@@ -1874,6 +1874,7 @@ && areAssignable(arg, Arrays.asList(lower, upper))) {
       return literal.getValueAs(clazz);
 
     case ROW:
+    case ARRAY_VALUE_CONSTRUCTOR:
       final RexCall call = (RexCall) point;
       final ImmutableList.Builder<Comparable> b = ImmutableList.builder();
       for (RexNode operand : call.operands) {
diff --git a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
index 667920b11b..b83aa512a5 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
@@ -392,6 +392,7 @@ public static boolean valueMatchesType(
     case SYMBOL:
       return value instanceof Enum;
     case ROW:
+    case ARRAY:
     case MULTISET:
       return value instanceof List;
     case GEOMETRY:
@@ -748,6 +749,7 @@ private static void appendAsJava(@Nullable Comparable value, StringBuilder sb,
       break;
     case MULTISET:
     case ROW:
+    case ARRAY:
       assert value instanceof List : "value must implement List: " + value;
       @SuppressWarnings("unchecked") final List<RexLiteral> list =
           (List<RexLiteral>) castNonNull(value);
@@ -788,6 +790,7 @@ private static RexLiteral toLiteral(RelDataType type, Comparable<?> value) {
       return new RexLiteral((Comparable) fieldLiterals, type, typeName);
 
     case MULTISET:
+    case ARRAY:
       assert value instanceof List : "value must implement List: " + value;
       final List<Comparable<?>> elementValues = (List) value;
       final List<RexLiteral> elementLiterals =
diff --git a/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java b/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
index f41975262c..329d075deb 100644
--- a/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
@@ -960,6 +960,22 @@ private void checkDate(RexLiteral literal) {
     assertThat(inCall.getKind(), is(SqlKind.SEARCH));
   }
 
+  @Test void testMakeInWithArrayLiterals() {
+    RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
+    RexBuilder rexBuilder = new RexBuilder(typeFactory);
+    RelDataType intType = typeFactory.createSqlType(SqlTypeName.INTEGER);
+    RelDataType arrayIntType = typeFactory.createArrayType(intType, -1);
+    RexNode column = rexBuilder.makeInputRef(arrayIntType, 0);
+    RexNode l1 = rexBuilder.makeLiteral(ImmutableList.of(100, 200), arrayIntType, false);
+    RexNode l2 = rexBuilder.makeLiteral(ImmutableList.of(300, 400), arrayIntType, false);
+    RexNode inCall = rexBuilder.makeIn(column, ImmutableList.of(l1, l2));
+    assertThat(
+        inCall, hasToString("SEARCH($0, Sarg["
+        + "[100:INTEGER, 200:INTEGER]:INTEGER NOT NULL ARRAY, "
+        + "[300:INTEGER, 400:INTEGER]:INTEGER NOT NULL ARRAY"
+        + "]:INTEGER NOT NULL ARRAY)"));
+  }
+
   /**
    * Test case for
    * <a href="https://issues.apache.org/jira/browse/CALCITE-6608">[CALCITE-6608]


(calcite) 02/02: Rename test to mention expected result and add JIRA in Javadoc

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zabetak pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git

commit fcd55b9a61016f9270cd5a648f6f750ad86024ea
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Tue Apr 29 15:06:20 2025 +0300

    Rename test to mention expected result and add JIRA in Javadoc
---
 core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java b/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
index 329d075deb..76e35c18ed 100644
--- a/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/rex/RexBuilderTest.java
@@ -960,7 +960,12 @@ private void checkDate(RexLiteral literal) {
     assertThat(inCall.getKind(), is(SqlKind.SEARCH));
   }
 
-  @Test void testMakeInWithArrayLiterals() {
+  /**
+   * Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-6989">[CALCITE-6989]
+   * Enhance RexBuilder#makeIn to create SEARCH for ARRAY literals</a>.
+   */
+  @Test void testMakeInReturnsSearchForArrayLiterals() {
     RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
     RexBuilder rexBuilder = new RexBuilder(typeFactory);
     RelDataType intType = typeFactory.createSqlType(SqlTypeName.INTEGER);