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

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


The following commit(s) were added to refs/heads/main by this push:
     new 507ee67f03 Opened misc and scalar iq files in CoreQuidemTest2
507ee67f03 is described below

commit 507ee67f03dfef12dcc1937497e149be6404124d
Author: Zhen Chen <[email protected]>
AuthorDate: Wed Jan 21 23:02:06 2026 +0800

    Opened misc and scalar iq files in CoreQuidemTest2
---
 .../org/apache/calcite/test/CoreQuidemTest2.java   |  2 -
 core/src/test/resources/sql/misc.iq                | 80 ++++++++++++++++++++++
 core/src/test/resources/sql/new-decorr.iq          | 36 ++++++++++
 core/src/test/resources/sql/scalar.iq              | 47 ++++++++++++-
 4 files changed, 162 insertions(+), 3 deletions(-)

diff --git a/core/src/test/java/org/apache/calcite/test/CoreQuidemTest2.java 
b/core/src/test/java/org/apache/calcite/test/CoreQuidemTest2.java
index 5ad60a3221..f0887b7189 100644
--- a/core/src/test/java/org/apache/calcite/test/CoreQuidemTest2.java
+++ b/core/src/test/java/org/apache/calcite/test/CoreQuidemTest2.java
@@ -49,9 +49,7 @@ public static void main(String[] args) throws Exception {
     paths.remove("sql/unnest.iq");
     paths.remove("sql/some.iq");
     paths.remove("sql/sub-query.iq");
-    paths.remove("sql/scalar.iq");
     paths.remove("sql/measure-paper.iq");
-    paths.remove("sql/misc.iq");
     return paths;
   }
 
diff --git a/core/src/test/resources/sql/misc.iq 
b/core/src/test/resources/sql/misc.iq
index d4d8dd93d7..aa73ca9a08 100644
--- a/core/src/test/resources/sql/misc.iq
+++ b/core/src/test/resources/sql/misc.iq
@@ -531,6 +531,7 @@ where exists (select 1 from "hr"."emps");
 (3 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..1=[{inputs}], deptno=[$t0])
   EnumerableNestedLoopJoin(condition=[true], joinType=[inner])
     EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
