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 d6e4cc437fa92c363dfbb66916a4227ef93c430e
Author: Mihai Budiu <[email protected]>
AuthorDate: Wed Jan 8 13:02:00 2025 -0800

    [CALCITE-6770] Preserve column names when casts are inserted in projects
    
    Signed-off-by: Mihai Budiu <[email protected]>
---
 .../validate/implicit/AbstractTypeCoercion.java    |  8 +++++-
 .../org/apache/calcite/test/JdbcAdapterTest.java   |  4 +--
 .../apache/calcite/test/SqlToRelConverterTest.java |  9 +++++++
 .../org/apache/calcite/test/HepPlannerTest.xml     | 16 ++++++------
 .../org/apache/calcite/test/RelOptRulesTest.xml    |  8 +++---
 .../apache/calcite/test/SqlToRelConverterTest.xml  | 30 ++++++++++++++++------
 .../calcite/test/TypeCoercionConverterTest.xml     |  2 +-
 core/src/test/resources/sql/sub-query.iq           | 16 ++++++------
 8 files changed, 61 insertions(+), 32 deletions(-)

diff --git 
a/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
 
b/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
index c77cf0befe..5de65959b5 100644
--- 
a/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
+++ 
b/core/src/main/java/org/apache/calcite/sql/validate/implicit/AbstractTypeCoercion.java
@@ -44,6 +44,7 @@ import org.apache.calcite.sql.type.SqlTypeUtil;
 import org.apache.calcite.sql.validate.SqlValidator;
 import org.apache.calcite.sql.validate.SqlValidatorNamespace;
 import org.apache.calcite.sql.validate.SqlValidatorScope;
+import org.apache.calcite.sql.validate.SqlValidatorUtil;
 import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
@@ -212,7 +213,12 @@ public abstract class AbstractTypeCoercion implements 
TypeCoercion {
       return false;
     }
     RelDataType targetType3 = syncAttributes(validator.deriveType(scope, 
node), targetType);
-    final SqlNode node3 = castTo(node, targetType3);
+    SqlNode node3 = castTo(node, targetType3);
+    if (node.getKind() == SqlKind.IDENTIFIER) {
+      SqlIdentifier id = (SqlIdentifier) node;
+      String name = id.getComponent(id.names.size() - 1).getSimple();
+      node3 = SqlValidatorUtil.addAlias(node3, name);
+    }
     nodeList.set(index, node3);
     updateInferredType(node3, targetType3);
     return true;
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java 
b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
index 7a35870d12..9e604b8031 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
@@ -127,7 +127,7 @@ class JdbcAdapterTest {
             + "      JdbcFilter(condition=[<($0, 10)])\n"
             + "        JdbcTableScan(table=[[foodmart, store]])\n"
             + "  JdbcToEnumerableConverter\n"
-            + "    JdbcProject(EXPR$0=[CAST($1):VARCHAR(30)])\n"
+            + "    JdbcProject(ENAME=[CAST($1):VARCHAR(30)])\n"
             + "      JdbcFilter(condition=[>(CAST($0):INTEGER NOT NULL, 
10)])\n"
             + "        JdbcTableScan(table=[[SCOTT, EMP]])")
         .runs()
