[CALCITE-2069] RexSimplify.removeNullabilityCast() always removes cast for 
operand with ANY type (Volodymyr Vysotskyi)

Close apache/calcite#574


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/189aad19
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/189aad19
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/189aad19

Branch: refs/heads/master
Commit: 189aad19c4f904e4dd0602fb64c65c5586f093b2
Parents: 11da17b
Author: Volodymyr Vysotskyi <[email protected]>
Authored: Tue Nov 28 17:42:25 2017 +0200
Committer: Julian Hyde <[email protected]>
Committed: Fri Dec 1 16:27:51 2017 -0800

----------------------------------------------------------------------
 .../org/apache/calcite/sql/type/SqlTypeUtil.java |  4 ----
 .../org/apache/calcite/test/RelBuilderTest.java  | 19 ++++++++++++++++++-
 2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/189aad19/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java 
b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
index 4c27f8a..9113dd8 100644
--- a/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
+++ b/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java
@@ -1110,10 +1110,6 @@ public abstract class SqlTypeUtil {
       return true;
     }
 
-    if (isAny(type1) || isAny(type2)) {
-      return true;
-    }
-
     if (type1.isNullable() == type2.isNullable()) {
       // If types have the same nullability and they weren't equal above,
       // they must be different.

http://git-wip-us.apache.org/repos/asf/calcite/blob/189aad19/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
----------------------------------------------------------------------
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 4858841..115f9ff 100644
--- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
@@ -1865,7 +1865,7 @@ public class RelBuilderTest {
    * <a 
href="https://issues.apache.org/jira/browse/CALCITE-1595";>[CALCITE-1595]
    * RelBuilder.call throws NullPointerException if argument types are
    * invalid</a>. */
-  @Test public void testTypeInferenceValidation() throws Exception {
+  @Test public void testTypeInferenceValidation() {
     final RelBuilder builder = RelBuilder.create(config().build());
     // test for a) call(operator, Iterable<RexNode>)
     final RexNode arg0 = builder.literal(0);
@@ -1971,6 +1971,23 @@ public class RelBuilderTest {
         + "  LogicalTableScan(table=[[scott, EMP]])\n";
     assertThat(str(root), is(expected));
   }
+
+  @Test public void testFilterCastAny() {
+    final RelBuilder builder = RelBuilder.create(config().build());
+    final RelDataType anyType =
+        builder.getTypeFactory().createSqlType(SqlTypeName.ANY);
+    final RelNode root =
+        builder.scan("EMP")
+            .filter(
+                builder.cast(
+                    builder.getRexBuilder().makeInputRef(anyType, 0),
+                    SqlTypeName.BOOLEAN))
+            .build();
+    final String expected = ""
+        + "LogicalFilter(condition=[CAST($0):BOOLEAN NOT NULL])\n"
+        + "  LogicalTableScan(table=[[scott, EMP]])\n";
+    assertThat(str(root), is(expected));
+  }
 }
 
 // End RelBuilderTest.java

Reply via email to