@@ -539,6 +540,15 @@ EnumerableCalc(expr#0..1=[{inputs}], deptno=[$t0])
       EnumerableCalc(expr#0..4=[{inputs}], expr#5=[true], i=[$t5])
         EnumerableTableScan(table=[[hr, emps]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableNestedLoopJoin(condition=[true], joinType=[semi])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+  EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], DUMMY=[$t5])
+    EnumerableTableScan(table=[[hr, emps]])
+!plan
+!}
 
 # Un-correlated NOT EXISTS
 select "deptno" from "hr"."depts"
@@ -550,6 +560,7 @@ where not exists (select 1 from "hr"."emps");
 (0 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..1=[{inputs}], expr#2=[IS NULL($t1)], deptno=[$t0], 
$condition=[$t2])
   EnumerableNestedLoopJoin(condition=[true], joinType=[left])
     EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
@@ -558,6 +569,15 @@ EnumerableCalc(expr#0..1=[{inputs}], expr#2=[IS 
NULL($t1)], deptno=[$t0], $condi
       EnumerableCalc(expr#0..4=[{inputs}], expr#5=[true], i=[$t5])
         EnumerableTableScan(table=[[hr, emps]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableNestedLoopJoin(condition=[true], joinType=[anti])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+  EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], DUMMY=[$t5])
+    EnumerableTableScan(table=[[hr, emps]])
+!plan
+!}
 
 # Un-correlated EXISTS (table empty)
 select "deptno" from "hr"."depts"
@@ -569,6 +589,7 @@ where exists (select 1 from "hr"."emps" where "empid" < 0);
 (0 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..1=[{inputs}], deptno=[$t0])
   EnumerableNestedLoopJoin(condition=[true], joinType=[inner])
     EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
@@ -577,6 +598,15 @@ EnumerableCalc(expr#0..1=[{inputs}], deptno=[$t0])
       EnumerableCalc(expr#0..4=[{inputs}], expr#5=[true], 
expr#6=[CAST($t0):INTEGER NOT NULL], expr#7=[0], expr#8=[<($t6, $t7)], i=[$t5], 
$condition=[$t8])
         EnumerableTableScan(table=[[hr, emps]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableNestedLoopJoin(condition=[true], joinType=[semi])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+  EnumerableCalc(expr#0..4=[{inputs}], expr#5=[CAST($t0):INTEGER NOT NULL], 
expr#6=[0], expr#7=[<($t5, $t6)], empid=[$t0], $condition=[$t7])
+    EnumerableTableScan(table=[[hr, emps]])
+!plan
+!}
 
 # Un-correlated NOT EXISTS (table empty)
 select "deptno" from "hr"."depts"
@@ -591,6 +621,7 @@ where not exists (select 1 from "hr"."emps" where "empid" < 
0);
 (3 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..1=[{inputs}], expr#2=[IS NULL($t1)], deptno=[$t0], 
$condition=[$t2])
   EnumerableNestedLoopJoin(condition=[true], joinType=[left])
     EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
@@ -599,6 +630,15 @@ EnumerableCalc(expr#0..1=[{inputs}], expr#2=[IS 
NULL($t1)], deptno=[$t0], $condi
       EnumerableCalc(expr#0..4=[{inputs}], expr#5=[true], 
expr#6=[CAST($t0):INTEGER NOT NULL], expr#7=[0], expr#8=[<($t6, $t7)], i=[$t5], 
$condition=[$t8])
         EnumerableTableScan(table=[[hr, emps]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableNestedLoopJoin(condition=[true], joinType=[anti])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+  EnumerableCalc(expr#0..4=[{inputs}], expr#5=[CAST($t0):INTEGER NOT NULL], 
expr#6=[0], expr#7=[<($t5, $t6)], empid=[$t0], $condition=[$t7])
+    EnumerableTableScan(table=[[hr, emps]])
+!plan
+!}
 
 # EXISTS
 select * from "hr"."emps"
@@ -614,10 +654,19 @@ where exists (
 (3 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableHashJoin(condition=[=($1, $5)], joinType=[semi])
   EnumerableTableScan(table=[[hr, emps]])
   EnumerableTableScan(table=[[hr, depts]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $5)], joinType=[semi])
+  EnumerableTableScan(table=[[hr, emps]])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+!plan
+!}
 
 # NOT EXISTS
 # Right results, but it would be better if the plan used 
EnumerableCorrelateRel; see [CALCITE-374]
@@ -632,6 +681,7 @@ where not exists (
 (1 row)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..6=[{inputs}], expr#7=[IS NULL($t6)], 
proj#0..4=[{exprs}], $condition=[$t7])
   EnumerableMergeJoin(condition=[=($1, $5)], joinType=[left])
     EnumerableSort(sort0=[$1], dir0=[ASC])
@@ -641,6 +691,14 @@ EnumerableCalc(expr#0..6=[{inputs}], expr#7=[IS 
NULL($t6)], proj#0..4=[{exprs}],
         EnumerableAggregate(group=[{0}])
           EnumerableTableScan(table=[[hr, depts]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $5)], joinType=[anti])
+  EnumerableTableScan(table=[[hr, emps]])
+  EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+    EnumerableTableScan(table=[[hr, depts]])
+!plan
+!}
 
 # NOT EXISTS .. OR NOT EXISTS
 # Right results, but it would be better if the plan used 
EnumerableCorrelateRel; see [CALCITE-374]
@@ -659,6 +717,7 @@ or not exists (
 (3 rows)
 
 !ok
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..8=[{inputs}], expr#9=[IS NULL($t5)], expr#10=[IS 
NULL($t8)], expr#11=[OR($t9, $t10)], proj#0..4=[{exprs}], $condition=[$t11])
   EnumerableMergeJoin(condition=[=($6, $7)], joinType=[left])
     EnumerableSort(sort0=[$6], dir0=[ASC])
@@ -676,6 +735,27 @@ EnumerableCalc(expr#0..8=[{inputs}], expr#9=[IS 
NULL($t5)], expr#10=[IS NULL($t8
           EnumerableCalc(expr#0..3=[{inputs}], expr#4=[90], expr#5=[+($t0, 
$t4)], $f4=[$t5])
             EnumerableTableScan(table=[[hr, depts]])
 !plan
+!}
+!if (use_new_decorr) {
+EnumerableCalc(expr#0..6=[{inputs}], expr#7=[NOT($t5)], expr#8=[NOT($t6)], 
expr#9=[OR($t7, $t8)], proj#0..4=[{exprs}], $condition=[$t9])
+  EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($0, $7)], 
joinType=[left_mark])
+    EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $5)], 
joinType=[left_mark])
+      EnumerableTableScan(table=[[hr, emps]])
+      EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+        EnumerableTableScan(table=[[hr, depts]])
+    EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t2], empid=[$t0])
+      EnumerableHashJoin(condition=[=($1, $3)], joinType=[inner])
+        EnumerableCalc(expr#0=[{inputs}], expr#1=[CAST($t0):INTEGER NOT NULL], 
proj#0..1=[{exprs}])
+          EnumerableAggregate(group=[{0}])
+            EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $2)], 
joinType=[left_mark])
+              EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}])
+                EnumerableTableScan(table=[[hr, emps]])
+              EnumerableCalc(expr#0..3=[{inputs}], deptno=[$t0])
+                EnumerableTableScan(table=[[hr, depts]])
+        EnumerableCalc(expr#0..3=[{inputs}], expr#4=[90], expr#5=[+($t0, 
$t4)], deptno=[$t0], $f1=[$t5])
+          EnumerableTableScan(table=[[hr, depts]])
+!plan
+!}
 
 # Left join to a relation with one row is recognized as a trivial semi-join
 # and eliminated.