@@ -135,7 +135,7 @@ class JdbcAdapterTest {
         .planHasSql("SELECT \"store_name\"\n"
                 + "FROM \"foodmart\".\"store\"\n"
                 + "WHERE \"store_id\" < 10")
-        .planHasSql("SELECT CAST(\"ENAME\" AS VARCHAR(30))\n"
+        .planHasSql("SELECT CAST(\"ENAME\" AS VARCHAR(30)) AS \"ENAME\"\n"
             + "FROM \"SCOTT\".\"EMP\"\n"
             + "WHERE CAST(\"EMPNO\" AS INTEGER) > 10");
   }
diff --git 
a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java 
b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
index f2a7cbb911..2981be81d4 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
@@ -257,6 +257,15 @@ class SqlToRelConverterTest extends SqlToRelTestBase {
     sql(sql).ok();
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-6770";>[CALCITE-6770]
+   * Preserve column names when casts are inserted in projects</a>. */
+  @Test void testCastNames() {
+    final String sql = "SELECT * FROM (SELECT empno, 'x' AS X FROM emp) "
+        + "UNION ALL (SELECT empno, 'xx' AS X from emp)";
+    sql(sql).ok();
+  }
+
   /** Test case for
    * <a href="https://issues.apache.org/jira/browse/CALCITE-245";>[CALCITE-245]
    * Off-by-one translation of ON clause of JOIN</a>. */
diff --git a/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml 
b/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
index 58c63851b8..ce092dcedc 100644
--- a/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
@@ -54,7 +54,7 @@ LogicalCalc(expr#0..1=[{inputs}], expr#2=[UPPER($t1)], 
expr#3=[20], expr#4=[=($t
       <![CDATA[
 LogicalUnion(all=[false])
   LogicalUnion(all=[false])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
     LogicalProject(ENAME=[$1])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -67,7 +67,7 @@ LogicalUnion(all=[false])
 LogicalUnion(all=[false])
   LogicalAggregate(group=[{0}])
     LogicalUnion(all=[true])
-      LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+      LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
         LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
       LogicalProject(ENAME=[$1])
         LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -84,7 +84,7 @@ LogicalUnion(all=[false])
       <![CDATA[
 LogicalUnion(all=[false])
   LogicalUnion(all=[false])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
     LogicalProject(ENAME=[$1])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -97,7 +97,7 @@ LogicalUnion(all=[false])
 LogicalAggregate(group=[{0}])
   LogicalUnion(all=[true])
     LogicalUnion(all=[false])
-      LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+      LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
         LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
       LogicalProject(ENAME=[$1])
         LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -114,7 +114,7 @@ LogicalAggregate(group=[{0}])
       <![CDATA[
 LogicalUnion(all=[false])
   LogicalUnion(all=[false])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
     LogicalProject(ENAME=[$1])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -128,7 +128,7 @@ LogicalAggregate(group=[{0}])
   LogicalUnion(all=[true])
     LogicalAggregate(group=[{0}])
       LogicalUnion(all=[true])
-        LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+        LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
           LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
         LogicalProject(ENAME=[$1])
           LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -227,11 +227,11 @@ intersect (select fname from customer.contact)]]>
       <![CDATA[
 LogicalIntersect(all=[false])
   LogicalUnion(all=[false])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
     LogicalProject(ENAME=[$1])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-  LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL])
+  LogicalProject(FNAME=[CAST($1):VARCHAR(20) NOT NULL])
     LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT]])
 ]]>
     </Resource>
diff --git 
a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml 
b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
index 1b2b895032..5e8739f5df 100644
--- a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
@@ -17113,9 +17113,9 @@ from (values (5)) as t(y)]]>
     <Resource name="planBefore">
       <![CDATA[
 LogicalUnion(all=[false])
-  LogicalProject(EXPR$0=[CAST($0):DECIMAL(11, 1) NOT NULL])
+  LogicalProject(X=[CAST($0):DECIMAL(11, 1) NOT NULL])
     LogicalValues(tuples=[[{ 5.0 }]])
-  LogicalProject(EXPR$0=[CAST($0):DECIMAL(11, 1) NOT NULL])
+  LogicalProject(Y=[CAST($0):DECIMAL(11, 1) NOT NULL])
     LogicalValues(tuples=[[{ 5 }]])
 ]]>
     </Resource>
@@ -17205,9 +17205,9 @@ from (values (5)) as t(y)]]>
     <Resource name="planBefore">
       <![CDATA[
 LogicalUnion(all=[true])
-  LogicalProject(EXPR$0=[CAST($0):DECIMAL(11, 1) NOT NULL])
+  LogicalProject(X=[CAST($0):DECIMAL(11, 1) NOT NULL])
     LogicalValues(tuples=[[{ 5.0 }]])
-  LogicalProject(EXPR$0=[CAST($0):DECIMAL(11, 1) NOT NULL])
+  LogicalProject(Y=[CAST($0):DECIMAL(11, 1) NOT NULL])
     LogicalValues(tuples=[[{ 5 }]])
 ]]>
     </Resource>
diff --git 
a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml 
b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
index 35baf36dcd..b50f1e56f4 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -615,6 +615,20 @@ GROUP BY GROUPING SETS (
 LogicalAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}]])
   LogicalProject(EMPNO=[$0], EXPR$1=[CASE(SEARCH($1, Sarg['Eric':VARCHAR(20), 
'Fred':VARCHAR(20)]:VARCHAR(20)), 'Manager', 'Other  ')])
     LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+]]>
+    </Resource>
+  </TestCase>
+  <TestCase name="testCastNames">
+    <Resource name="sql">
+      <![CDATA[SELECT * FROM (SELECT empno, 'x' AS X FROM emp) UNION ALL 
(SELECT empno, 'xx' AS X from emp)]]>
+    </Resource>
+    <Resource name="plan">
+      <![CDATA[
+LogicalUnion(all=[true])
+  LogicalProject(EMPNO=[$0], X=['x '])
+    LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+  LogicalProject(EMPNO=[$0], X=['xx'])
+    LogicalTableScan(table=[[CATALOG, SALES, EMP]])
 ]]>
     </Resource>
   </TestCase>
