You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/08/31 06:04:23 UTC
[1/3] calcite git commit: [CALCITE-2470] In RelBuilder,
project method should combine expressions if the underlying node is a
Project
Repository: calcite
Updated Branches:
refs/heads/master d0e3089c3 -> 370e95ab8
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
----------------------------------------------------------------------
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 7e87d88..277b5e0 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -94,10 +94,9 @@ LogicalAggregate(group=[{0}])
<![CDATA[
LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
LogicalProject($f0=[0])
- LogicalProject(EXPR$0=[1])
- LogicalAggregate(group=[{0}])
- LogicalProject($f0=[SUBSTRING($1, 2, 3)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject($f0=[SUBSTRING($1, 2, 3)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="sql">
@@ -187,11 +186,10 @@ LogicalProject(NAME=[$0])
<TestCase name="testGroupBug281b">
<Resource name="plan">
<![CDATA[
-LogicalProject(NAME=[$1], FOO=[$2])
- LogicalProject(DEPTNO=[$1], NAME=[$0], FOO=[$2])
- LogicalAggregate(group=[{0, 1}], FOO=[COUNT()])
- LogicalProject(NAME=[$1], DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(NAME=[$0], FOO=[$2])
+ LogicalAggregate(group=[{0, 1}], FOO=[COUNT()])
+ LogicalProject(NAME=[$1], DEPTNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="sql">
@@ -365,9 +363,8 @@ window w as (partition by productId)]]>
</Resource>
<Resource name="plan">
<![CDATA[
-LogicalProject(EXPR$0=[DOT(ITEM(DOT(DOT(ITEM($6, 1), 'DETAIL'), 'SKILLS'), +(2, 3)), 'DESC')])
- LogicalProject(DEPTNO=[$0], NAME=[$1], TYPE=[$2.TYPE], DESC=[$2.DESC], A=[$2.OTHERS.A], B=[$2.OTHERS.B], EMPLOYEES=[$3])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+LogicalProject(EXPR$0=[DOT(ITEM(DOT(DOT(ITEM($3, 1), 'DETAIL'), 'SKILLS'), +(2, 3)), 'DESC')])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
]]>
</Resource>
</TestCase>
@@ -378,9 +375,8 @@ LogicalProject(EXPR$0=[DOT(ITEM(DOT(DOT(ITEM($6, 1), 'DETAIL'), 'SKILLS'), +(2,
<Resource name="plan">
<![CDATA[
LogicalProject(EXPR$0=[$0])
- LogicalProject(EXPR$0$0=[ITEM($6, 1).EMPNO], EXPR$0$1=[ITEM($6, 1).ENAME], EXPR$0$2=[ITEM($6, 1).DETAIL])
- LogicalProject(DEPTNO=[$0], NAME=[$1], TYPE=[$2.TYPE], DESC=[$2.DESC], A=[$2.OTHERS.A], B=[$2.OTHERS.B], EMPLOYEES=[$3])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+ LogicalProject(EXPR$0$0=[ITEM($3, 1).EMPNO], EXPR$0$1=[ITEM($3, 1).ENAME], EXPR$0$2=[ITEM($3, 1).DETAIL])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
]]>
</Resource>
</TestCase>
@@ -486,9 +482,8 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[=($0, 55)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($0, 55)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="sql">
@@ -505,9 +500,8 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[=($cor0.DEPTNO, $0)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($cor0.DEPTNO, $0)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="sql">
@@ -733,8 +727,7 @@ from (
<Resource name="plan">
<![CDATA[
LogicalProject(FAKE2=[ITEM($0, 'fake_col2')])
- LogicalProject(FAKE_Q1=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]])
+ LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]])
]]>
</Resource>
</TestCase>
@@ -742,7 +735,7 @@ LogicalProject(FAKE2=[ITEM($0, 'fake_col2')])
<Resource name="sql">
<![CDATA[select t1.c_nationkey, t3.fake_col3
from SALES.CUSTOMER as t1,
-lateral (select t2.fake_col2 as fake_col3
+lateral (select t2."$unnest" as fake_col3
from unnest(t1.fake_col) as t2) as t3]]>
</Resource>
<Resource name="plan">
@@ -1388,10 +1381,9 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
<![CDATA[
LogicalProject(EXPR$0=[$0], DEPTNO=[$1], EXPR$2=[$0])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(EXPR$0=[$0], DEPTNO=[$1])
- LogicalProject(EXPR$0=[+($5, 5)], DEPTNO=[$7], EXPR$2=[+($5, 5)])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[+($5, 5)], DEPTNO=[$7])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1611,7 +1603,8 @@ LogicalSort(offset=[?0])
<TestCase name="testJoinUsingDynamicTable">
<Resource name="sql">
<![CDATA[select * from SALES.NATION t1
-join SALES.NATION t2 using (n_nationkey)]]>
+join SALES.NATION t2
+using (n_nationkey)]]>
</Resource>
<Resource name="plan">
<![CDATA[
@@ -1662,13 +1655,12 @@ JOIN dept on emp.deptno + 1 = dept.deptno - 2]]>
</Resource>
<Resource name="plan">
<![CDATA[
-LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
- LogicalJoin(condition=[=($9, $12)], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[-($0, 2)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
+ LogicalJoin(condition=[=($9, $12)], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[-($0, 2)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1680,8 +1672,7 @@ select empno as "e", deptno as d, 1 as "e" from EMP)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(e=[$0])
- LogicalProject(e=[$0], D=[$7], e0=[1])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1693,8 +1684,7 @@ select * from emp2]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1733,11 +1723,10 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[<=($0, $cor1.DEPTNO)])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalFilter(condition=[>=($0, $cor1.DEPTNO)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[<=($0, $cor1.DEPTNO)])
+ LogicalProject(DEPTNO=[$0], NAME=[$1])
+ LogicalFilter(condition=[>=($0, $cor1.DEPTNO)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1755,9 +1744,8 @@ LogicalProject(C=[$9])
LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
LogicalProject($f0=[0])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalFilter(condition=[>($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[>($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1780,12 +1768,11 @@ JOIN dept on dept.deptno = emp.deptno + 0]]>
</Resource>
<Resource name="plan">
<![CDATA[
-LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
- LogicalJoin(condition=[=($10, $9)], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 0)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
+ LogicalJoin(condition=[=($10, $9)], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 0)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1796,12 +1783,11 @@ JOIN dept on emp.deptno + 0 = dept.deptno]]>
</Resource>
<Resource name="plan">
<![CDATA[
-LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
- LogicalJoin(condition=[=($9, $10)], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 0)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
+ LogicalJoin(condition=[=($9, $10)], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 0)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1837,17 +1823,15 @@ LogicalProject(D2=[$0], D3=[$1])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[AND(=($0, $cor3.D2), IS NOT NULL($1))])
- LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0}])
- LogicalProject(D1=[+($0, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{}], agg#0=[MIN($0)])
- LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[2])
- LogicalFilter(condition=[AND(=($0, $cor0.D1), =($1, $cor0.D1), =($2, $cor3.D3))])
- LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[AND(=($0, $cor3.D2), IS NOT NULL($1))])
+ LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0}])
+ LogicalProject(D1=[+($0, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{}], agg#0=[MIN($0)])
+ LogicalProject($f0=[true])
+ LogicalFilter(condition=[AND(=($0, $cor0.D1), =($1, $cor0.D1), =($2, $cor3.D3))])
+ LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1862,35 +1846,29 @@ from (select 2+deptno d2, 3+deptno d3 from emp) e
<Resource name="plan">
<![CDATA[
LogicalProject(D2=[$0], D3=[$1])
- LogicalProject(D2=[$0], D3=[$1], $f0=[$4])
- LogicalProject(D2=[$0], D3=[$1], D1=[CAST($2):INTEGER], D30=[$3], $f2=[CAST($4):BOOLEAN])
- LogicalJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])
- LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
- LogicalProject(D1=[$1], D3=[$2], $f0=[$0])
- LogicalProject($f0=[true], D1=[$1], D3=[$2])
- LogicalProject(EXPR$0=[1], D1=[$0], D3=[$2])
- LogicalFilter(condition=[IS NOT NULL($1)])
- LogicalProject(D1=[$0], $f0=[$3], D3=[$2])
- LogicalJoin(condition=[=($0, $1)], joinType=[left])
- LogicalProject(D1=[+($0, 1)])
+ LogicalProject(D2=[$0], D3=[$1], D1=[CAST($2):INTEGER], D30=[$3], $f2=[CAST($4):BOOLEAN])
+ LogicalJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])
+ LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
+ LogicalProject(D1=[$0], D3=[$2], $f0=[true])
+ LogicalFilter(condition=[IS NOT NULL($1)])
+ LogicalProject(D1=[$0], $f0=[$3], D3=[$2])
+ LogicalJoin(condition=[=($0, $1)], joinType=[left])
+ LogicalProject(D1=[+($0, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
+ LogicalProject(D1=[$3], D3=[$4], $f0=[true])
+ LogicalJoin(condition=[AND(=($0, $3), =($1, $3), =($2, $4))], joinType=[inner])
+ LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
- LogicalProject(D1=[$1], D3=[$2], $f0=[$0])
- LogicalProject($f0=[true], D1=[$1], D3=[$2])
- LogicalProject(EXPR$0=[2], D1=[$3], D3=[$4])
- LogicalJoin(condition=[AND(=($0, $3), =($1, $3), =($2, $4))], joinType=[inner])
- LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalJoin(condition=[true], joinType=[inner])
- LogicalAggregate(group=[{0}])
- LogicalProject(D1=[+($0, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}])
- LogicalProject(D3=[$1])
- LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[true], joinType=[inner])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(D1=[+($0, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(D3=[+(3, $7)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1904,21 +1882,18 @@ where exists (
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(DEPTNO0=[$1], $f0=[$0])
- LogicalProject($f0=[true], DEPTNO0=[$1])
- LogicalProject(EXPR$0=[1], DEPTNO0=[$2])
- LogicalFilter(condition=[<=($0, $2)])
- LogicalProject(DEPTNO=[$0], NAME=[$1], DEPTNO0=[$2])
- LogicalJoin(condition=[>=($0, $2)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}])
- LogicalProject(DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(DEPTNO0=[$2], $f0=[true])
+ LogicalFilter(condition=[<=($0, $2)])
+ LogicalProject(DEPTNO=[$0], NAME=[$1], DEPTNO0=[$2])
+ LogicalJoin(condition=[>=($0, $2)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(DEPTNO=[$7])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1930,15 +1905,12 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(DEPTNO=[$1], $f0=[$0])
- LogicalProject($f0=[true], DEPTNO=[$1])
- LogicalProject(EXPR$0=[1], DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(DEPTNO=[$0], $f0=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -1970,16 +1942,14 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f0=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(DEPTNO=[$1], $f0=[$0])
- LogicalProject($f0=[true], DEPTNO=[$1])
- LogicalSort(fetch=[1])
- LogicalProject(EXPR$0=[1], DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[CAST($9):INTEGER], $f1=[CAST($10):BOOLEAN])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(DEPTNO=[$1], $f0=[true])
+ LogicalSort(fetch=[1])
+ LogicalProject(EXPR$0=[1], DEPTNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -2046,8 +2016,7 @@ select * from emp2 order by deptno]]>
<![CDATA[
LogicalSort(sort0=[$7], dir0=[ASC])
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2065,12 +2034,10 @@ LogicalProject(EMPNO=[$0], X=[$1])
LogicalSort(sort0=[$2], dir0=[ASC])
LogicalProject(EMPNO=[$0], X=[$1], EXPR$2=[+($0, $1)])
LogicalUnion(all=[true])
- LogicalProject(EMPNO=[$0], X=[$1])
- LogicalProject(EMPNO=[$0], X=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EMPNO=[$0], X=[$1])
- LogicalProject(EMPNO=[$0], X=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], X=[$7])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], X=[$7])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2088,13 +2055,11 @@ LogicalProject(NAME=[$1], EXPR$1=[CASE(=($2, 0), false, IS NOT NULL($6), true, <
LogicalJoin(condition=[true], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)])
- LogicalProject(EXPR$0=[$0], $f1=[true])
- LogicalProject(EXPR$0=[CAST($7):INTEGER])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EXPR$0=[$0], $f1=[true])
- LogicalProject(EXPR$0=[CAST($7):INTEGER])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[CAST($7):INTEGER], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2112,13 +2077,11 @@ LogicalProject(EMPNO=[$0], EXPR$1=[NOT(CASE(=($9, 0), false, IS NOT NULL($13), t
LogicalJoin(condition=[true], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)])
- LogicalProject(EXPR$0=[$0], $f1=[true])
- LogicalProject(EXPR$0=[CAST($0):INTEGER])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EXPR$0=[$0], $f1=[true])
- LogicalProject(EXPR$0=[CAST($0):INTEGER])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(EXPR$0=[CAST($0):INTEGER], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -2135,8 +2098,7 @@ LogicalProject(EMPNO=[$0])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
LogicalProject(DEPTNO=[$0], $f1=[true])
- LogicalProject(DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -2154,8 +2116,7 @@ LogicalProject(EMPNO=[$0], EXPR$1=[IS NOT TRUE($11)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
LogicalProject(DEPTNO=[$0], $f1=[true])
- LogicalProject(DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -2199,10 +2160,9 @@ LogicalProject(EMPNO=[$0], EXPR$1=[CAST(NOT(AND(IS TRUE($11), IS NOT NULL($9))))
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$7])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(MGR=[$0], $f1=[true])
- LogicalProject(MGR=[$3])
- LogicalFilter(condition=[>($3, 5)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(MGR=[$3], $f1=[true])
+ LogicalFilter(condition=[>($3, 5)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2219,10 +2179,9 @@ LogicalProject(EMPNO=[$0], EXPR$1=[CAST(NOT(AND(IS TRUE($11), IS NOT NULL($9))))
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$7])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(MGR=[$0], $f1=[true])
- LogicalProject(MGR=[$3])
- LogicalFilter(condition=[IS NOT NULL($3)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(MGR=[$3], $f1=[true])
+ LogicalFilter(condition=[IS NOT NULL($3)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2240,14 +2199,13 @@ LogicalProject(EMPNO=[$0], EXPR$1=[CAST(NOT(AND(IS TRUE($11), IS NOT NULL($9))))
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$7])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(MGR=[$0], $f1=[true])
- LogicalProject(MGR=[$3])
- LogicalJoin(condition=[=($3, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}])
- LogicalProject(MGR=[$3])
- LogicalFilter(condition=[=($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(MGR=[$3], $f1=[true])
+ LogicalJoin(condition=[=($3, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(MGR=[$3])
+ LogicalFilter(condition=[=($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -2265,13 +2223,11 @@ LogicalProject(EMPNO=[$0], EXPR$1=[NOT(CASE(=($9, 0), false, IS NOT NULL($13), t
LogicalJoin(condition=[true], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[COUNT()], agg#1=[COUNT($0)])
- LogicalProject(MGR=[$0], $f1=[true])
- LogicalProject(MGR=[$3])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(MGR=[$3], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(MGR=[$0], $f1=[true])
- LogicalProject(MGR=[$3])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(MGR=[$3], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3058,9 +3014,8 @@ LogicalProject(**=[$1])
LogicalProject(N_NAME=[$0], **=[$1], N_NAME0=[$0])
LogicalTableScan(table=[[CATALOG, SALES, NATION]])
LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EXPR$0=[$0], $f1=[true])
- LogicalProject(EXPR$0=[''])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalProject(EXPR$0=[''], $f1=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
]]>
</Resource>
</TestCase>
@@ -3317,9 +3272,8 @@ values (?, ?, ?)]]>
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$1], ENAME=[$2], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[$0], SLACKER=[null])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1], EXPR$2=[?2])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[?1], ENAME=[?2], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[?0], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3331,9 +3285,8 @@ values (?, ?)]]>
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[null], SLACKER=[null])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[?0], ENAME=[?1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[null], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3344,9 +3297,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], f
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$2], ENAME=[$0], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[$4], COMM=[null], DEPTNO=[$1], SLACKER=[null], UPDATED=[$3])
- LogicalProject(EXPR$0=['Fred'], EXPR$1=[456], EXPR$2=[44], EXPR$3=[?0], EXPR$4=[999999])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[44], ENAME=['Fred'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[999999], COMM=[null], DEPTNO=[456], SLACKER=[null], UPDATED=[?0])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3358,9 +3310,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], fl
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
LogicalFilter(condition=[=($7, 20)])
- LogicalProject(EMPNO=[$1], ENAME=[$0], JOB=[$2], MGR=[$8], HIREDATE=[$7], SAL=[$5], COMM=[$9], DEPTNO=[$3], SLACKER=[$4], EXTRA=[$6], UPDATED=[$10])
- LogicalProject(ENAME=[$0], EMPNO=[$2], JOB=[null], DEPTNO=[$1], SLACKER=[null], SAL=[$4], EXTRA=[null], HIREDATE=[null], MGR=[null], COMM=[null], UPDATED=[$3])
- LogicalValues(tuples=[[{ 'Fred', 20, 44, 2017-03-12 13:03:05, 999999 }]])
+ LogicalProject(EMPNO=[$2], ENAME=[$0], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[$4], COMM=[null], DEPTNO=[$1], SLACKER=[null], EXTRA=[null], UPDATED=[$3])
+ LogicalValues(tuples=[[{ 'Fred', 20, 44, 2017-03-12 13:03:05, 999999 }]])
]]>
</Resource>
</TestCase>
@@ -3372,10 +3323,8 @@ LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
LogicalFilter(condition=[=($7, 20)])
- LogicalProject(EMPNO=[$1], ENAME=[CAST($0):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], JOB=[$2], MGR=[$8], HIREDATE=[$7], SAL=[CAST($5):INTEGER], COMM=[$9], DEPTNO=[CAST($3):INTEGER], SLACKER=[$4], EXTRA=[$6], UPDATED=[$10])
- LogicalProject(ENAME=[$0], EMPNO=[$2], JOB=[null], DEPTNO=[$1], SLACKER=[null], SAL=[$4], EXTRA=[null], HIREDATE=[null], MGR=[null], COMM=[null], UPDATED=[$3])
- LogicalProject(EXPR$0=['Fred'], EXPR$1=[20], EXPR$2=[44], EXPR$3=[?0], EXPR$4=[999999])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[44], ENAME=['Fred'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[999999], COMM=[null], DEPTNO=[20], SLACKER=[null], EXTRA=[null], UPDATED=[?0])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3486,9 +3435,8 @@ values (150, 'Fred')]]>
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], flattened=[true])
LogicalFilter(condition=[>($5, 1000)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], SLACKER=[null])
- LogicalValues(tuples=[[{ 150, 'Fred' }]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 150, 'Fred' }]])
]]>
</Resource>
</TestCase>
@@ -3501,9 +3449,8 @@ values (10, 'Fred')]]>
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], flattened=[true])
LogicalFilter(condition=[>($5, 1000)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], SLACKER=[null])
- LogicalValues(tuples=[[{ 10, 'Fred' }]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[null], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 10, 'Fred' }]])
]]>
</Resource>
</TestCase>
@@ -3514,9 +3461,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMPNULLABLES]], operation=[INSERT], f
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[CAST($5):INTEGER], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], SLACKER=[null])
- LogicalValues(tuples=[[{ 34625, 'nom', 'accountant' }]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 34625, 'nom', 'accountant' }]])
]]>
</Resource>
</TestCase>
@@ -3527,9 +3473,8 @@ LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[CAST($5):INTEGER], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], SLACKER=[null])
- LogicalValues(tuples=[[{ 10, 'Fred' }]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 10, 'Fred' }]])
]]>
</Resource>
</TestCase>
@@ -3540,10 +3485,8 @@ LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[CAST($0):INTEGER NOT NULL], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[CAST($5):INTEGER], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=['Bob'], JOB=[$1], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], SLACKER=[null])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[CAST(?0):INTEGER NOT NULL], ENAME=['Bob'], JOB=[?1], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3554,10 +3497,8 @@ LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[CAST($0):INTEGER NOT NULL], ENAME=[CAST($1):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[CAST($5):INTEGER], COMM=[$6], DEPTNO=[20], SLACKER=[$7])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], SLACKER=[null])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[CAST(?0):INTEGER NOT NULL], ENAME=[CAST(?1):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[20], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3592,9 +3533,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], fl
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[123], ENAME=['Bob'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[$0], SLACKER=[null])
- LogicalProject(EXPR$0=[?0])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[123], ENAME=['Bob'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[?0], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3605,9 +3545,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], fl
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, SALES, EMPDEFAULTS]], operation=[INSERT], flattened=[true])
- LogicalProject(EMPNO=[$0], ENAME=['Bob'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[null], SLACKER=[null])
- LogicalProject(EXPR$0=[?0])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject(EMPNO=[?0], ENAME=['Bob'], JOB=[null], MGR=[null], HIREDATE=[null], SAL=[555], COMM=[null], DEPTNO=[null], SLACKER=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3631,9 +3570,8 @@ values (?, ?, ?)]]>
<Resource name="plan">
<![CDATA[
LogicalTableModify(table=[[CATALOG, STRUCT, T_NULLABLES]], operation=[INSERT], flattened=[true])
- LogicalProject("K0"=[null], "C1"=[$2], "F1"."A0"=[null], "F2"."A0"=[null], "F0"."C0"=[$0], "F1"."C0"=[null], "F0"."C1"=[null], "F1"."C2"=[$1], "F2"."C3"=[null])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1], EXPR$2=[?2])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject("K0"=[null], "C1"=[?2], "F1"."A0"=[null], "F2"."A0"=[null], "F0"."C0"=[?0], "F1"."C0"=[null], "F0"."C1"=[null], "F1"."C2"=[?1], "F2"."C3"=[null])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3647,10 +3585,8 @@ values (?, ?, ?, ?, ?, ?, ?, ?)]]>
<![CDATA[
LogicalTableModify(table=[[CATALOG, STRUCT, T]], operation=[INSERT], flattened=[true])
LogicalFilter(condition=[=($4, 10)])
- LogicalProject("K0"=[CAST($0):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], "C1"=[CAST($1):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], "F1"."A0"=[CAST($2):INTEGER NOT NULL], "F2"."A0"=[CAST($3):BOOLEAN NOT NULL], "F0"."C0"=[CAST($4):INTEGER NOT NULL], "F1"."C0"=[$5], "F0"."C1"=[CAST($6):INTEGER NOT NULL], "F1"."C2"=[CAST($7):INTEGER NOT NULL], "F2"."C3"=[CAST($8):INTEGER NOT NULL])
- LogicalProject("K0"=[$3], "C1"=[$2], "F1"."A0"=[$4], "F2"."A0"=[$5], "F0"."C0"=[$0], "F1"."C0"=[null], "F0"."C1"=[$6], "F1"."C2"=[$1], "F2"."C3"=[$7])
- LogicalProject(EXPR$0=[?0], EXPR$1=[?1], EXPR$2=[?2], EXPR$3=[?3], EXPR$4=[?4], EXPR$5=[?5], EXPR$6=[?6], EXPR$7=[?7])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalProject("K0"=[CAST(?3):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], "C1"=[CAST(?2):VARCHAR(20) CHARACTER SET "ISO-8859-1" COLLATE "ISO-8859-1$en_US$primary" NOT NULL], "F1"."A0"=[CAST(?4):INTEGER NOT NULL], "F2"."A0"=[CAST(?5):BOOLEAN NOT NULL], "F0"."C0"=[CAST(?0):INTEGER NOT NULL], "F1"."C0"=[null], "F0"."C1"=[CAST(?6):INTEGER NOT NULL], "F1"."C2"=[CAST(?1):INTEGER NOT NULL], "F2"."C3"=[CAST(?7):INTEGER NOT NULL])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -3831,14 +3767,13 @@ from (select min(deptno) as x,
<Resource name="plan">
<![CDATA[
LogicalProject(X=[$0], Y=[$1], Z=[$2], EMPNO=[$3])
- LogicalProject(X=[$0], Y=[$1], Z=[$2], EMPNO=[$3], ENAME=[$4], JOB=[$5], MGR=[$6], HIREDATE=[$7], SAL=[$8], COMM=[$9], DEPTNO=[$10], SLACKER=[$11])
- LogicalJoin(condition=[AND(=($0, $10), =($1, $12))], joinType=[inner])
- LogicalProject(X=[$2], Y=[RANK() OVER (ORDER BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)], Z=[MAX($1) OVER (PARTITION BY $0 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)])
- LogicalAggregate(group=[{0, 1}], X=[MIN($0)])
- LogicalProject(DEPTNO=[$7], EMPNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO0=[CAST($0):BIGINT NOT NULL])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[AND(=($0, $10), =($1, $12))], joinType=[inner])
+ LogicalProject(X=[$2], Y=[RANK() OVER (ORDER BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)], Z=[MAX($1) OVER (PARTITION BY $0 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)])
+ LogicalAggregate(group=[{0, 1}], X=[MIN($0)])
+ LogicalProject(DEPTNO=[$7], EMPNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO0=[CAST($0):BIGINT NOT NULL])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3884,18 +3819,16 @@ and e1.sal > (select avg(sal) from emp e2 where e1.empno = e2.empno)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EXPR$0=[$12])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], EXPR$0=[CAST($12):INTEGER])
- LogicalJoin(condition=[AND(=($0, $11), >($5, $12))], joinType=[inner])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)])
- LogicalProject(EMPNO=[$1], SAL=[$0])
- LogicalProject(SAL=[$5], EMPNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], EXPR$0=[CAST($12):INTEGER])
+ LogicalJoin(condition=[AND(=($0, $11), >($5, $12))], joinType=[inner])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)])
+ LogicalProject(EMPNO=[$0], SAL=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3911,17 +3844,14 @@ and e1.sal > (select avg(e2.sal) from emp e2
<![CDATA[
LogicalAggregate(group=[{}], EXPR$0=[SUM($0)])
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EXPR$0=[$12])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], DEPTNO1=[CAST($11):INTEGER], EXPR$0=[CAST($12):INTEGER])
- LogicalJoin(condition=[AND(=($9, $11), >($5, $12))], joinType=[inner])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)])
- LogicalProject(DEPTNO=[$1], SAL=[$0])
- LogicalProject(SAL=[$5], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], DEPTNO1=[CAST($11):INTEGER], EXPR$0=[CAST($12):INTEGER])
+ LogicalJoin(condition=[AND(=($9, $11), >($5, $12))], joinType=[inner])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)])
+ LogicalProject(DEPTNO=[$7], SAL=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3935,19 +3865,16 @@ and exists (select * from emp e2 where e1.empno = e2.empno)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], $f0=[$12])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO9=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
- LogicalJoin(condition=[=($0, $11)], joinType=[inner])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EMPNO9=[$1], $f0=[$0])
- LogicalProject($f0=[true], EMPNO9=[$9])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO9=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
+ LogicalJoin(condition=[=($0, $11)], joinType=[inner])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(EMPNO=[$0], $f0=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3961,19 +3888,16 @@ and not exists (select * from emp e2 where e1.empno = e2.empno)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], $f0=[$12])
- LogicalFilter(condition=[IS NULL($12)])
- LogicalJoin(condition=[=($0, $11)], joinType=[left])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EMPNO9=[$1], $f0=[$0])
- LogicalProject($f0=[true], EMPNO9=[$9])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO9=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[IS NULL($12)])
+ LogicalJoin(condition=[=($0, $11)], joinType=[left])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(EMPNO=[$0], $f0=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -4400,9 +4324,8 @@ from emp]]>
LogicalProject(C=[$SCALAR_QUERY({
LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
LogicalProject($f0=[0])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalFilter(condition=[>($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[>($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
})])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
@@ -4819,35 +4742,29 @@ from (select 2+deptno d2, 3+deptno d3 from emp) e
<Resource name="plan">
<![CDATA[
LogicalProject(D2=[$0], D3=[$1])
- LogicalProject(D2=[$0], D3=[$1], $f0=[$4])
- LogicalProject(D2=[$0], D3=[$1], D1=[CAST($2):INTEGER], D30=[$3], $f2=[CAST($4):BOOLEAN])
- LogicalJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])
- LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
- LogicalProject(D1=[$1], D3=[$2], $f0=[$0])
- LogicalProject($f0=[true], D1=[$1], D3=[$2])
- LogicalProject(EXPR$0=[1], D1=[$0], D3=[$2])
- LogicalFilter(condition=[IS NOT NULL($1)])
- LogicalProject(D1=[$0], $f0=[$3], D3=[$2])
- LogicalJoin(condition=[=($0, $1)], joinType=[left])
- LogicalProject(D1=[+($0, 1)])
+ LogicalProject(D2=[$0], D3=[$1], D1=[CAST($2):INTEGER], D30=[$3], $f2=[CAST($4):BOOLEAN])
+ LogicalJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])
+ LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
+ LogicalProject(D1=[$0], D3=[$2], $f0=[true])
+ LogicalFilter(condition=[IS NOT NULL($1)])
+ LogicalProject(D1=[$0], $f0=[$3], D3=[$2])
+ LogicalJoin(condition=[=($0, $1)], joinType=[left])
+ LogicalProject(D1=[+($0, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
+ LogicalProject(D1=[$3], D3=[$4], $f0=[true])
+ LogicalJoin(condition=[AND(=($0, $3), =($1, $3), =($2, $4))], joinType=[inner])
+ LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
- LogicalProject(D1=[$1], D3=[$2], $f0=[$0])
- LogicalProject($f0=[true], D1=[$1], D3=[$2])
- LogicalProject(EXPR$0=[2], D1=[$3], D3=[$4])
- LogicalJoin(condition=[AND(=($0, $3), =($1, $3), =($2, $4))], joinType=[inner])
- LogicalProject(D4=[+($0, 4)], D5=[+($0, 5)], D6=[+($0, 6)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalJoin(condition=[true], joinType=[inner])
- LogicalAggregate(group=[{0}])
- LogicalProject(D1=[+($0, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}])
- LogicalProject(D3=[$1])
- LogicalProject(D2=[+(2, $7)], D3=[+(3, $7)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[true], joinType=[inner])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(D1=[+($0, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(D3=[+(3, $7)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -4937,19 +4854,16 @@ and exists (select * from emp e2 where e1.empno = e2.empno)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], $f0=[$12])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO9=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
- LogicalJoin(condition=[=($0, $11)], joinType=[inner])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EMPNO9=[$1], $f0=[$0])
- LogicalProject($f0=[true], EMPNO9=[$9])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO9=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
+ LogicalJoin(condition=[=($0, $11)], joinType=[inner])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(EMPNO=[$0], $f0=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -4963,27 +4877,24 @@ and exists (select * from emp e2 where e1.empno < e2.empno)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EMPNO=[$0])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], $f0=[$12])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
- LogicalJoin(condition=[=($0, $11)], joinType=[inner])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10], EMPNO0=[CAST($11):INTEGER], $f1=[CAST($12):BOOLEAN])
+ LogicalJoin(condition=[=($0, $11)], joinType=[inner])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
+ LogicalProject(EMPNO0=[$9], $f0=[true])
+ LogicalJoin(condition=[<($9, $0)], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0}], agg#0=[MIN($1)])
- LogicalProject(EMPNO0=[$1], $f0=[$0])
- LogicalProject($f0=[true], EMPNO0=[$9])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EMPNO0=[$9])
- LogicalJoin(condition=[<($9, $0)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}])
- LogicalProject(EMPNO=[$0])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalFilter(condition=[<($7, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalFilter(condition=[<($0, 15)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(EMPNO=[$0])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalFilter(condition=[<($7, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[<($0, 15)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -5036,9 +4947,8 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[=($cor0.DEPTNO, $0)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($cor0.DEPTNO, $0)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -5075,8 +4985,7 @@ order by n_regionkey]]>
LogicalProject(N_NATIONKEY=[$0], N_NAME=[$1])
LogicalSort(sort0=[$2], dir0=[ASC])
LogicalProject(N_NATIONKEY=[ITEM($0, 'N_NATIONKEY')], N_NAME=[ITEM($0, 'N_NAME')], EXPR$2=[ITEM($0, 'N_REGIONKEY')])
- LogicalProject(**=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
]]>
</Resource>
</TestCase>
@@ -5116,12 +5025,11 @@ LogicalAggregate(group=[{0}], CNT=[COUNT()])
</Resource>
<Resource name="plan">
<![CDATA[
-LogicalProject(**=[$0], **0=[$1])
- LogicalProject(**=[$1], **0=[$3])
- LogicalFilter(condition=[=($0, $2)])
- LogicalJoin(condition=[true], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
- LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]])
+LogicalProject(**=[$1], **0=[$3])
+ LogicalFilter(condition=[=($0, $2)])
+ LogicalJoin(condition=[true], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalTableScan(table=[[CATALOG, SALES, CUSTOMER]])
]]>
</Resource>
</TestCase>
@@ -5147,8 +5055,7 @@ LogicalProject(**=[$1], R_REGIONKEY=[$2], R_NAME=[$3], R_COMMENT=[$4])
<![CDATA[
LogicalAggregate(group=[{0}])
LogicalProject(COL=[ITEM($0, 'N_NATIONKEY')])
- LogicalProject(**=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
]]>
</Resource>
</TestCase>
@@ -5165,8 +5072,7 @@ LogicalProject(R_REGIONKEY=[$0], R_NAME=[$1], R_COMMENT=[$2])
LogicalTableScan(table=[[CATALOG, SALES, REGION]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(**=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
]]>
</Resource>
</TestCase>
@@ -5232,8 +5138,7 @@ WINDOW w AS (PARTITION BY REGION ORDER BY n_nationkey)]]>
<Resource name="plan">
<![CDATA[
LogicalProject(EXPR$0=[CASE(>(COUNT(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY') RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 0), $SUM0(ITEM($0, 'N_NATIONKEY')) OVER (PARTITION BY ITEM($0, 'REGION') ORDER BY ITEM($0, 'N_NATIONKEY') RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), null)])
- LogicalProject(**=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, NATION]])
+ LogicalTableScan(table=[[CATALOG, SALES, NATION]])
]]>
</Resource>
</TestCase>
@@ -5253,16 +5158,17 @@ LogicalProject(A=[$0], B=[$1])
LogicalValues(tuples=[[{ 1, 2 }]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EXPR$0=[1])
- LogicalFilter(condition=[=($7, $cor0.A)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[=($7, $cor0.A)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
<TestCase name="testStarDynamicSchemaUnnest">
<Resource name="sql">
- <![CDATA[select t3.fake_q1['fake_col2'] as fake2
- from (select t2.fake_col as fake_q1 from SALES.CUSTOMER as t2) as t3]]>
+ <![CDATA[select *
+from SALES.CUSTOMER as t1,
+lateral (select t2."$unnest" as fake_col3
+ from unnest(t1.fake_col) as t2) as t3]]>
</Resource>
<Resource name="plan">
<![CDATA[
@@ -5278,8 +5184,9 @@ LogicalProject(**=[$1], FAKE_COL3=[$2])
</TestCase>
<TestCase name="testStarDynamicSchemaUnnest2">
<Resource name="sql">
- <![CDATA[select t3.fake_q1['fake_col2'] as fake2
- from (select t2.fake_col as fake_q1 from SALES.CUSTOMER as t2) as t3]]>
+ <![CDATA[select *
+from SALES.CUSTOMER as t1,
+unnest(t1.fake_col) as t2]]>
</Resource>
<Resource name="plan">
<![CDATA[
@@ -5294,8 +5201,9 @@ LogicalProject(**=[$1], $unnest=[$2])
</TestCase>
<TestCase name="testStarDynamicSchemaUnnestNestedSubQuery">
<Resource name="sql">
- <![CDATA[select t2.c1 from (select * from SALES.CUSTOMER)
- as t1, unnest(t1.fake_col) as t2(c1)]]>
+ <![CDATA[select t2.c1
+from (select * from SALES.CUSTOMER) as t1,
+unnest(t1.fake_col) as t2(c1)]]>
</Resource>
<Resource name="plan">
<![CDATA[
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/sql/agg.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/agg.iq b/core/src/test/resources/sql/agg.iq
index 997ac94..24b75b3 100755
--- a/core/src/test/resources/sql/agg.iq
+++ b/core/src/test/resources/sql/agg.iq
@@ -2234,9 +2234,9 @@ select MGR, count(distinct DEPTNO, JOB), MIN(SAL), MAX(SAL) from "scott".emp gro
!ok
-EnumerableAggregate(group=[{1}], EXPR$1=[COUNT($2, $0) FILTER $5], EXPR$2=[MIN($3) FILTER $6], EXPR$3=[MIN($4) FILTER $6])
- EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t5, $t6)], expr#8=[5], expr#9=[=($t5, $t8)], proj#0..4=[{exprs}], $g_0=[$t7], $g_5=[$t9])
- EnumerableAggregate(group=[{2, 3, 7}], groups=[[{2, 3, 7}, {3}]], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)], $g=[GROUPING($2, $3, $7)])
+EnumerableAggregate(group=[{0}], EXPR$1=[COUNT($1, $2) FILTER $5], EXPR$2=[MIN($3) FILTER $6], EXPR$3=[MIN($4) FILTER $6])
+ EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t5, $t6)], expr#8=[3], expr#9=[=($t5, $t8)], MGR=[$t1], DEPTNO=[$t2], JOB=[$t0], EXPR$2=[$t3], EXPR$3=[$t4], $g_0=[$t7], $g_3=[$t9])
+ EnumerableAggregate(group=[{2, 3, 7}], groups=[[{2, 3, 7}, {3}]], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)], $g=[GROUPING($3, $7, $2)])
EnumerableTableScan(table=[[scott, EMP]])
!plan
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/sql/misc.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/misc.iq b/core/src/test/resources/sql/misc.iq
index 2306ec7..2bce8fd 100644
--- a/core/src/test/resources/sql/misc.iq
+++ b/core/src/test/resources/sql/misc.iq
@@ -441,8 +441,8 @@ where not exists (
EnumerableCalc(expr#0..6=[{inputs}], expr#7=[IS NULL($t6)], proj#0..4=[{exprs}], $condition=[$t7])
EnumerableJoin(condition=[=($1, $5)], joinType=[left])
EnumerableTableScan(table=[[hr, emps]])
- EnumerableAggregate(group=[{1}], agg#0=[MIN($0)])
- EnumerableCalc(expr#0..3=[{inputs}], expr#4=[true], $f0=[$t4], deptno=[$t0])
+ EnumerableAggregate(group=[{0}], agg#0=[MIN($1)])
+ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[true], deptno=[$t0], $f0=[$t4])
EnumerableTableScan(table=[[hr, depts]])
!plan
@@ -469,11 +469,11 @@ EnumerableCalc(expr#0..7=[{inputs}], expr#8=[IS NULL($t5)], expr#9=[IS NULL($t7)
EnumerableCalc(expr#0..6=[{inputs}], proj#0..4=[{exprs}], $f0=[$t6])
EnumerableJoin(condition=[=($1, $5)], joinType=[left])
EnumerableTableScan(table=[[hr, emps]])
- EnumerableAggregate(group=[{1}], agg#0=[MIN($0)])
- EnumerableCalc(expr#0..3=[{inputs}], expr#4=[true], $f0=[$t4], deptno=[$t0])
+ EnumerableAggregate(group=[{0}], agg#0=[MIN($1)])
+ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[true], deptno=[$t0], $f0=[$t4])
EnumerableTableScan(table=[[hr, depts]])
- EnumerableAggregate(group=[{1}], agg#0=[MIN($0)])
- EnumerableCalc(expr#0..3=[{inputs}], expr#4=[true], expr#5=[90], expr#6=[+($t0, $t5)], expr#7=[CAST($t6):INTEGER NOT NULL], expr#8=[=($t6, $t7)], $f0=[$t4], $f4=[$t6], $condition=[$t8])
+ EnumerableAggregate(group=[{0}], agg#0=[MIN($1)])
+ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[90], expr#5=[+($t0, $t4)], expr#6=[true], expr#7=[CAST($t5):INTEGER NOT NULL], expr#8=[=($t5, $t7)], $f4=[$t5], $f0=[$t6], $condition=[$t8])
EnumerableTableScan(table=[[hr, depts]])
!plan
@@ -2203,4 +2203,11 @@ EXPR$0
false
!ok
+# Sub-query returns a MAP, column is renamed, and enclosing query references the map.
+select mycol['b'] as x
+from (select map['a', false, 'b', true] from (values (2))) as t(mycol);
+X
+true
+!ok
+
# End misc.iq
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/sql/sub-query.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/sub-query.iq b/core/src/test/resources/sql/sub-query.iq
index 6772c21..5b9d843 100644
--- a/core/src/test/resources/sql/sub-query.iq
+++ b/core/src/test/resources/sql/sub-query.iq
@@ -32,7 +32,7 @@ where t1.x not in (select t2.x from t2);
(0 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[=($t1, $t5)], expr#7=[false], expr#8=[IS NULL($t0)], expr#9=[null], expr#10=[IS NOT NULL($t4)], expr#11=[true], expr#12=[<($t2, $t1)], expr#13=[CASE($t6, $t7, $t8, $t9, $t10, $t11, $t12, $t11, $t7)], expr#14=[NOT($t13)], EXPR$0=[$t0], $condition=[$t14])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[=($t1, $t5)], expr#7=[false], expr#8=[IS NULL($t0)], expr#9=[null], expr#10=[IS NOT NULL($t4)], expr#11=[true], expr#12=[<($t2, $t1)], expr#13=[CASE($t6, $t7, $t8, $t9, $t10, $t11, $t12, $t11, $t7)], expr#14=[NOT($t13)], X=[$t0], $condition=[$t14])
EnumerableJoin(condition=[=($0, $3)], joinType=[left])
EnumerableJoin(condition=[true], joinType=[inner])
EnumerableUnion(all=[true])
@@ -463,7 +463,7 @@ EnumerableCalc(expr#0..2=[{inputs}], proj#0..1=[{exprs}])
# Uncorrelated
with t (a, b) as (select * from (values (60, 'b')))
select * from t where a in (select deptno from "scott".dept);
-EnumerableCalc(expr#0..2=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2])
+EnumerableCalc(expr#0..2=[{inputs}], A=[$t1], B=[$t2])
EnumerableMergeJoin(condition=[=($0, $1)], joinType=[inner])
EnumerableCalc(expr#0..2=[{inputs}], DEPTNO=[$t0])
EnumerableTableScan(table=[[scott, DEPT]])
@@ -794,7 +794,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[=($t4, $t4)], expr#6=[IS NULL($t4)], expr#7=[OR($t5, $t6)], cs=[$t3], $condition=[$t7])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[IS NULL($t4)], cs=[$t3], $condition=[$t5])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -938,7 +938,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[IS NULL($t4)], expr#9=[OR($t6, $t7, $t8)], cs=[$t3], $condition=[$t9])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t4)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1008,7 +1008,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], cs=[$t3], $condition=[$t6])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1044,7 +1044,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[=($t4, $t4)], expr#6=[IS NULL($t4)], expr#7=[OR($t5, $t6)], cs=[$t3], $condition=[$t7])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[IS NULL($t4)], cs=[$t3], $condition=[$t5])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1188,7 +1188,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[IS NULL($t4)], expr#9=[OR($t6, $t7, $t8)], cs=[$t3], $condition=[$t9])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t4)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1258,7 +1258,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], cs=[$t3], $condition=[$t6])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1554,7 +1554,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t4)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[IS NULL($t4)], expr#9=[OR($t6, $t7, $t8)], cs=[$t3], $condition=[$t9])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1596,7 +1596,7 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false], expr
EnumerableLimit(fetch=[1])
EnumerableSort(sort0=[$0], dir0=[DESC])
EnumerableAggregate(group=[{0}], c=[COUNT()])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], cs=[$t3], $condition=[$t6])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[OR($t6, $t7)], cs=[$t3], $condition=[$t8])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1774,11 +1774,11 @@ select sal from "scott".emp e
(0 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t3, $t5)], expr#7=[true], expr#8=[null], expr#9=[IS NULL($t8)], expr#10=[null], expr#11=[IS NOT NULL($t3)], expr#12=[CASE($t6, $t7, $t9, $t10, $t11, $t7, $t5)], expr#13=[NOT($t12)], SAL=[$t1], $condition=[$t13])
- EnumerableJoin(condition=[=($2, $4)], joinType=[left])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)], expr#7=[true], expr#8=[null], expr#9=[IS NULL($t8)], expr#10=[null], expr#11=[IS NOT NULL($t4)], expr#12=[CASE($t6, $t7, $t9, $t10, $t11, $t7, $t5)], expr#13=[NOT($t12)], SAL=[$t1], $condition=[$t13])
+ EnumerableJoin(condition=[=($2, $3)], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], DEPTNO=[$t7])
EnumerableTableScan(table=[[scott, EMP]])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[IS NULL($t4)], cs=[$t3], DEPTNO=[$t0], $condition=[$t5])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[null], expr#5=[IS NULL($t4)], DEPTNO=[$t0], $f1=[$t3], $condition=[$t5])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1792,11 +1792,11 @@ select sal from "scott".emp e
(0 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t3, $t5)], expr#7=[true], expr#8=[IS NOT NULL($t3)], expr#9=[CASE($t6, $t7, $t8, $t7, $t5)], expr#10=[NOT($t9)], SAL=[$t1], $condition=[$t10])
- EnumerableJoin(condition=[=($2, $4)], joinType=[left])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)], expr#7=[true], expr#8=[IS NOT NULL($t4)], expr#9=[CASE($t6, $t7, $t8, $t7, $t5)], expr#10=[NOT($t9)], SAL=[$t1], $condition=[$t10])
+ EnumerableJoin(condition=[=($2, $3)], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], DEPTNO=[$t7])
EnumerableTableScan(table=[[scott, EMP]])
- EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[123], expr#5=[null], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[OR($t6, $t7)], cs=[$t3], DEPTNO=[$t0], $condition=[$t8])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[false], expr#4=[123], expr#5=[null], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t5)], expr#8=[OR($t6, $t7)], DEPTNO=[$t0], $f1=[$t3], $condition=[$t8])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1846,11 +1846,11 @@ select sal from "scott".emp e
(0 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t3, $t5)], expr#7=[true], expr#8=[null], expr#9=[IS NULL($t8)], expr#10=[null], expr#11=[IS NOT NULL($t3)], expr#12=[CASE($t6, $t7, $t9, $t10, $t11, $t7, $t5)], expr#13=[NOT($t12)], SAL=[$t1], $condition=[$t13])
- EnumerableJoin(condition=[=($2, $4)], joinType=[left])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)], expr#7=[true], expr#8=[null], expr#9=[IS NULL($t8)], expr#10=[null], expr#11=[IS NOT NULL($t4)], expr#12=[CASE($t6, $t7, $t9, $t10, $t11, $t7, $t5)], expr#13=[NOT($t12)], SAL=[$t1], $condition=[$t13])
+ EnumerableJoin(condition=[=($2, $3)], joinType=[left])
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=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t4)], expr#8=[OR($t6, $t7)], cs=[$t3], DEPTNO=[$t0], $condition=[$t8])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[null], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], expr#7=[IS NULL($t4)], expr#8=[OR($t6, $t7)], DEPTNO=[$t0], $f1=[$t3], $condition=[$t8])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
@@ -1904,11 +1904,11 @@ select sal from "scott".emp e
(11 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t3, $t5)], expr#7=[true], expr#8=[IS NOT NULL($t3)], expr#9=[CASE($t6, $t7, $t8, $t7, $t5)], expr#10=[NOT($t9)], SAL=[$t1], $condition=[$t10])
- EnumerableJoin(condition=[=($2, $4)], joinType=[left])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)], expr#7=[true], expr#8=[IS NOT NULL($t4)], expr#9=[CASE($t6, $t7, $t8, $t7, $t5)], expr#10=[NOT($t9)], SAL=[$t1], $condition=[$t10])
+ EnumerableJoin(condition=[=($2, $3)], joinType=[left])
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):TINYINT], expr#6=[=($t4, $t5)], cs=[$t3], DEPTNO=[$t0], $condition=[$t6])
+ EnumerableCalc(expr#0..2=[{inputs}], expr#3=[true], expr#4=[10], expr#5=[CAST($t0):TINYINT], expr#6=[=($t4, $t5)], DEPTNO=[$t0], $f1=[$t3], $condition=[$t6])
EnumerableTableScan(table=[[scott, DEPT]])
!plan
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/sql/winagg.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/winagg.iq b/core/src/test/resources/sql/winagg.iq
index c7b9482..cdec70b 100644
--- a/core/src/test/resources/sql/winagg.iq
+++ b/core/src/test/resources/sql/winagg.iq
@@ -438,9 +438,9 @@ limit 5;
+--------+-----+-----+
| 10 | 110 | 100 |
| 10 | 110 | 110 |
-| 10 | 110 | 110 |
-| 10 | 110 | 150 |
| 20 | 200 | 200 |
+| 10 | 110 | 110 |
+| 10 | 110 | 110 |
+--------+-----+-----+
(5 rows)
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/mongodb/src/test/java/org/apache/calcite/adapter/mongodb/MongoAdapterTest.java
----------------------------------------------------------------------
diff --git a/mongodb/src/test/java/org/apache/calcite/adapter/mongodb/MongoAdapterTest.java b/mongodb/src/test/java/org/apache/calcite/adapter/mongodb/MongoAdapterTest.java
index b7d4acd..91c7b04 100644
--- a/mongodb/src/test/java/org/apache/calcite/adapter/mongodb/MongoAdapterTest.java
+++ b/mongodb/src/test/java/org/apache/calcite/adapter/mongodb/MongoAdapterTest.java
@@ -453,7 +453,7 @@ public class MongoAdapterTest implements SchemaFactory {
.returns("STATE=AK; A=26856\nSTATE=AL; A=43383\n")
.queryContains(
mongoChecker(
- "{$project: {POP: '$pop', STATE: '$state'}}",
+ "{$project: {STATE: '$state', POP: '$pop'}}",
"{$group: {_id: '$STATE', A: {$avg: '$POP'}}}",
"{$project: {STATE: '$_id', A: '$A'}}",
"{$sort: {STATE: 1}}"));
@@ -531,7 +531,7 @@ public class MongoAdapterTest implements SchemaFactory {
+ "C=3; STATE=AL; MIN_POP=42124; MAX_POP=44165; SUM_POP=130151\n")
.queryContains(
mongoChecker(
- "{$project: {POP: '$pop', STATE: '$state'}}",
+ "{$project: {STATE: '$state', POP: '$pop'}}",
"{$group: {_id: '$STATE', C: {$sum: 1}, MIN_POP: {$min: '$POP'}, MAX_POP: {$max: '$POP'}, SUM_POP: {$sum: '$POP'}}}",
"{$project: {STATE: '$_id', C: '$C', MIN_POP: '$MIN_POP', MAX_POP: '$MAX_POP', SUM_POP: '$SUM_POP'}}",
"{$project: {C: 1, STATE: 1, MIN_POP: 1, MAX_POP: 1, SUM_POP: 1}}",
@@ -548,9 +548,9 @@ public class MongoAdapterTest implements SchemaFactory {
+ "C=1; STATE=SC; CITY=AIKEN\n")
.queryContains(
mongoChecker(
- "{$project: {CITY: '$city', STATE: '$state'}}",
- "{$group: {_id: {CITY: '$CITY', STATE: '$STATE'}, C: {$sum: 1}}}",
- "{$project: {_id: 0, CITY: '$_id.CITY', STATE: '$_id.STATE', C: '$C'}}",
+ "{$project: {STATE: '$state', CITY: '$city'}}",
+ "{$group: {_id: {STATE: '$STATE', CITY: '$CITY'}, C: {$sum: 1}}}",
+ "{$project: {_id: 0, STATE: '$_id.STATE', CITY: '$_id.CITY', C: '$C'}}",
"{$sort: {C: -1, CITY: 1}}",
"{$limit: 2}",
"{$project: {C: 1, STATE: 1, CITY: 1}}"));
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/server/src/test/java/org/apache/calcite/test/ServerTest.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/calcite/test/ServerTest.java b/server/src/test/java/org/apache/calcite/test/ServerTest.java
index 835c19a..e4e2026 100644
--- a/server/src/test/java/org/apache/calcite/test/ServerTest.java
+++ b/server/src/test/java/org/apache/calcite/test/ServerTest.java
@@ -307,7 +307,7 @@ public class ServerTest {
}
final String plan = ""
- + "EnumerableCalc(expr#0..1=[{inputs}], expr#2=[1], expr#3=[+($t1, $t2)], proj#0..1=[{exprs}], $f2=[$t3])\n"
+ + "EnumerableCalc(expr#0..1=[{inputs}], expr#2=[1], expr#3=[+($t1, $t2)], proj#0..1=[{exprs}], J=[$t3])\n"
+ " EnumerableTableScan(table=[[T]])\n";
try (ResultSet r = s.executeQuery("explain plan for " + sql)) {
assertThat(r.next(), is(true));
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/server/src/test/resources/sql/table.iq
----------------------------------------------------------------------
diff --git a/server/src/test/resources/sql/table.iq b/server/src/test/resources/sql/table.iq
index ed89e0f..5388654 100755
--- a/server/src/test/resources/sql/table.iq
+++ b/server/src/test/resources/sql/table.iq
@@ -129,7 +129,7 @@ select * from t;
(2 rows)
!ok
-EnumerableCalc(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[2], expr#4=[+($t2, $t3)], I=[$t0], $f1=[$t4], K=[$t1])
+EnumerableCalc(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[2], expr#4=[+($t2, $t3)], I=[$t0], J=[$t4], K=[$t1])
EnumerableTableScan(table=[[T]])
!plan
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/site/_docs/algebra.md
----------------------------------------------------------------------
diff --git a/site/_docs/algebra.md b/site/_docs/algebra.md
index 920e71a..003255c 100644
--- a/site/_docs/algebra.md
+++ b/site/_docs/algebra.md
@@ -262,6 +262,7 @@ return the `RelBuilder`.
| `values(fieldNames, value...)`<br/>`values(rowType, tupleList)` | Creates a [Values]({{ site.apiRoot }}/org/apache/calcite/rel/core/Values.html).
| `filter(expr...)`<br/>`filter(exprList)` | Creates a [Filter]({{ site.apiRoot }}/org/apache/calcite/rel/core/Filter.html) over the AND of the given predicates.
| `project(expr...)`<br/>`project(exprList [, fieldNames])` | Creates a [Project]({{ site.apiRoot }}/org/apache/calcite/rel/core/Project.html). To override the default name, wrap expressions using `alias`, or specify the `fieldNames` argument.
+| `projectPlus(expr...)`<br/>`projectPlus(exprList)` | Variant of `project` that keeps original fields and appends the given expressions.
| `permute(mapping)` | Creates a [Project]({{ site.apiRoot }}/org/apache/calcite/rel/core/Project.html) that permutes the fields using `mapping`.
| `convert(rowType [, rename])` | Creates a [Project]({{ site.apiRoot }}/org/apache/calcite/rel/core/Project.html) that converts the fields to the given types, optionally also renaming them.
| `aggregate(groupKey, aggCall...)`<br/>`aggregate(groupKey, aggCallList)` | Creates an [Aggregate]({{ site.apiRoot }}/org/apache/calcite/rel/core/Aggregate.html).
[3/3] calcite git commit: [CALCITE-2470] In RelBuilder,
project method should combine expressions if the underlying node is a
Project
Posted by jh...@apache.org.
[CALCITE-2470] In RelBuilder, project method should combine expressions if the underlying node is a Project
Add RelBuilder.shouldMergeProject() to allow sub-classes to disable
merging.
Improve the message given by CompositeMatcher when match fails.
When RelStructuredTypeFlattener rewrites a RexInputRef be sure to use
the field's new type. (It might have strengthened from say INTEGER to
INTEGER NOT NULL.)
Add a test case inspired by Drill (it passes in Calcite, but I gather
it fails in Drill).
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/370e95ab
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/370e95ab
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/370e95ab
Branch: refs/heads/master
Commit: 370e95ab8557946023ce209e975e1c321765559e
Parents: d0e3089
Author: Julian Hyde <jh...@apache.org>
Authored: Thu Aug 16 01:26:13 2018 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Thu Aug 30 23:03:22 2018 -0700
----------------------------------------------------------------------
.../calcite/rel/logical/LogicalFilter.java | 2 +
.../java/org/apache/calcite/runtime/Hook.java | 4 +-
.../sql2rel/RelStructuredTypeFlattener.java | 73 +-
.../org/apache/calcite/tools/RelBuilder.java | 166 +++--
.../calcite/test/JdbcFrontLinqBackTest.java | 4 +-
.../java/org/apache/calcite/test/Matchers.java | 5 +
.../calcite/test/MaterializationTest.java | 2 +-
.../org/apache/calcite/test/RelBuilderTest.java | 82 ++-
.../calcite/test/SqlToRelConverterTest.java | 4 +-
.../org/apache/calcite/test/StreamTest.java | 11 +-
.../org/apache/calcite/tools/PlannerTest.java | 7 +-
.../org/apache/calcite/test/HepPlannerTest.xml | 5 +-
.../org/apache/calcite/test/RelOptRulesTest.xml | 576 +++++++---------
.../calcite/test/SqlToRelConverterTest.xml | 664 ++++++++-----------
core/src/test/resources/sql/agg.iq | 6 +-
core/src/test/resources/sql/misc.iq | 19 +-
core/src/test/resources/sql/sub-query.iq | 44 +-
core/src/test/resources/sql/winagg.iq | 4 +-
.../adapter/mongodb/MongoAdapterTest.java | 10 +-
.../org/apache/calcite/test/ServerTest.java | 2 +-
server/src/test/resources/sql/table.iq | 2 +-
site/_docs/algebra.md | 1 +
22 files changed, 838 insertions(+), 855 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
index 3b5febf..fd98d66 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
@@ -31,6 +31,7 @@ import org.apache.calcite.rel.metadata.RelMdCollation;
import org.apache.calcite.rel.metadata.RelMdDistribution;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.Litmus;
import com.google.common.collect.ImmutableSet;
@@ -66,6 +67,7 @@ public final class LogicalFilter extends Filter {
ImmutableSet<CorrelationId> variablesSet) {
super(cluster, traitSet, child, condition);
this.variablesSet = Objects.requireNonNull(variablesSet);
+ assert isValid(Litmus.THROW, null);
}
@Deprecated // to be removed before 2.0
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/main/java/org/apache/calcite/runtime/Hook.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/runtime/Hook.java b/core/src/main/java/org/apache/calcite/runtime/Hook.java
index 10d4586..a02bb0f 100644
--- a/core/src/main/java/org/apache/calcite/runtime/Hook.java
+++ b/core/src/main/java/org/apache/calcite/runtime/Hook.java
@@ -108,13 +108,13 @@ public enum Hook {
* }</pre>
* </blockquote>
*/
- public <T, R> Closeable add(final Consumer<T> handler) {
+ public <T> Closeable add(final Consumer<T> handler) {
//noinspection unchecked
handlers.add((Consumer<Object>) handler);
return () -> remove(handler);
}
- /** @deprecated Use {@link #addThread(Consumer)}. */
+ /** @deprecated Use {@link #add(Consumer)}. */
@SuppressWarnings("Guava")
@Deprecated // to be removed in 2.0
public <T, R> Closeable add(final Function<T, R> handler) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java b/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
index ff41b16..98a0aa8 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
@@ -16,6 +16,7 @@
*/
package org.apache.calcite.sql2rel;
+import org.apache.calcite.linq4j.Ord;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.rel.RelCollation;
@@ -285,34 +286,50 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
/**
* Maps the ordinal of a field pre-flattening to the ordinal of the
- * corresponding field post-flattening, and optionally returns its type.
+ * corresponding field post-flattening.
*
* @param oldOrdinal Pre-flattening ordinal
* @return Post-flattening ordinal
*/
protected int getNewForOldInput(int oldOrdinal) {
+ return getNewFieldForOldInput(oldOrdinal).i;
+ }
+
+ /**
+ * Maps the ordinal of a field pre-flattening to the ordinal of the
+ * corresponding field post-flattening, and also returns its type.
+ *
+ * @param oldOrdinal Pre-flattening ordinal
+ * @return Post-flattening ordinal and type
+ */
+ protected Ord<RelDataType> getNewFieldForOldInput(int oldOrdinal) {
assert currentRel != null;
int newOrdinal = 0;
// determine which input rel oldOrdinal references, and adjust
// oldOrdinal to be relative to that input rel
RelNode oldInput = null;
+ RelNode newInput = null;
for (RelNode oldInput1 : currentRel.getInputs()) {
+ newInput = getNewForOldRel(oldInput1);
RelDataType oldInputType = oldInput1.getRowType();
int n = oldInputType.getFieldCount();
if (oldOrdinal < n) {
oldInput = oldInput1;
break;
}
- RelNode newInput = getNewForOldRel(oldInput1);
newOrdinal += newInput.getRowType().getFieldCount();
oldOrdinal -= n;
}
assert oldInput != null;
+ assert newInput != null;
RelDataType oldInputType = oldInput.getRowType();
- newOrdinal += calculateFlattenedOffset(oldInputType, oldOrdinal);
- return newOrdinal;
+ final int newOffset = calculateFlattenedOffset(oldInputType, oldOrdinal);
+ newOrdinal += newOffset;
+ final RelDataTypeField field =
+ newInput.getRowType().getFieldList().get(newOffset);
+ return Ord.of(newOrdinal, field.getType());
}
/**
@@ -523,10 +540,9 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
// Translate the condition.
final RexLocalRef conditionRef = program.getCondition();
if (conditionRef != null) {
- programBuilder.addCondition(
- new RexLocalRef(
- getNewForOldInput(conditionRef.getIndex()),
- conditionRef.getType()));
+ final Ord<RelDataType> newField =
+ getNewFieldForOldInput(conditionRef.getIndex());
+ programBuilder.addCondition(new RexLocalRef(newField.i, newField.e));
}
RexProgram newProgram = programBuilder.getProgram();
@@ -576,7 +592,6 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
if (exp.getType().isStruct()) {
if (exp instanceof RexInputRef) {
RexInputRef inputRef = (RexInputRef) exp;
- int newOffset = getNewForOldInput(inputRef.getIndex());
// expand to range
RelDataType flattenedType =
@@ -587,10 +602,10 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
List<RelDataTypeField> fieldList = flattenedType.getFieldList();
int n = fieldList.size();
for (int j = 0; j < n; ++j) {
- RelDataTypeField field = fieldList.get(j);
+ final Ord<RelDataType> newField =
+ getNewFieldForOldInput(inputRef.getIndex());
flattenedExps.add(
- Pair.of(
- new RexInputRef(newOffset + j, field.getType()),
+ Pair.of(new RexInputRef(newField.i + j, newField.e),
fieldName));
}
} else if (isConstructor(exp) || exp.isA(SqlKind.CAST)) {
@@ -627,11 +642,13 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
RexNode newExp = exp;
List<RexNode> oldOperands = ((RexCall) exp).getOperands();
if (oldOperands.get(0) instanceof RexInputRef) {
- RexInputRef inputRef = (RexInputRef) oldOperands.get(0);
- int newOffset = getNewForOldInput(inputRef.getIndex());
- newExp = rexBuilder.makeCall(exp.getType(), ((RexCall) exp).getOperator(),
- ImmutableList.of(
- rexBuilder.makeInputRef(inputRef.getType(), newOffset), oldOperands.get(1)));
+ final RexInputRef inputRef = (RexInputRef) oldOperands.get(0);
+ final Ord<RelDataType> newField =
+ getNewFieldForOldInput(inputRef.getIndex());
+ newExp = rexBuilder.makeCall(exp.getType(),
+ ((RexCall) exp).getOperator(),
+ ImmutableList.of(rexBuilder.makeInputRef(newField.e, newField.i),
+ oldOperands.get(1)));
}
for (RelDataTypeField field : newExp.getType().getFieldList()) {
flattenedExps.add(
@@ -759,15 +776,12 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
private class RewriteRexShuttle extends RexShuttle {
@Override public RexNode visitInputRef(RexInputRef input) {
final int oldIndex = input.getIndex();
- final int newIndex = getNewForOldInput(oldIndex);
-
- // FIXME: jhyde, 2005/12/3: Once indicator fields have been
- // introduced, the new field type may be very different to the
- // old field type. We should look at the actual flattened types,
- // rather than trying to deduce the type from the current type.
- RelDataType fieldType = removeDistinct(input.getType());
- RexInputRef newInput = new RexInputRef(newIndex, fieldType);
- return newInput;
+ final Ord<RelDataType> field = getNewFieldForOldInput(oldIndex);
+
+ // Use the actual flattened type, which may be different from the current
+ // type.
+ RelDataType fieldType = removeDistinct(field.e);
+ return new RexInputRef(field.i, fieldType);
}
private RelDataType removeDistinct(RelDataType type) {
@@ -781,7 +795,6 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
// walk down the field access path expression, calculating
// the desired input number
int iInput = 0;
- RelDataType fieldType = removeDistinct(fieldAccess.getType());
for (;;) {
RexNode refExp = fieldAccess.getReferenceExpr();
@@ -792,8 +805,10 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
ordinal);
if (refExp instanceof RexInputRef) {
RexInputRef inputRef = (RexInputRef) refExp;
- iInput += getNewForOldInput(inputRef.getIndex());
- return new RexInputRef(iInput, fieldType);
+ final Ord<RelDataType> newField =
+ getNewFieldForOldInput(inputRef.getIndex());
+ iInput += newField.i;
+ return new RexInputRef(iInput, removeDistinct(newField.e));
} else if (refExp instanceof RexCorrelVariable) {
RelDataType refType =
SqlTypeUtil.flattenRecordType(
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
----------------------------------------------------------------------
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 491be00..64ae6cb 100644
--- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
+++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
@@ -17,6 +17,7 @@
package org.apache.calcite.tools;
import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.linq4j.function.Experimental;
import org.apache.calcite.plan.Context;
import org.apache.calcite.plan.Contexts;
import org.apache.calcite.plan.RelOptCluster;
@@ -95,7 +96,6 @@ import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
@@ -941,6 +941,12 @@ public class RelBuilder {
return this;
}
+ /** Creates a {@link Project} of the given
+ * expressions. */
+ public RelBuilder project(RexNode... nodes) {
+ return project(ImmutableList.copyOf(nodes));
+ }
+
/** Creates a {@link Project} of the given list
* of expressions.
*
@@ -964,6 +970,19 @@ public class RelBuilder {
return project(nodes, fieldNames, false);
}
+ /** Creates a {@link Project} of all original fields, plus the given
+ * expressions. */
+ public RelBuilder projectPlus(RexNode... nodes) {
+ return projectPlus(ImmutableList.copyOf(nodes));
+ }
+
+ /** Creates a {@link Project} of all original fields, plus the given list of
+ * expressions. */
+ public RelBuilder projectPlus(Iterable<RexNode> nodes) {
+ final ImmutableList.Builder<RexNode> builder = ImmutableList.builder();
+ return project(builder.addAll(fields()).addAll(nodes).build());
+ }
+
/** Creates a {@link Project} of the given list
* of expressions, using the given names.
*
@@ -991,27 +1010,86 @@ public class RelBuilder {
Iterable<? extends RexNode> nodes,
Iterable<String> fieldNames,
boolean force) {
- final List<String> names = new ArrayList<>();
- final List<RexNode> exprList = new ArrayList<>();
- final Iterator<String> nameIterator = fieldNames.iterator();
- for (RexNode node : nodes) {
- if (simplify) {
- node = simplifier.simplifyPreservingType(node);
+ final Frame frame = stack.peek();
+ final RelDataType inputRowType = frame.rel.getRowType();
+ final List<RexNode> nodeList = Lists.newArrayList(nodes);
+
+ // Perform a quick check for identity. We'll do a deeper check
+ // later when we've derived column names.
+ if (!force && Iterables.isEmpty(fieldNames)
+ && RexUtil.isIdentity(nodeList, inputRowType)) {
+ return this;
+ }
+
+ final List<String> fieldNameList = Lists.newArrayList(fieldNames);
+ while (fieldNameList.size() < nodeList.size()) {
+ fieldNameList.add(null);
+ }
+
+ if (frame.rel instanceof Project
+ && shouldMergeProject()) {
+ final Project project = (Project) frame.rel;
+ // Populate field names. If the upper expression is an input ref and does
+ // not have a recommended name, use the name of the underlying field.
+ for (int i = 0; i < fieldNameList.size(); i++) {
+ if (fieldNameList.get(i) == null) {
+ final RexNode node = nodeList.get(i);
+ if (node instanceof RexInputRef) {
+ final RexInputRef ref = (RexInputRef) node;
+ fieldNameList.set(i,
+ project.getRowType().getFieldNames().get(ref.getIndex()));
+ }
+ }
+ }
+ final List<RexNode> newNodes =
+ RelOptUtil.pushPastProject(nodeList, project);
+
+ // Carefully build a list of fields, so that table aliases from the input
+ // can be seen for fields that are based on a RexInputRef.
+ final Frame frame1 = stack.pop();
+ final List<Field> fields = new ArrayList<>();
+ for (RelDataTypeField f
+ : project.getInput().getRowType().getFieldList()) {
+ fields.add(new Field(ImmutableSet.of(), f));
+ }
+ for (Pair<RexNode, Field> pair
+ : Pair.zip(project.getProjects(), frame1.fields)) {
+ switch (pair.left.getKind()) {
+ case INPUT_REF:
+ final int i = ((RexInputRef) pair.left).getIndex();
+ final Field field = fields.get(i);
+ final ImmutableSet<String> aliases = pair.right.left;
+ fields.set(i, new Field(aliases, field.right));
+ break;
+ }
}
- exprList.add(node);
- String name = nameIterator.hasNext() ? nameIterator.next() : null;
- names.add(name != null ? name : inferAlias(exprList, node));
+ stack.push(new Frame(project.getInput(), ImmutableList.copyOf(fields)));
+ return project(newNodes, fieldNameList, force);
}
- final Frame frame = stack.peek();
+
+ // Simplify expressions.
+ if (simplify) {
+ for (int i = 0; i < nodeList.size(); i++) {
+ nodeList.set(i, simplifier.simplifyPreservingType(nodeList.get(i)));
+ }
+ }
+
+ // Replace null names with generated aliases.
+ for (int i = 0; i < fieldNameList.size(); i++) {
+ if (fieldNameList.get(i) == null) {
+ fieldNameList.set(i, inferAlias(nodeList, nodeList.get(i), i));
+ }
+ }
+
final ImmutableList.Builder<Field> fields = ImmutableList.builder();
final Set<String> uniqueNameList =
getTypeFactory().getTypeSystem().isSchemaCaseSensitive()
- ? new HashSet<String>()
+ ? new HashSet<>()
: new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
// calculate final names and build field list
- for (int i = 0; i < names.size(); ++i) {
- RexNode node = exprList.get(i);
- String name = names.get(i);
+ for (int i = 0; i < fieldNameList.size(); ++i) {
+ final RexNode node = nodeList.get(i);
+ String name = fieldNameList.get(i);
Field field;
if (name == null || uniqueNameList.contains(name)) {
int j = 0;
@@ -1021,7 +1099,7 @@ public class RelBuilder {
do {
name = SqlValidatorUtil.F_SUGGESTER.apply(name, j, j++);
} while (uniqueNameList.contains(name));
- names.set(i, name);
+ fieldNameList.set(i, name);
}
RelDataTypeField fieldType =
new RelDataTypeFieldImpl(name, i, node.getType());
@@ -1038,9 +1116,8 @@ public class RelBuilder {
uniqueNameList.add(name);
fields.add(field);
}
- final RelDataType inputRowType = peek().getRowType();
- if (!force && RexUtil.isIdentity(exprList, inputRowType)) {
- if (names.equals(inputRowType.getFieldNames())) {
+ if (!force && RexUtil.isIdentity(nodeList, inputRowType)) {
+ if (fieldNameList.equals(inputRowType.getFieldNames())) {
// Do not create an identity project if it does not rename any fields
return this;
} else {
@@ -1051,17 +1128,20 @@ public class RelBuilder {
}
}
final RelNode project =
- projectFactory.createProject(frame.rel, ImmutableList.copyOf(exprList),
- names);
+ projectFactory.createProject(frame.rel, ImmutableList.copyOf(nodeList),
+ fieldNameList);
stack.pop();
stack.push(new Frame(project, fields.build()));
return this;
}
- /** Creates a {@link Project} of the given
- * expressions. */
- public RelBuilder project(RexNode... nodes) {
- return project(ImmutableList.copyOf(nodes));
+ /** Whether to attempt to merge consecutive {@link Project} operators.
+ *
+ * <p>The default implementation returns {@code true};
+ * sub-classes may disable merge by overriding to return {@code false}. */
+ @Experimental
+ protected boolean shouldMergeProject() {
+ return true;
}
/** Creates a {@link Project} of the given
@@ -1146,18 +1226,7 @@ public class RelBuilder {
return values(v.tuples, b.build());
}
- project(fields(), newFieldNames, true);
-
- // If, after de-duplication, the field names are unchanged, discard the
- // identity project we just created.
- if (peek().getRowType().getFieldNames().equals(oldFieldNames)) {
- final RelNode r = peek();
- if (r instanceof Project) {
- stack.pop();
- push(((Project) r).getInput());
- }
- }
- return this;
+ return project(fields(), newFieldNames, true);
}
/** Infers the alias of an expression.
@@ -1165,20 +1234,16 @@ public class RelBuilder {
* <p>If the expression was created by {@link #alias}, replaces the expression
* in the project list.
*/
- private String inferAlias(List<RexNode> exprList, RexNode expr) {
+ private String inferAlias(List<RexNode> exprList, RexNode expr, int i) {
switch (expr.getKind()) {
case INPUT_REF:
final RexInputRef ref = (RexInputRef) expr;
return stack.peek().fields.get(ref.getIndex()).getValue().getName();
case CAST:
- return inferAlias(exprList, ((RexCall) expr).getOperands().get(0));
+ return inferAlias(exprList, ((RexCall) expr).getOperands().get(0), -1);
case AS:
final RexCall call = (RexCall) expr;
- for (;;) {
- final int i = exprList.indexOf(expr);
- if (i < 0) {
- break;
- }
+ if (i >= 0) {
exprList.set(i, call.getOperands().get(0));
}
return ((NlsString) ((RexLiteral) call.getOperands().get(1)).getValue())
@@ -1526,9 +1591,7 @@ public class RelBuilder {
public RelBuilder as(final String alias) {
final Frame pair = stack.pop();
List<Field> newFields =
- Lists.transform(pair.fields, field ->
- new Field(ImmutableSet.<String>builder().addAll(field.left)
- .add(alias).build(), field.right));
+ Util.transform(pair.fields, field -> field.addAlias(alias));
stack.push(new Frame(pair.rel, ImmutableList.copyOf(newFields)));
return this;
}
@@ -2090,6 +2153,15 @@ public class RelBuilder {
Field(ImmutableSet<String> left, RelDataTypeField right) {
super(left, right);
}
+
+ Field addAlias(String alias) {
+ if (left.contains(alias)) {
+ return this;
+ }
+ final ImmutableSet<String> aliasList =
+ ImmutableSet.<String>builder().addAll(left).add(alias).build();
+ return new Field(aliasList, right);
+ }
}
/** Shuttle that shifts a predicate's inputs to the left, replacing early
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/test/JdbcFrontLinqBackTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcFrontLinqBackTest.java b/core/src/test/java/org/apache/calcite/test/JdbcFrontLinqBackTest.java
index a8c86f8..2c5d603 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcFrontLinqBackTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcFrontLinqBackTest.java
@@ -104,8 +104,8 @@ public class JdbcFrontLinqBackTest {
+ "from \"hr\".\"emps\" as e\n"
+ "order by \"deptno\", \"name\" desc")
.explainContains(""
- + "EnumerableCalc(expr#0..4=[{inputs}], expr#5=[UPPER($t2)], UN=[$t5], deptno=[$t1], name=[$t2])\n"
- + " EnumerableSort(sort0=[$1], sort1=[$2], dir0=[ASC], dir1=[DESC])\n"
+ + "EnumerableSort(sort0=[$1], sort1=[$2], dir0=[ASC], dir1=[DESC])\n"
+ + " EnumerableCalc(expr#0..4=[{inputs}], expr#5=[UPPER($t2)], UN=[$t5], deptno=[$t1], name=[$t2])\n"
+ " EnumerableTableScan(table=[[hr, emps]])")
.returns("UN=THEODORE; deptno=10\n"
+ "UN=SEBASTIAN; deptno=10\n"
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/test/Matchers.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/Matchers.java b/core/src/test/java/org/apache/calcite/test/Matchers.java
index 0b5e6bd..98bb820 100644
--- a/core/src/test/java/org/apache/calcite/test/Matchers.java
+++ b/core/src/test/java/org/apache/calcite/test/Matchers.java
@@ -255,6 +255,11 @@ public class Matchers {
public void describeTo(Description description) {
matcher.describeTo(description);
}
+
+ @Override protected void describeMismatchSafely(F item,
+ Description mismatchDescription) {
+ mismatchDescription.appendText("was ").appendValue(f.apply(item));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/test/MaterializationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/MaterializationTest.java b/core/src/test/java/org/apache/calcite/test/MaterializationTest.java
index b32ec74..b8a929d 100644
--- a/core/src/test/java/org/apache/calcite/test/MaterializationTest.java
+++ b/core/src/test/java/org/apache/calcite/test/MaterializationTest.java
@@ -1743,7 +1743,7 @@ public class MaterializationTest {
+ "join \"dependents\" on (\"depts\".\"name\" = \"dependents\".\"name\")",
HR_FKUK_MODEL,
CalciteAssert.checkResultContains(
- "EnumerableCalc(expr#0..2=[{inputs}], empid0=[$t1])\n"
+ "EnumerableCalc(expr#0..2=[{inputs}], empid=[$t1])\n"
+ " EnumerableJoin(condition=[=($0, $2)], joinType=[inner])\n"
+ " EnumerableCalc(expr#0=[{inputs}], expr#1=[CAST($t0):VARCHAR CHARACTER SET \"ISO-8859-1\" "
+ "COLLATE \"ISO-8859-1$en_US$primary\"], name=[$t1])\n"
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/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 b6ae845..5c18173 100644
--- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
@@ -48,6 +48,7 @@ import org.apache.calcite.tools.RelRunner;
import org.apache.calcite.tools.RelRunners;
import org.apache.calcite.util.Holder;
import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.calcite.util.Util;
import org.apache.calcite.util.mapping.Mappings;
import com.google.common.collect.ImmutableList;
@@ -808,9 +809,8 @@ public class RelBuilderTest {
.build();
final String expected = ""
+ "LogicalAggregate(group=[{0}])\n"
- + " LogicalProject(departmentNo=[$0])\n"
- + " LogicalProject(DEPTNO=[$7])\n"
- + " LogicalTableScan(table=[[scott, EMP]])\n";
+ + " LogicalProject(departmentNo=[$7])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(root, hasTree(expected));
}
@@ -828,10 +828,8 @@ public class RelBuilderTest {
.build();
final String expected = ""
+ "LogicalAggregate(group=[{1}])\n"
- + " LogicalProject(DEPTNO=[$0], d3=[$1])\n"
- + " LogicalProject(DEPTNO=[$0], $f1=[+($0, 3)])\n"
- + " LogicalProject(DEPTNO=[$7])\n"
- + " LogicalTableScan(table=[[scott, EMP]])\n";
+ + " LogicalProject(DEPTNO=[$7], d3=[+($7, 3)])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(root, hasTree(expected));
}
@@ -1397,8 +1395,53 @@ public class RelBuilderTest {
.project(builder.field("EMP_alias", "DEPTNO"))
.build();
final String expected = ""
- + "LogicalProject(DEPTNO=[$0])\n"
- + " LogicalProject(DEPTNO=[$7], $f1=[20])\n"
+ + "LogicalProject(DEPTNO=[$7])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
+ assertThat(root, hasTree(expected));
+ }
+
+ /** Tests that table aliases are propagated even when there is a project on
+ * top of a project. (Aliases tend to get lost when projects are merged). */
+ @Test public void testAliasProjectProject() {
+ final RelBuilder builder = RelBuilder.create(config().build());
+ RelNode root =
+ builder.scan("EMP")
+ .as("EMP_alias")
+ .project(builder.field("DEPTNO"),
+ builder.literal(20))
+ .project(builder.field(1),
+ builder.literal(10),
+ builder.field(0))
+ .project(builder.alias(builder.field(1), "sum"),
+ builder.field("EMP_alias", "DEPTNO"))
+ .build();
+ final String expected = ""
+ + "LogicalProject(sum=[10], DEPTNO=[$7])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
+ assertThat(root, hasTree(expected));
+ }
+
+ /** Tests that table aliases are propagated and are available to a filter,
+ * even when there is a project on top of a project. (Aliases tend to get lost
+ * when projects are merged). */
+ @Test public void testAliasFilter() {
+ final RelBuilder builder = RelBuilder.create(config().build());
+ RelNode root =
+ builder.scan("EMP")
+ .as("EMP_alias")
+ .project(builder.field("DEPTNO"),
+ builder.literal(20))
+ .project(builder.field(1), // literal 20
+ builder.literal(10),
+ builder.field(0)) // DEPTNO
+ .filter(
+ builder.call(SqlStdOperatorTable.GREATER_THAN,
+ builder.field(1),
+ builder.field("EMP_alias", "DEPTNO")))
+ .build();
+ final String expected = ""
+ + "LogicalFilter(condition=[>($1, $2)])\n"
+ + " LogicalProject($f1=[20], $f12=[10], DEPTNO=[$7])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(root, hasTree(expected));
}
@@ -1449,6 +1492,27 @@ public class RelBuilderTest {
assertThat(root, hasTree(expected));
}
+ /** Tests that a projection after a projection. */
+ @Test public void testProjectProject() {
+ final RelBuilder builder = RelBuilder.create(config().build());
+ RelNode root =
+ builder.scan("EMP")
+ .as("e")
+ .projectPlus(
+ builder.alias(
+ builder.call(SqlStdOperatorTable.PLUS, builder.field(0),
+ builder.field(3)), "x"))
+ .project(builder.field("e", "DEPTNO"),
+ builder.field(0),
+ builder.field("e", "MGR"),
+ Util.last(builder.fields()))
+ .build();
+ final String expected = ""
+ + "LogicalProject(DEPTNO=[$7], EMPNO=[$0], MGR=[$3], x=[+($0, $3)])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
+ assertThat(root, hasTree(expected));
+ }
+
@Test public void testMultiLevelAlias() {
final RelBuilder builder = RelBuilder.create(config().build());
RelNode root =
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
----------------------------------------------------------------------
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 aba2274..cafe24a 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
@@ -2507,7 +2507,7 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
}
@Test public void testStarDynamicSchemaUnnest() {
- final String sql3 = "select * \n"
+ final String sql3 = "select *\n"
+ "from SALES.CUSTOMER as t1,\n"
+ "lateral (select t2.\"$unnest\" as fake_col3\n"
+ " from unnest(t1.fake_col) as t2) as t3";
@@ -2515,7 +2515,7 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
}
@Test public void testStarDynamicSchemaUnnest2() {
- final String sql3 = "select * \n"
+ final String sql3 = "select *\n"
+ "from SALES.CUSTOMER as t1,\n"
+ "unnest(t1.fake_col) as t2";
sql(sql3).with(getTesterWithDynamicTable()).ok();
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/test/StreamTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/StreamTest.java b/core/src/test/java/org/apache/calcite/test/StreamTest.java
index b25da6d..502fd61 100644
--- a/core/src/test/java/org/apache/calcite/test/StreamTest.java
+++ b/core/src/test/java/org/apache/calcite/test/StreamTest.java
@@ -277,12 +277,11 @@ public class StreamTest {
+ "orders.rowtime as rowtime, orders.id as orderId, products.supplier as supplierId "
+ "from orders join products on orders.product = products.id")
.convertContains("LogicalDelta\n"
- + " LogicalProject(ROWTIME=[$0], ORDERID=[$1], SUPPLIERID=[$5])\n"
- + " LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3], ID0=[$5], SUPPLIER=[$6])\n"
- + " LogicalJoin(condition=[=($4, $5)], joinType=[inner])\n"
- + " LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3], PRODUCT0=[CAST($2):VARCHAR(32) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL])\n"
- + " LogicalTableScan(table=[[STREAM_JOINS, ORDERS]])\n"
- + " LogicalTableScan(table=[[STREAM_JOINS, PRODUCTS]])\n")
+ + " LogicalProject(ROWTIME=[$0], ORDERID=[$1], SUPPLIERID=[$6])\n"
+ + " LogicalJoin(condition=[=($4, $5)], joinType=[inner])\n"
+ + " LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3], PRODUCT0=[CAST($2):VARCHAR(32) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL])\n"
+ + " LogicalTableScan(table=[[STREAM_JOINS, ORDERS]])\n"
+ + " LogicalTableScan(table=[[STREAM_JOINS, PRODUCTS]])\n")
.explainContains(""
+ "EnumerableCalc(expr#0..6=[{inputs}], proj#0..1=[{exprs}], SUPPLIERID=[$t6])\n"
+ " EnumerableJoin(condition=[=($4, $5)], joinType=[inner])\n"
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
index da54ee8..04c3746 100644
--- a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
+++ b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
@@ -1117,10 +1117,9 @@ public class PlannerTest {
assertThat(plan,
equalTo("LogicalSort(sort0=[$0], dir0=[ASC])\n"
+ " LogicalProject(psPartkey=[$0])\n"
- + " LogicalProject(psPartkey=[$0])\n"
- + " LogicalSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])\n"
- + " LogicalProject(psPartkey=[$0], psSupplyCost=[$1])\n"
- + " EnumerableTableScan(table=[[tpch, partsupp]])\n"));
+ + " LogicalSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])\n"
+ + " LogicalProject(psPartkey=[$0], psSupplyCost=[$1])\n"
+ + " EnumerableTableScan(table=[[tpch, partsupp]])\n"));
}
/** Test case for
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
----------------------------------------------------------------------
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 217eb36..1e56768 100644
--- a/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/HepPlannerTest.xml
@@ -167,9 +167,8 @@ LogicalIntersect(all=[false])
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EXPR$0=[UPPER($0)])
- LogicalProject(ENAME=[LOWER($1)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+LogicalProject(EXPR$0=[UPPER(LOWER($1))])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
[2/3] calcite git commit: [CALCITE-2470] In RelBuilder,
project method should combine expressions if the underlying node is a
Project
Posted by jh...@apache.org.
http://git-wip-us.apache.org/repos/asf/calcite/blob/370e95ab/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
----------------------------------------------------------------------
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 ee683c1..1824e51 100644
--- a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
@@ -185,10 +185,9 @@ window w as (partition by empno order by empno)]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EXPR$0=[$0], EXPR$1=[$0])
- LogicalProject($0=[$9])
- LogicalWindow(window#0=[window(partition {0} order by [0] range between UNBOUNDED PRECEDING and CURRENT ROW aggs [COUNT()])])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+LogicalProject(EXPR$0=[$9], EXPR$1=[$9])
+ LogicalWindow(window#0=[window(partition {0} order by [0] range between UNBOUNDED PRECEDING and CURRENT ROW aggs [COUNT()])])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planBefore">
@@ -494,10 +493,8 @@ LogicalProject(EMPNO=[$0])
LogicalProject(DEPTNO=[$0])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalAggregate(group=[{0}], EXPR$0=[AVG($1)])
- LogicalProject(EMPNO=[$1], SAL=[$0])
- LogicalProject(SAL=[$1], EMPNO=[$0])
- LogicalProject(EMPNO=[$0], SAL=[$5])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], SAL=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -520,14 +517,12 @@ LogicalFilter(condition=[=($cor0.DEPTNO, $7)])
<Resource name="planAfter">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], $f1=[true])
- LogicalAggregate(group=[{0}])
- LogicalProject(DEPTNO=[$1], i=[$0])
- LogicalProject(i=[true], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], $f1=[true])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(DEPTNO=[$7], i=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planMid">
@@ -585,22 +580,19 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
<Resource name="planAfter">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[IS NULL($12)])
- LogicalJoin(condition=[=($2, $11)], joinType=[left])
- LogicalJoin(condition=[=($7, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], $f1=[true])
- LogicalAggregate(group=[{0}])
- LogicalProject(DEPTNO=[$1], i=[$0])
- LogicalProject(i=[true], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(JOB=[$0], $f1=[true])
+ LogicalFilter(condition=[IS NULL($12)])
+ LogicalJoin(condition=[=($2, $11)], joinType=[left])
+ LogicalJoin(condition=[=($7, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], $f1=[true])
LogicalAggregate(group=[{0}])
- LogicalProject(JOB=[$1], i=[$0])
- LogicalProject(i=[true], JOB=[$2])
- LogicalFilter(condition=[=($5, 34)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], i=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(JOB=[$0], $f1=[true])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(JOB=[$2], i=[true])
+ LogicalFilter(condition=[=($5, 34)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -646,20 +638,17 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
<Resource name="planAfter">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalJoin(condition=[=($7, $10)], joinType=[inner])
- LogicalJoin(condition=[=($2, $9)], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}])
- LogicalProject(JOB=[$0])
- LogicalProject(JOB=[$2])
- LogicalFilter(condition=[=($5, 34)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], $f1=[true])
- LogicalAggregate(group=[{0}])
- LogicalProject(DEPTNO=[$1], i=[$0])
- LogicalProject(i=[true], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[=($7, $10)], joinType=[inner])
+ LogicalJoin(condition=[=($2, $9)], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(JOB=[$2])
+ LogicalFilter(condition=[=($5, 34)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], $f1=[true])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(DEPTNO=[$7], i=[true])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -707,14 +696,13 @@ LogicalProject(SAL=[$5])
<Resource name="planAfter">
<![CDATA[
LogicalProject(SAL=[$5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalJoin(condition=[AND(=($1, $12), =($0, $11))], joinType=[inner])
- LogicalJoin(condition=[AND(=($2, $10), =($0, $9))], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(EMPNO=[$0], ENAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[AND(=($1, $12), =($0, $11))], joinType=[inner])
+ LogicalJoin(condition=[AND(=($2, $10), =($0, $9))], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(EMPNO=[$0], ENAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -1957,18 +1945,14 @@ LogicalMinus(all=[false])
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EXPR$0=[+($0, $1)])
- LogicalProject(Z=[+($0, $1)], X=[$0])
- LogicalProject(X=[$0], Y=[$1])
- LogicalFilter(condition=[>(+($0, $1), 50)])
- LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]])
+LogicalProject(EXPR$0=[+(+($0, $1), $0)])
+ LogicalFilter(condition=[>(+($0, $1), 50)])
+ LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]])
]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EXPR$0=[+($0, $1)])
- LogicalProject(Z=[+($0, $1)], X=[$0])
- LogicalValues(tuples=[[]])
+LogicalValues(tuples=[[]])
]]>
</Resource>
</TestCase>
@@ -1981,11 +1965,9 @@ LogicalProject(EXPR$0=[+($0, $1)])
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EXPR$0=[+($0, $1)])
- LogicalProject(Z=[+($0, $1)], X=[$0])
- LogicalProject(X=[$0], Y=[$1])
- LogicalFilter(condition=[>(+($0, $1), 50)])
- LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]])
+LogicalProject(EXPR$0=[+(+($0, $1), $0)])
+ LogicalFilter(condition=[>(+($0, $1), 50)])
+ LogicalValues(tuples=[[{ 10, 1 }, { 30, 3 }]])
]]>
</Resource>
<Resource name="planAfter">
@@ -2212,16 +2194,14 @@ LogicalCalc(expr#0=[{inputs}], expr#1=['TABLE '], expr#2=['t'], U=[$t1],
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EXPR$0=[CASE(IS NULL($1), IS NULL($0), =(CAST($1):INTEGER NOT NULL, $0))])
- LogicalProject(EXPR$0=[2], EXPR$1=[null])
- LogicalValues(tuples=[[{ 0 }]])
+LogicalProject(EXPR$0=[CASE(IS NULL(null), IS NULL(2), =(CAST(null):INTEGER NOT NULL, 2))])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
LogicalProject(EXPR$0=[false])
- LogicalProject(EXPR$0=[2], EXPR$1=[null])
- LogicalValues(tuples=[[{ 0 }]])
+ LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
</TestCase>
@@ -2701,17 +2681,15 @@ LogicalProject(SAL=[$5])
LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(SAL=[$0], SAL0=[$1])
- LogicalProject(SAL=[$5], SAL0=[$8])
- LogicalJoin(condition=[OR(=($8, $5), =($8, 4))], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
+ LogicalProject(SAL=[$5], SAL0=[$8])
+ LogicalJoin(condition=[OR(=($8, $5), =($8, 4))], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
+ LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
+ LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(SAL=[$5])
LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
- LogicalAggregate(group=[{0}])
- LogicalProject(SAL=[$5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
- LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
- LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
]]>
</Resource>
<Resource name="planAfter">
@@ -2724,17 +2702,15 @@ LogicalProject(SAL=[$5])
LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
LogicalFilter(condition=[AND(OR(IS NOT NULL($0), =($0, 4)), OR(=($0, $1), =($0, 4)), OR(IS NOT NULL($1), =($1, 4)))])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(SAL=[$0], SAL0=[$1])
- LogicalProject(SAL=[$5], SAL0=[$8])
- LogicalJoin(condition=[OR(=($8, $5), =($8, 4))], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
+ LogicalProject(SAL=[$5], SAL0=[$8])
+ LogicalJoin(condition=[OR(=($8, $5), =($8, 4))], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
+ LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
+ LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
+ LogicalAggregate(group=[{0}])
+ LogicalProject(SAL=[$5])
LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
- LogicalAggregate(group=[{0}])
- LogicalProject(SAL=[$5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], SLACKER=[$8])
- LogicalFilter(condition=[AND(=($7, 20), >($5, 1000))])
- LogicalTableScan(table=[[CATALOG, SALES, EMPNULLABLES]])
]]>
</Resource>
</TestCase>
@@ -3066,13 +3042,12 @@ LogicalProject(EXPR$0=[CAST(/(SUM(+(+($1, *(2, $2)), *(3, $3))) OVER (PARTITION
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EXPR$0=[CAST(/($0, $1)):INTEGER NOT NULL])
- LogicalProject($0=[$2], $1=[$3])
- LogicalWindow(window#0=[window(partition {0} order by [] range between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING aggs [SUM($1), COUNT($1)])])
- LogicalProject(DEPTNO=[$0], $1=[+(+($1, *(2, $2)), *(3, $3))])
- LogicalAggregate(group=[{0}], agg#0=[SUM($1)], agg#1=[MIN($2)], agg#2=[AVG($2)])
- LogicalProject(DEPTNO=[$7], SAL=[$5], EMPNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+LogicalProject(EXPR$0=[CAST(/($2, $3)):INTEGER NOT NULL])
+ LogicalWindow(window#0=[window(partition {0} order by [] range between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING aggs [SUM($1), COUNT($1)])])
+ LogicalProject(DEPTNO=[$0], $1=[+(+($1, *(2, $2)), *(3, $3))])
+ LogicalAggregate(group=[{0}], agg#0=[SUM($1)], agg#1=[MIN($2)], agg#2=[AVG($2)])
+ LogicalProject(DEPTNO=[$7], SAL=[$5], EMPNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -3827,9 +3802,8 @@ LogicalAggregate(group=[{0, 1, 2}], groups=[[{0, 1, 2}, {0, 1}, {0}, {}]])
<![CDATA[
LogicalProject(DEPTNO=[$0], EXPR$1=[$2])
LogicalAggregate(group=[{0, 1}], EXPR$1=[MAX($2)])
- LogicalProject(DEPTNO=[$7], FOUR=[$9], MGR=[$3])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], FOUR=[4], MGR=[$3])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3850,9 +3824,8 @@ LogicalAggregate(group=[{0}], EXPR$1=[MAX($2)])
<![CDATA[
LogicalProject(DEPTNO=[$0], EXPR$1=[$2])
LogicalAggregate(group=[{0, 1}], EXPR$1=[MAX($2)])
- LogicalProject(DEPTNO=[$7], FOUR=[$9], ENAME=[$1])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], FOUR=[4], ENAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3873,9 +3846,8 @@ LogicalAggregate(group=[{0}], EXPR$1=[MAX($2)])
<![CDATA[
LogicalProject(DEPTNO=[$0], EXPR$1=[$4])
LogicalAggregate(group=[{0, 1, 2, 3}], EXPR$1=[MAX($4)])
- LogicalProject(DEPTNO=[$7], FOUR=[$9], TWO_PLUS_THREE=[$10], DEPTNO42=[$11], MGR=[$3])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)], MGR=[$3])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3897,9 +3869,8 @@ LogicalProject(DEPTNO=[$0], EXPR$1=[$2])
<![CDATA[
LogicalProject(DEPTNO=[$1], EXPR$1=[$2])
LogicalAggregate(group=[{0, 1}], EXPR$1=[MAX($2)])
- LogicalProject(FOUR=[$9], DEPTNO=[$7], MGR=[$3])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(FOUR=[4], DEPTNO=[$7], MGR=[$3])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3921,8 +3892,7 @@ LogicalAggregate(group=[{1}], EXPR$1=[MAX($2)])
LogicalProject(DEPTNO=[$1], EXPR$1=[$2])
LogicalAggregate(group=[{0, 1}], EXPR$1=[MAX($2)])
LogicalProject($f0=[+(42, 24)], DEPTNO=[$7], MGR=[$3])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3943,8 +3913,7 @@ LogicalAggregate(group=[{1}], EXPR$1=[MAX($2)])
<![CDATA[
LogicalAggregate(group=[{0, 1}], EXPR$2=[MAX($2)])
LogicalProject(EXPR$0=[4], EXPR$1=[+(2, 3)], MGR=[$3])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3965,9 +3934,8 @@ LogicalProject(EXPR$0=[$0], EXPR$1=[+(2, 3)], EXPR$2=[$1])
<Resource name="planBefore">
<![CDATA[
LogicalAggregate(group=[{0, 1}], EXPR$2=[MAX($2)])
- LogicalProject(EXPR$0=[4], EXPR$1=[+(2, 3)], FIVE=[$11])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], FIVE=[5], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[4], EXPR$1=[+(2, 3)], FIVE=[5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -3989,8 +3957,7 @@ LogicalProject(EXPR$0=[$0], EXPR$1=[+(2, 3)], EXPR$2=[$1])
<![CDATA[
LogicalAggregate(group=[{0, 1}], EXPR$2=[MAX($2)])
LogicalProject(EXPR$0=[4], EXPR$1=[+(2, 3)], $f2=[5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], FOUR=[4], TWO_PLUS_THREE=[+(2, 3)], FIVE=[5], DEPTNO42=[+($7, 42)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -4011,12 +3978,10 @@ select 2, deptno, job from emp as e2]]>
<Resource name="planBefore">
<![CDATA[
LogicalUnion(all=[true])
- LogicalProject(EXPR$0=[2], DEPTNO=[$1], JOB=[$0])
- LogicalProject(JOB=[$2], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EXPR$0=[2], DEPTNO=[$1], JOB=[$0])
- LogicalProject(JOB=[$2], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[2], DEPTNO=[$7], JOB=[$2])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[2], DEPTNO=[$7], JOB=[$2])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -4056,11 +4021,9 @@ select 2, 3 from emp as e2]]>
<![CDATA[
LogicalUnion(all=[true])
LogicalProject(EXPR$0=[2], EXPR$1=[3])
- LogicalProject(DUMMY=[0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalProject(EXPR$0=[2], EXPR$1=[3])
- LogicalProject(DUMMY=[0])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -5094,29 +5057,25 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$9], NAME=[$10])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
- LogicalJoin(condition=[AND(=($0, $10), =($9, $12))], joinType=[inner])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, $0)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[+($0, 5)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[$10], NAME=[$11])
+ LogicalJoin(condition=[AND(=($0, $10), =($9, $12))], joinType=[inner])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, $0)])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[+($0, 5)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[10], NAME=[$10])
- LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[10], NAME=[$11])
- LogicalJoin(condition=[=($9, 15)], joinType=[inner])
- LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 10)])
- LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[10], NAME=[$1], $f2=[15])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], DEPTNO0=[10], NAME=[$11])
+ LogicalJoin(condition=[=($9, 15)], joinType=[inner])
+ LogicalProject(EMPNO=[10], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, 10)])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[10], NAME=[$1], $f2=[15])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -5159,7 +5118,7 @@ LogicalProject(DEPTNO=[$0], NAME=[$1])
LogicalJoin(condition=[=($0, $2)], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalAggregate(group=[{0}])
- LogicalProject(DEPTNO9=[$7], $f0=[true])
+ LogicalProject(DEPTNO=[$7], $f0=[true])
LogicalFilter(condition=[>($5, 100)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
@@ -5168,7 +5127,7 @@ LogicalProject(DEPTNO=[$0], NAME=[$1])
<![CDATA[
SemiJoin(condition=[=($0, $2)], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(DEPTNO9=[$7], $f0=[true])
+ LogicalProject(DEPTNO=[$7], $f0=[true])
LogicalFilter(condition=[>($5, 100)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
@@ -5187,7 +5146,7 @@ LogicalProject(DEPTNO=[$0])
LogicalJoin(condition=[=($0, $2)], joinType=[inner])
SemiJoin(condition=[=($0, $2)], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(DEPTNO9=[$7], $f0=[true])
+ LogicalProject(DEPTNO=[$7], $f0=[true])
LogicalFilter(condition=[>($5, 100)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalTableScan(table=[[CATALOG, CUSTOMER, ACCOUNT]])
@@ -5200,7 +5159,7 @@ LogicalProject(DEPTNO=[$0])
SemiJoin(condition=[=($0, $1)], joinType=[inner])
LogicalProject(DEPTNO=[$0])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(DEPTNO9=[$1])
+ LogicalProject(DEPTNO=[$1])
LogicalFilter(condition=[>($0, 100)])
LogicalProject(SAL=[$5], DEPTNO=[$7])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
@@ -5242,9 +5201,8 @@ group by x, y]]>
<![CDATA[
LogicalProject(X=[$0], EXPR$1=[$2], Y=[$1])
LogicalAggregate(group=[{0, 1}], EXPR$1=[SUM($2)])
- LogicalProject(X=[$0], Y=[$1], Z=[$2])
- LogicalProject(X=[$7], Y=[$0], Z=[$5], ZZ=[*($5, 2)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(X=[$7], Y=[$0], Z=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -5267,9 +5225,8 @@ group by rollup(x, y)]]>
<![CDATA[
LogicalProject(X=[$0], EXPR$1=[$2], Y=[$1])
LogicalAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}, {}]], EXPR$1=[SUM($2)])
- LogicalProject(X=[$0], Y=[$1], Z=[$2])
- LogicalProject(X=[$7], Y=[$0], Z=[$5], ZZ=[*($5, 2)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(X=[$7], Y=[$0], Z=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
@@ -5341,11 +5298,10 @@ LogicalAggregate(group=[{0, 1}])
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EXPR$0=[$1], DEPTNO=[$0])
- LogicalProject(DEPTNO=[$1], $1=[$2])
- LogicalWindow(window#0=[window(partition {} order by [] range between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING aggs [COUNT($0)])])
- LogicalProject(EMPNO=[$0], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+LogicalProject(EXPR$0=[$2], DEPTNO=[$1])
+ LogicalWindow(window#0=[window(partition {} order by [] range between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING aggs [COUNT($0)])])
+ LogicalProject(EMPNO=[$0], DEPTNO=[$7])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planBefore">
@@ -5366,18 +5322,16 @@ from (
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(COL1=[$2], COL2=[$3])
+LogicalProject($0=[$2], $1=[$3])
LogicalWindow(window#0=[window(partition {1} order by [0] range between UNBOUNDED PRECEDING and CURRENT ROW aggs [SUM($2), SUM($3)])])
- LogicalProject(SAL=[$1], DEPTNO=[$2])
- LogicalProject(EMPNO=[$0], SAL=[$5], DEPTNO=[$7])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(SAL=[$5], DEPTNO=[$7])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(COL1=[$1], COL2=[$2])
- LogicalProject(EMPNO=[$0], COL1=[SUM(100) OVER (PARTITION BY $7 ORDER BY $5 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)], COL2=[SUM(1000) OVER (PARTITION BY $7 ORDER BY $5 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+LogicalProject(COL1=[SUM(100) OVER (PARTITION BY $7 ORDER BY $5 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)], COL2=[SUM(1000) OVER (PARTITION BY $7 ORDER BY $5 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -5681,14 +5635,16 @@ right join dept c on b.deptno > 10
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(NAME=[$1])
- LogicalJoin(condition=[$4], joinType=[right])
- LogicalProject(DEPTNO=[$0], NAME=[$1], DEPTNO0=[$2], NAME0=[$3], $f4=[>($2, 10)])
+LogicalProject(NAME=[$0])
+ LogicalJoin(condition=[$1], joinType=[right])
+ LogicalProject(NAME=[$1], $f4=[$5])
LogicalJoin(condition=[$4], joinType=[left])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[>($0, 10)])
+ LogicalProject(DEPTNO=[$0], NAME=[$1])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[>($0, 10)], >=[>($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(DEPTNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="planAfter">
@@ -5911,9 +5867,8 @@ group by e.job,d.name]]>
LogicalAggregate(group=[{2, 11}])
LogicalJoin(condition=[AND(=($2, $11), =($9, $12))], joinType=[inner])
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, $0)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[+($0, 5)])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
@@ -5924,9 +5879,8 @@ LogicalAggregate(group=[{0, 2}])
LogicalJoin(condition=[AND(=($0, $2), =($1, $3))], joinType=[inner])
LogicalAggregate(group=[{2, 9}])
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($7, $0)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{1, 2}])
LogicalProject(DEPTNO=[$0], NAME=[$1], $f2=[+($0, 5)])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
@@ -6095,15 +6049,14 @@ LogicalProject(JOB=[$0], EXPR$1=[$2])
<Resource name="planAfter">
<![CDATA[
LogicalProject(JOB=[$0], EXPR$1=[$2])
- LogicalProject(JOB=[$0], NAME=[$2], $f4=[$4])
- LogicalProject(JOB=[$0], EXPR$1=[$1], NAME=[$2], $f1=[$3], $f4=[CAST(*($1, $3)):INTEGER NOT NULL])
- LogicalJoin(condition=[=($0, $2)], joinType=[inner])
- LogicalAggregate(group=[{2}], EXPR$1=[SUM($5)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[=($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{1}], agg#0=[COUNT()])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(JOB=[$0], NAME=[$2], $f4=[CAST(*($1, $3)):INTEGER NOT NULL])
+ LogicalJoin(condition=[=($0, $2)], joinType=[inner])
+ LogicalAggregate(group=[{2}], EXPR$1=[SUM($5)])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
+ LogicalFilter(condition=[=($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{1}], agg#0=[COUNT()])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -6643,13 +6596,12 @@ LogicalProject(JOB=[$0], MIN_SAL=[$2], MIN_DEPTNO=[$3], SUM_SAL_PLUS=[+($4, 1)],
<Resource name="planAfter">
<![CDATA[
LogicalProject(JOB=[$0], MIN_SAL=[$2], MIN_DEPTNO=[$3], SUM_SAL_PLUS=[+($4, 1)], MAX_SAL=[$5], SUM_SAL_2=[$4], COUNT_SAL=[$6], COUNT_MGR=[$7])
- LogicalProject(JOB=[$0], NAME=[$7], MIN_SAL=[$1], MIN_DEPTNO=[$2], $f9=[$9], MAX_SAL=[$4], $f10=[$10], $f11=[$11])
- LogicalProject(JOB=[$0], MIN_SAL=[$1], MIN_DEPTNO=[$2], SUM_SAL_2=[$3], MAX_SAL=[$4], COUNT_SAL=[$5], COUNT_MGR=[$6], NAME=[$7], $f1=[$8], $f9=[CAST(*($3, $8)):INTEGER NOT NULL], $f10=[*($5, $8)], $f11=[*($6, $8)])
- LogicalJoin(condition=[=($0, $7)], joinType=[inner])
- LogicalAggregate(group=[{2}], MIN_SAL=[MIN($5)], MIN_DEPTNO=[MIN($7)], SUM_SAL_2=[SUM($5)], MAX_SAL=[MAX($5)], COUNT_SAL=[COUNT()], COUNT_MGR=[COUNT($3)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{1}], agg#0=[COUNT()])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(JOB=[$0], NAME=[$7], MIN_SAL=[$1], MIN_DEPTNO=[$2], $f9=[CAST(*($3, $8)):INTEGER NOT NULL], MAX_SAL=[$4], $f10=[*($5, $8)], $f11=[*($6, $8)])
+ LogicalJoin(condition=[=($0, $7)], joinType=[inner])
+ LogicalAggregate(group=[{2}], MIN_SAL=[MIN($5)], MIN_DEPTNO=[MIN($7)], SUM_SAL_2=[SUM($5)], MAX_SAL=[MAX($5)], COUNT_SAL=[COUNT()], COUNT_MGR=[COUNT($3)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{1}], agg#0=[COUNT()])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -7190,13 +7142,11 @@ LogicalSort(sort0=[$0], dir0=[ASC], fetch=[10])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[10])
LogicalUnion(all=[true])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[10])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[10])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -7222,10 +7172,9 @@ LogicalProject(EMPNO=[$0], D=[CASE(IS NOT NULL($10), true, false)])
LogicalJoin(condition=[=($7, $9)], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$7])
- LogicalFilter(condition=[<($0, 20)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -7255,10 +7204,9 @@ LogicalProject(EMPNO=[$0])
LogicalFilter(condition=[OR(IS NOT NULL($11), <($5, 100))])
LogicalJoin(condition=[AND(=($0, $9), =($7, $10))], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EMPNO=[$0], DEPTNO=[$1], i=[true])
- LogicalProject(EMPNO=[$0], DEPTNO=[$7])
- LogicalFilter(condition=[<($0, 20)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], DEPTNO=[$7], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -7321,10 +7269,9 @@ LogicalProject(EMPNO=[$0])
LogicalJoin(condition=[=($7, $9)], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$7])
- LogicalFilter(condition=[<($0, 20)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$7], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -7483,10 +7430,9 @@ LogicalProject(EMPNO=[$0], DEPTNO=[$7])
LogicalProject(EMPNO=[$0], D=[CASE(IS NOT NULL($11), true, false)])
LogicalJoin(condition=[AND(=($0, $9), =($7, $10))], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EMPNO=[$0], DEPTNO=[$1], i=[true])
- LogicalProject(EMPNO=[$0], DEPTNO=[$7])
- LogicalFilter(condition=[<($0, 20)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$0], DEPTNO=[$7], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -7689,13 +7635,11 @@ LogicalSort(sort0=[$0], dir0=[ASC])
LogicalSort(sort0=[$0], dir0=[ASC])
LogicalUnion(all=[true])
LogicalSort(sort0=[$0], dir0=[ASC])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalSort(sort0=[$0], dir0=[ASC])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -7722,13 +7666,11 @@ LogicalSort(sort0=[$0], dir0=[ASC], fetch=[0])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[0])
LogicalUnion(all=[true])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[0])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalSort(sort0=[$0], dir0=[ASC], fetch=[0])
- LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -7826,34 +7768,31 @@ from e2]]>
</Resource>
<Resource name="planBefore">
<![CDATA[
-LogicalProject(EMPNO=[$0], D=[IN($1, {
+LogicalProject(EMPNO=[$0], D=[IN(CASE(true, CAST($7):INTEGER, null), {
LogicalProject(DEPTNO=[$1])
LogicalFilter(condition=[<($0, 20)])
LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
})])
- LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
-LogicalProject(EMPNO=[$0], D=[CASE(=($2, 0), false, IS NULL($1), null, IS NOT NULL($5), true, <($3, $2), null, false)])
- LogicalJoin(condition=[=($1, $4)], joinType=[left])
+LogicalProject(EMPNO=[$0], D=[CASE(=($9, 0), false, IS NULL(CASE(true, CAST($7):INTEGER, null)), null, IS NOT NULL($12), true, <($10, $9), null, false)])
+ LogicalJoin(condition=[=(CAST($7):INTEGER, $11)], joinType=[left])
LogicalJoin(condition=[true], joinType=[inner])
- LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], c=[COUNT()], ck=[COUNT($0)])
LogicalProject(DEPTNO=[$1])
LogicalFilter(condition=[<($0, 20)])
LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$1])
- LogicalFilter(condition=[<($0, 20)])
- LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$1], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalProject(EMPNO=[$0], DEPTNO=[CASE(true, CAST($7):INTEGER, null)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -7897,10 +7836,9 @@ LogicalProject(EMPNO=[$0])
LogicalFilter(condition=[<($0, 20)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{0, 1}])
- LogicalProject(EXPR$0=[$0], i=[true])
- LogicalProject(EXPR$0=[CASE(true, CAST($7):INTEGER, null)])
- LogicalFilter(condition=[<($0, 20)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EXPR$0=[CASE(true, CAST($7):INTEGER, null)], i=[true])
+ LogicalFilter(condition=[<($0, 20)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -8038,11 +7976,10 @@ LogicalProject(SAL=[$5])
<Resource name="planAfter">
<![CDATA[
LogicalProject(SAL=[$5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalJoin(condition=[AND(=($2, $10), =($0, $9))], joinType=[inner])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalJoin(condition=[AND(=($2, $10), =($0, $9))], joinType=[inner])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(DEPTNO=[$0], NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -8238,16 +8175,14 @@ LogicalProject(ENAME=[$0])
<Resource name="planAfter">
<![CDATA[
LogicalProject(ENAME=[$0])
- LogicalProject(ENAME=[$0], DEPTNO=[$1], SALPLUS=[$2])
- LogicalJoin(condition=[AND(=($2, $4), =($1, $3))], joinType=[inner])
- LogicalProject(ENAME=[$1], DEPTNO=[$7], SALPLUS=[+($5, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0, 1}])
- LogicalProject(DEPTNO=[$0], $f9=[$1])
- LogicalProject(DEPTNO=[$7], $f9=[$9])
- LogicalFilter(condition=[=(+($5, 1), $9)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($5, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[AND(=($2, $4), =($1, $3))], joinType=[inner])
+ LogicalProject(ENAME=[$1], DEPTNO=[$7], SALPLUS=[+($5, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0, 1}])
+ LogicalProject(DEPTNO=[$7], $f9=[$9])
+ LogicalFilter(condition=[=(+($5, 1), $9)])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($5, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -8287,16 +8222,14 @@ LogicalProject(NAME=[$0])
<Resource name="planAfter">
<![CDATA[
LogicalProject(NAME=[$0])
- LogicalProject(NAME=[$0], DEPTNO=[$1], DEPTNOMINUS=[$2])
- LogicalJoin(condition=[AND(=($2, $4), =($1, $3))], joinType=[inner])
- LogicalProject(NAME=[$1], DEPTNO=[$0], DEPTNOMINUS=[-($0, 10)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalAggregate(group=[{0, 1}])
- LogicalProject(DEPTNO=[$0], $f9=[$1])
- LogicalProject(DEPTNO=[$7], $f9=[$9])
- LogicalFilter(condition=[=(+($5, 1), $9)])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($5, 1)])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalJoin(condition=[AND(=($2, $4), =($1, $3))], joinType=[inner])
+ LogicalProject(NAME=[$1], DEPTNO=[$0], DEPTNOMINUS=[-($0, 10)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalAggregate(group=[{0, 1}])
+ LogicalProject(DEPTNO=[$7], $f9=[$9])
+ LogicalFilter(condition=[=(+($5, 1), $9)])
+ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], $f9=[+($5, 1)])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
@@ -8321,18 +8254,15 @@ LogicalProject(DEPTNO=[$0])
<Resource name="planAfter">
<![CDATA[
LogicalProject(SAL=[$5])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[NOT(CASE(=($10, 0), false, IS NOT NULL($13), true, <($11, $10), true, false))])
- LogicalJoin(condition=[AND(=($0, $12), =($2, $14))], joinType=[left])
- LogicalJoin(condition=[=($2, $9)], joinType=[left])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}], c=[COUNT()], ck=[COUNT($1)])
- LogicalProject(NAME=[$1], DEPTNO=[$0])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
- LogicalProject(DEPTNO=[$0], i=[true], NAME=[$1])
- LogicalProject(DEPTNO=[$0], NAME=[$1])
+ LogicalFilter(condition=[NOT(CASE(=($10, 0), false, IS NOT NULL($13), true, <($11, $10), true, false))])
+ LogicalJoin(condition=[AND(=($0, $12), =($2, $14))], joinType=[left])
+ LogicalJoin(condition=[=($2, $9)], joinType=[left])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}], c=[COUNT()], ck=[COUNT($1)])
+ LogicalProject(NAME=[$1], DEPTNO=[$0])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalProject(DEPTNO=[$0], i=[true], NAME=[$1])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="planMid">
@@ -8349,9 +8279,8 @@ LogicalProject(SAL=[$5])
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
LogicalFilter(condition=[=($cor0.EMPNO, $0)])
LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$0])
- LogicalFilter(condition=[=($cor0.JOB, $1)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($cor0.JOB, $1)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -8379,8 +8308,7 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalJoin(condition=[=($0, $9)], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
<Resource name="planAfter">
@@ -8391,8 +8319,7 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalJoin(condition=[=($0, $9)], joinType=[left])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalProject(DEPTNO=[$0], i=[true])
- LogicalProject(DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
</TestCase>
@@ -8429,40 +8356,34 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$
LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalFilter(condition=[=($cor0.EMPNO, $0)])
- LogicalProject(EMPNO=[$0], i=[true])
- LogicalProject(EMPNO=[$1])
- LogicalFilter(condition=[AND(>($2, 2), =($cor0.ENAME, $0))])
- LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$1], i=[true])
+ LogicalFilter(condition=[AND(>($2, 2), =($cor0.ENAME, $0))])
+ LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
<Resource name="planAfter">
<![CDATA[
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[NOT(CASE(=($10, 0), false, IS NOT NULL($13), true, <($11, $10), true, false))])
- LogicalJoin(condition=[AND(=($0, $12), =($1, $14))], joinType=[left])
- LogicalJoin(condition=[=($1, $9)], joinType=[left])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalAggregate(group=[{0}], c=[COUNT()], ck=[COUNT($1)])
- LogicalProject(ENAME=[$1], EMPNO=[$0])
- LogicalProject(EMPNO=[$1], ENAME=[$0])
- LogicalFilter(condition=[>($2, 2)])
- LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
- LogicalTableScan(table=[[CATALOG, SALES, EMP]])
- LogicalProject(EMPNO=[$0], i=[true], ENAME=[$1])
- LogicalProject(EMPNO=[$1], ENAME=[$0])
+ LogicalFilter(condition=[NOT(CASE(=($10, 0), false, IS NOT NULL($13), true, <($11, $10), true, false))])
+ LogicalJoin(condition=[AND(=($0, $12), =($1, $14))], joinType=[left])
+ LogicalJoin(condition=[=($1, $9)], joinType=[left])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalAggregate(group=[{0}], c=[COUNT()], ck=[COUNT($1)])
+ LogicalProject(ENAME=[$0], EMPNO=[$1])
LogicalFilter(condition=[>($2, 2)])
LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+ LogicalProject(EMPNO=[$1], i=[true], ENAME=[$0])
+ LogicalFilter(condition=[>($2, 2)])
+ LogicalProject(ENAME=[$1], EMPNO=[$0], R=[$5])
+ LogicalTableScan(table=[[CATALOG, SALES, EMP]])
]]>
</Resource>
</TestCase>
<TestCase name="testProjectCorrelateTransposeWithExprCond">
<Resource name="sql">
- <![CDATA[select t1.name, t2.ename
-from DEPT_NESTED as t1,
-unnest(t1.employees) as t2]]>
+ <![CDATA[select t1.name, t2.ename from DEPT_NESTED as t1, unnest(t1.employees) as t2]]>
</Resource>
<Resource name="planBefore">
<![CDATA[
@@ -8474,7 +8395,6 @@ LogicalProject(NAME=[$1], ENAME=[$5])
LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
-
<Resource name="planAfter">
<![CDATA[
LogicalProject(NAME=[$0], ENAME=[$2])
@@ -8490,9 +8410,7 @@ LogicalProject(NAME=[$0], ENAME=[$2])
</TestCase>
<TestCase name="testProjectCorrelateTransposeDynamic">
<Resource name="sql">
- <![CDATA[select t1.c_nationkey, t2.fake_col2
-from SALES.CUSTOMER as t1,
-unnest(t1.fake_col) as t2]]>
+ <![CDATA[select t1.c_nationkey, t2.a as fake_col2 from SALES.CUSTOMER as t1, unnest(t1.fake_col) as t2(a)]]>
</Resource>
<Resource name="planBefore">
<![CDATA[
@@ -8519,9 +8437,7 @@ LogicalProject(C_NATIONKEY=[$1], FAKE_COL2=[$2])
</TestCase>
<TestCase name="testProjectCorrelateTranspose">
<Resource name="sql">
- <![CDATA[select t1.name, t2.ename
-from DEPT_NESTED as t1,
-unnest(t1.employees) as t2]]>
+ <![CDATA[select t1.name, t2.ename from DEPT_NESTED as t1, unnest(t1.employees) as t2]]>
</Resource>
<Resource name="planBefore">
<![CDATA[
@@ -8533,7 +8449,6 @@ LogicalProject(NAME=[$1], ENAME=[$5])
LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
-
<Resource name="planAfter">
<![CDATA[
LogicalProject(NAME=[$0], ENAME=[$2])
@@ -8563,7 +8478,6 @@ LogicalProject(NAME=[$1], ENAME=[$5])
LogicalValues(tuples=[[{ 0 }]])
]]>
</Resource>
-
<Resource name="planAfter">
<![CDATA[
LogicalProject(NAME=[$0], ENAME=[$2])
@@ -8582,35 +8496,35 @@ LogicalProject(NAME=[$0], ENAME=[$2])
<![CDATA[
LogicalProject(EMPNO=[$0])
LogicalFilter(condition=[IS NOT NULL($9)])
- LogicalCorrelate(correlation=[$cor1], joinType=[left], requiredColumns=[{0, 7}])
+ LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{7}])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EMPNO=[$cor1.EMPNO], DEPTNO=[$0])
- LogicalFilter(condition=[=($cor1.DEPTNO, $0)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($cor0.DEPTNO, $0)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
-
<Resource name="planAfter">
<![CDATA[
LogicalProject(EMPNO=[$0])
LogicalFilter(condition=[IS NOT NULL($1)])
LogicalProject(EMPNO=[$0], $f0=[$2])
- LogicalCorrelate(correlation=[$cor2], joinType=[left], requiredColumns=[{0, 1}])
+ LogicalCorrelate(correlation=[$cor2], joinType=[left], requiredColumns=[{1}])
LogicalProject(EMPNO=[$0], DEPTNO=[$7])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalProject($f0=[$0])
LogicalAggregate(group=[{}], agg#0=[MIN($0)])
LogicalProject($f0=[true])
- LogicalProject(EMPNO=[$cor2.EMPNO], DEPTNO=[$0])
- LogicalFilter(condition=[=($cor2.DEPTNO, $0)])
- LogicalProject(DEPTNO=[$0])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
+ LogicalFilter(condition=[=($cor2.DEPTNO, $0)])
+ LogicalProject(DEPTNO=[$0])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
]]>
</Resource>
+ <Resource name="sql">
+ <![CDATA[SELECT e1.empno
+FROM emp e1 where exists (select empno, deptno from dept d2 where e1.deptno = d2.deptno)]]>
+ </Resource>
</TestCase>
-
<TestCase name="testProjectCorrelateTransposeRuleSemiCorrelate">
<Resource name="planAfter">
<![CDATA[
@@ -8623,7 +8537,6 @@ LogicalCorrelate(correlation=[$cor0], joinType=[semi], requiredColumns=[{0}])
]]>
</Resource>
</TestCase>
-
<TestCase name="testProjectCorrelateTransposeRuleAntiCorrelate">
<Resource name="planAfter">
<![CDATA[
@@ -8636,5 +8549,4 @@ LogicalCorrelate(correlation=[$cor0], joinType=[anti], requiredColumns=[{0}])
]]>
</Resource>
</TestCase>
-
</Root>