diff --git a/core/src/test/resources/sql/new-decorr.iq 
b/core/src/test/resources/sql/new-decorr.iq
index 1c60b58a1d..8c1bc0b23d 100644
--- a/core/src/test/resources/sql/new-decorr.iq
+++ b/core/src/test/resources/sql/new-decorr.iq
@@ -169,4 +169,40 @@ EnumerableCalc(expr#0..7=[{inputs}], 
expr#8=[CAST($t7):INTEGER], expr#9=[10], ex
 !plan
 !}
 
+# # This case comes from scalar.iq [CALCITE-709]
+# Aggregate functions do not support type promotion, so a cast is added to 
pass the test.
+select deptno, (select sum(cast(empno as bigint)) from "scott".emp where 
deptno = dept.deptno limit 0) as x from "scott".dept;
++--------+---+
+| DEPTNO | X |
++--------+---+
+|     10 |   |
+|     20 |   |
+|     30 |   |
+|     40 |   |
++--------+---+
+(4 rows)
+
+!ok
+
+!if (use_old_decorr) {
+EnumerableCorrelate(correlation=[$cor0], joinType=[left], 
requiredColumns=[{0}])
+  EnumerableCalc(expr#0..2=[{inputs}], DEPTNO=[$t0])
+    EnumerableTableScan(table=[[scott, DEPT]])
+  EnumerableValues(tuples=[[]])
+!plan
+!}
+
+!if (use_new_decorr) {
+EnumerableCalc(expr#0..3=[{inputs}], DEPTNO=[$t0], EXPR$0=[$t2])
+  EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($0, $1)], joinType=[left])
+    EnumerableCalc(expr#0..2=[{inputs}], DEPTNO=[$t0])
+      EnumerableTableScan(table=[[scott, DEPT]])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[0], expr#4=[<=($t2, $t3)], 
proj#0..2=[{exprs}], $condition=[$t4])
+      EnumerableWindow(window#0=[window(partition {0} rows between UNBOUNDED 
PRECEDING and CURRENT ROW aggs [ROW_NUMBER()])])
+        EnumerableAggregate(group=[{1}], EXPR$0=[$SUM0($0)])
+          EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t0):BIGINT NOT 
NULL], expr#9=[IS NOT NULL($t7)], EMPNO=[$t8], DEPTNO=[$t7], $condition=[$t9])
+            EnumerableTableScan(table=[[scott, EMP]])
+!plan
+!}
+
 # End new-decorr.iq
diff --git a/core/src/test/resources/sql/scalar.iq 
b/core/src/test/resources/sql/scalar.iq
index 91cd88279a..6eeb2167c2 100644
--- a/core/src/test/resources/sql/scalar.iq
+++ b/core/src/test/resources/sql/scalar.iq
@@ -164,7 +164,7 @@ select deptno, (select sum(cast(empno as bigint)) from 
"scott".emp where deptno
 !ok
 
 # [CALCITE-709] Errors with LIMIT inside scalar sub-query
-select deptno, (select sum(empno) from "scott".emp where deptno = dept.deptno 
limit 0) as x from "scott".dept;
+select deptno, (select sum(cast(empno as bigint)) from "scott".emp where 
deptno = dept.deptno limit 0) as x from "scott".dept;
 +--------+---+
 | DEPTNO | X |
 +--------+---+
@@ -340,6 +340,8 @@ WHERE sal > 10;
 (14 rows)
 
 !ok
+
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[0:BIGINT], 
expr#6=[CASE($t4, $t5, $t3)], EMPNO=[$t0], $f1=[$t6])
   EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $2)], joinType=[left])
     EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 2)], 
expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], EMPNO=[$t0], MGR=[$t3], 
$condition=[$t10])
@@ -357,6 +359,27 @@ EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS 
NULL($t3)], expr#5=[0:BIGINT], e
               EnumerableCalc(expr#0..7=[{inputs}], 
expr#8=[CAST($t5):DECIMAL(12, 2)], expr#9=[10.00:DECIMAL(12, 2)], 
expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], $condition=[$t10])
                 EnumerableTableScan(table=[[scott, EMP]])
 !plan
+!}
+
+!if (use_new_decorr) {
+EnumerableCalc(expr#0..3=[{inputs}], EMPNO=[$t0], $f1=[$t3])
+  EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($1, $2)], joinType=[left])
+    EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 2)], 
expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], EMPNO=[$t0], MGR=[$t3], 
$condition=[$t10])
+      EnumerableTableScan(table=[[scott, EMP]])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[IS NOT NULL($t2)], 
expr#4=[0], expr#5=[CASE($t3, $t2, $t4)], MGR=[$t0], $f2=[$t5])
+      EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($0, $1)], 
joinType=[left])
+        EnumerableAggregate(group=[{3}])
+          EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 
2)], expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], 
$condition=[$t10])
+            EnumerableTableScan(table=[[scott, EMP]])
+        EnumerableAggregate(group=[{2}], C=[COUNT()])
+          EnumerableNestedLoopJoin(condition=[<($1, $2)], joinType=[inner])
+            EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], MGR=[$t3])
+              EnumerableTableScan(table=[[scott, EMP]])
+            EnumerableAggregate(group=[{3}])
+              EnumerableCalc(expr#0..7=[{inputs}], 
expr#8=[CAST($t5):DECIMAL(12, 2)], expr#9=[10.00:DECIMAL(12, 2)], 
expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], $condition=[$t10])
+                EnumerableTableScan(table=[[scott, EMP]])
+!plan
+!}
 
 !set trimfields false
 
@@ -386,6 +409,8 @@ WHERE sal > 10;
 (14 rows)
 
 !ok
+
+!if (use_old_decorr) {
 EnumerableCalc(expr#0..9=[{inputs}], expr#10=[IS NULL($t9)], 
expr#11=[0:BIGINT], expr#12=[CASE($t10, $t11, $t9)], EMPNO=[$t0], $f1=[$t12])
   EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($3, $8)], joinType=[left])
     EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 2)], 
expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], 
$condition=[$t10])
@@ -402,6 +427,26 @@ EnumerableCalc(expr#0..9=[{inputs}], expr#10=[IS 
NULL($t9)], expr#11=[0:BIGINT],
               EnumerableCalc(expr#0..7=[{inputs}], 
expr#8=[CAST($t5):DECIMAL(12, 2)], expr#9=[10.00:DECIMAL(12, 2)], 
expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], $condition=[$t10])
                 EnumerableTableScan(table=[[scott, EMP]])
 !plan
+!}
+
+!if (use_new_decorr) {
+EnumerableCalc(expr#0..10=[{inputs}], EMPNO=[$t0], $f1=[$t10])
+  EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($3, $8)], joinType=[left])
+    EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 2)], 
expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], 
$condition=[$t10])
+      EnumerableTableScan(table=[[scott, EMP]])
+    EnumerableCalc(expr#0..2=[{inputs}], expr#3=[IS NOT NULL($t2)], 
expr#4=[0], expr#5=[CASE($t3, $t2, $t4)], proj#0..1=[{exprs}], $f2=[$t5])
+      EnumerableHashJoin(condition=[IS NOT DISTINCT FROM($0, $1)], 
joinType=[left])
+        EnumerableAggregate(group=[{3}])
+          EnumerableCalc(expr#0..7=[{inputs}], expr#8=[CAST($t5):DECIMAL(12, 
2)], expr#9=[10.00:DECIMAL(12, 2)], expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], 
$condition=[$t10])
+            EnumerableTableScan(table=[[scott, EMP]])
+        EnumerableAggregate(group=[{8}], C=[COUNT()])
+          EnumerableNestedLoopJoin(condition=[<($3, $8)], joinType=[inner])
+            EnumerableTableScan(table=[[scott, EMP]])
+            EnumerableAggregate(group=[{3}])
+              EnumerableCalc(expr#0..7=[{inputs}], 
expr#8=[CAST($t5):DECIMAL(12, 2)], expr#9=[10.00:DECIMAL(12, 2)], 
expr#10=[>($t8, $t9)], proj#0..7=[{exprs}], $condition=[$t10])
+                EnumerableTableScan(table=[[scott, EMP]])
+!plan
+!}
 
 # Reset to default value true
 !set trimfields true

Reply via email to