@@ -2969,7 +2983,7 @@ where cast(deptno + 20 as bigint) in (select deptno from 
dept)]]>
       <![CDATA[
 LogicalProject(DEPTNO=[$0], NAME=[$1])
   LogicalFilter(condition=[IN(CAST(+($0, 20)):BIGINT NOT NULL, {
-LogicalProject(EXPR$0=[CAST($0):BIGINT NOT NULL])
+LogicalProject(DEPTNO=[CAST($0):BIGINT NOT NULL])
   LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 })])
     LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
@@ -6461,9 +6475,9 @@ QUALIFY RANK() OVER (PARTITION BY ename
       <![CDATA[
 LogicalTableModify(table=[[CATALOG, SALES, DEPT]], operation=[INSERT], 
flattened=[true])
   LogicalAggregate(group=[{0, 1}])
-    LogicalProject(EMPNO=[$0], EXPR$1=[$1])
+    LogicalProject(EMPNO=[$0], ENAME=[$1])
       LogicalFilter(condition=[$2])
-        LogicalProject(EMPNO=[$0], EXPR$1=[CAST($1):VARCHAR(10) NOT NULL], 
QualifyExpression=[=(RANK() OVER (PARTITION BY $1 ORDER BY $8 DESC), 1)])
+        LogicalProject(EMPNO=[$0], ENAME=[CAST($1):VARCHAR(10) NOT NULL], 
QualifyExpression=[=(RANK() OVER (PARTITION BY $1 ORDER BY $8 DESC), 1)])
           LogicalFilter(condition=[>($7, 5)])
             LogicalTableScan(table=[[CATALOG, SALES, EMP]])
 ]]>
@@ -8402,7 +8416,7 @@ LogicalProject(DEPTNO=[$1])
   LogicalMinus(all=[true])
     LogicalProject(ENAME=[$1], DEPTNO=[$7])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 ]]>
     </Resource>
@@ -8420,7 +8434,7 @@ LogicalProject(DEPTNO=[$1])
   LogicalMinus(all=[false])
     LogicalProject(ENAME=[$1], DEPTNO=[$7])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 ]]>
     </Resource>
@@ -8438,7 +8452,7 @@ LogicalProject(DEPTNO=[$1])
   LogicalIntersect(all=[true])
     LogicalProject(ENAME=[$1], DEPTNO=[$7])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 ]]>
     </Resource>
@@ -8456,7 +8470,7 @@ LogicalProject(DEPTNO=[$1])
   LogicalIntersect(all=[false])
     LogicalProject(ENAME=[$1], DEPTNO=[$7])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 ]]>
     </Resource>
@@ -8539,7 +8553,7 @@ LogicalProject(DEPTNO=[$1])
   LogicalUnion(all=[false])
     LogicalProject(ENAME=[$1], DEPTNO=[$7])
       LogicalTableScan(table=[[CATALOG, SALES, EMP]])
-    LogicalProject(EXPR$0=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
+    LogicalProject(NAME=[CAST($1):VARCHAR(20) NOT NULL], DEPTNO=[$0])
       LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
 ]]>
     </Resource>
diff --git 
a/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml 
b/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml
index b3d85ee3ab..79c16c4858 100644
--- 
a/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml
+++ 
b/core/src/test/resources/org/apache/calcite/test/TypeCoercionConverterTest.xml
@@ -183,7 +183,7 @@ LogicalProject(X=[$0])
     LogicalProject(T1=[$0])
       LogicalValues(tuples=[[{ 1 }, { 2 }]])
     LogicalAggregate(group=[{0}])
-      LogicalProject(EXPR$0=[CAST($0):BIGINT NOT NULL])
+      LogicalProject(X=[CAST($0):BIGINT NOT NULL])
         LogicalValues(tuples=[[{ 3 }, { 4 }]])
 ]]>
     </Resource>
diff --git a/core/src/test/resources/sql/sub-query.iq 
b/core/src/test/resources/sql/sub-query.iq
index 6a7927c15f..d820b853f6 100644
--- a/core/src/test/resources/sql/sub-query.iq
+++ b/core/src/test/resources/sql/sub-query.iq
@@ -556,7 +556,7 @@ with t (a, b) as (select * from (values (60, 'b')))
 select * from t where a in (select deptno from "scott".dept);
 EnumerableCalc(expr#0=[{inputs}], expr#1=[60], expr#2=['b'], A=[$t1], B=[$t2])
   EnumerableAggregate(group=[{0}])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
expr#4=[60], expr#5=[=($t4, $t3)], EXPR$0=[$t3], $condition=[$t5])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
expr#4=[60], expr#5=[=($t4, $t3)], DEPTNO=[$t3], $condition=[$t5])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 +---+---+
@@ -571,7 +571,7 @@ with t (a, b) as (select * from (values (30, 'b')))
 select * from t where a in (select deptno from "scott".dept);
 EnumerableCalc(expr#0=[{inputs}], expr#1=[30], expr#2=['b'], A=[$t1], B=[$t2])
   EnumerableAggregate(group=[{0}])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
expr#4=[30], expr#5=[=($t4, $t3)], EXPR$0=[$t3], $condition=[$t5])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
expr#4=[30], expr#5=[=($t4, $t3)], DEPTNO=[$t3], $condition=[$t5])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 +----+---+
@@ -800,7 +800,7 @@ EnumerableCalc(expr#0..2=[{inputs}], SAL=[$t1])
   EnumerableHashJoin(condition=[AND(=($2, $4), =($0, $3))], joinType=[semi])
     EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t2):VARCHAR(14)], 
EMPNO=[$t0], SAL=[$t5], JOB0=[$t8])
       EnumerableTableScan(table=[[scott, EMP]])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):SMALLINT NOT NULL], 
expr#4=[IS NOT NULL($t1)], EXPR$0=[$t3], DNAME=[$t1], $condition=[$t4])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):SMALLINT NOT NULL], 
expr#4=[IS NOT NULL($t1)], DEPTNO=[$t3], DNAME=[$t1], $condition=[$t4])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 
@@ -2032,7 +2032,7 @@ EnumerableCalc(expr#0..4=[{inputs}], expr#5=[NOT($t4)], 
expr#6=[IS NOT NULL($t4)
     EnumerableSort(sort0=[$2], dir0=[ASC])
       EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], 
DEPTNO=[$t7])
         EnumerableTableScan(table=[[scott, EMP]])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], 
expr#5=[CAST($t0):INTEGER NOT NULL], expr#6=[=($t4, $t5)], DEPTNO=[$t0], 
$f1=[$t3], $condition=[$t6])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], 
expr#5=[CAST($t0):INTEGER NOT NULL], expr#6=[=($t4, $t5)], DEPTNO1=[$t0], 
$f1=[$t3], $condition=[$t6])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 
@@ -2257,7 +2257,7 @@ EnumerableAggregate(group=[{}], C=[COUNT()])
               EnumerableCalc(expr#0..2=[{inputs}], expr#3=[1:BIGINT], 
expr#4=[IS NOT NULL($t1)], c=[$t3], ck=[$t3], DNAME=[$t1], $condition=[$t4])
                 EnumerableTableScan(table=[[scott, DEPT]])
       EnumerableSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])
-        EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):DECIMAL(13, 2) 
NOT NULL], expr#4=[true], expr#5=[IS NOT NULL($t1)], EXPR$0=[$t3], DNAME=[$t1], 
i=[$t4], $condition=[$t5])
+        EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):DECIMAL(13, 2) 
NOT NULL], expr#4=[true], expr#5=[IS NOT NULL($t1)], DEPTNO=[$t3], DNAME=[$t1], 
i=[$t4], $condition=[$t5])
           EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 
@@ -4176,7 +4176,7 @@ EnumerableCalc(expr#0..3=[{inputs}], proj#0..2=[{exprs}])
   EnumerableHashJoin(condition=[=($3, $4)], joinType=[semi])
     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[20], expr#4=[+($t0, $t3)], 
proj#0..2=[{exprs}], $f3=[$t4])
       EnumerableTableScan(table=[[scott, DEPT]])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
EXPR$0=[$t3])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER NOT NULL], 
DEPTNO=[$t3])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 
@@ -4200,7 +4200,7 @@ EnumerableCalc(expr#0..3=[{inputs}], proj#0..2=[{exprs}])
   EnumerableHashJoin(condition=[=($3, $4)], joinType=[semi])
     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):BIGINT NOT NULL], 
proj#0..3=[{exprs}])
       EnumerableTableScan(table=[[scott, DEPT]])
-    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):BIGINT NOT NULL], 
EXPR$0=[$t3])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):BIGINT NOT NULL], 
DEPTNO=[$t3])
       EnumerableTableScan(table=[[scott, DEPT]])
 !plan
 
@@ -4244,7 +4244,7 @@ EnumerableCalc(expr#0..8=[{inputs}], proj#0..7=[{exprs}])
   EnumerableHashJoin(condition=[=($8, $9)], joinType=[semi])
     EnumerableCalc(expr#0..7=[{inputs}], expr#8=[7349], expr#9=[-($t0, $t8)], 
expr#10=[CAST($t9):SMALLINT NOT NULL], expr#11=['SMITH':VARCHAR(10)], 
expr#12=[=($t1, $t11)], proj#0..7=[{exprs}], $f8=[$t10], $condition=[$t12])
       EnumerableTableScan(table=[[scott, EMP]])
-    EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t7):SMALLINT], 
EXPR$0=[$t8])
+    EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t7):SMALLINT], 
DEPTNO=[$t8])
       EnumerableTableScan(table=[[scott, EMP]])
 !plan
 

Reply via email to