[
https://issues.apache.org/jira/browse/CALCITE-7401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zhen Chen updated CALCITE-7401:
-------------------------------
Description:
Using CoreQuidemTest2 to test the following SQL will result in an error.
{code:java}
# Test case for [CALCITE-5789]
select deptno from dept d1 where exists (
select 1 from dept d2 where d2.deptno = d1.deptno and exists (
select 1 from dept d3 where d3.deptno = d2.deptno and d3.dname = d1.dname));
+--------+
| DEPTNO |
+--------+
| 10 |
| 20 |
| 30 |
| 40 |
+--------+
(4 rows)!ok {code}
Error message:
> java.lang.AssertionError: out of range; value: 6, limit: 6
> at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
> at
> org.apache.calcite.sql2rel.RelDecorrelator.allLessThan(RelDecorrelator.java:2397)
> at
> org.apache.calcite.sql2rel.RelDecorrelator$Frame.<init>(RelDecorrelator.java:3790)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.<init>(TopDownGeneralDecorrelator.java:970)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.createJoinUnnestInfo(TopDownGeneralDecorrelator.java:1021)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.access$100(TopDownGeneralDecorrelator.java:957)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:663)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:436)
> at jdk.internal.reflect.GeneratedMethodAccessor178.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:458)
> at jdk.internal.reflect.GeneratedMethodAccessor179.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:283)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.decorrelateQuery(TopDownGeneralDecorrelator.java:213)
> at org.apache.calcite.tools.Programs$DecorrelateProgram.run(Programs.java:454)
> at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:406)
> at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:178)
> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:320)
> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:221)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:675)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:526)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:494)
> at
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:246)
> at
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:654)
> at
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:677)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:157)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:228)
> at net.hydromatic.quidem.Quidem.checkResult(Quidem.java:317)
was:
Using CoreQuidemTest2 to test the following SQL will result in an error.
{code:java}
// code placeholder
{code}
# Test case for CALCITE-5789
select deptno from dept d1 where exists (
select 1 from dept d2 where d2.deptno = d1.deptno and exists (
select 1 from dept d3 where d3.deptno = d2.deptno and d3.dname = d1.dname));
+--------+
|DEPTNO|
+--------+
| 10|
| 20|
| 30|
| 40|
+--------+
(4 rows)
!ok
Error message:
> java.lang.AssertionError: out of range; value: 6, limit: 6
> at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
> at
> org.apache.calcite.sql2rel.RelDecorrelator.allLessThan(RelDecorrelator.java:2397)
> at
> org.apache.calcite.sql2rel.RelDecorrelator$Frame.<init>(RelDecorrelator.java:3790)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.<init>(TopDownGeneralDecorrelator.java:970)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.createJoinUnnestInfo(TopDownGeneralDecorrelator.java:1021)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.access$100(TopDownGeneralDecorrelator.java:957)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:663)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:436)
> at jdk.internal.reflect.GeneratedMethodAccessor178.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:458)
> at jdk.internal.reflect.GeneratedMethodAccessor179.invoke(Unknown Source)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:283)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> at
> org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.decorrelateQuery(TopDownGeneralDecorrelator.java:213)
> at org.apache.calcite.tools.Programs$DecorrelateProgram.run(Programs.java:454)
> at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:406)
> at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:178)
> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:320)
> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:221)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:675)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:526)
> at
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:494)
> at
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:246)
> at
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:654)
> at
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:677)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:157)
> at
> org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:228)
> at net.hydromatic.quidem.Quidem.checkResult(Quidem.java:317)
> Multi-level correlated subqueries cause an out-of-range error in the
> TopDownGeneralDecorrelator
> -----------------------------------------------------------------------------------------------
>
> Key: CALCITE-7401
> URL: https://issues.apache.org/jira/browse/CALCITE-7401
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.41.0
> Reporter: Zhen Chen
> Priority: Major
>
> Using CoreQuidemTest2 to test the following SQL will result in an error.
> {code:java}
> # Test case for [CALCITE-5789]
> select deptno from dept d1 where exists (
> select 1 from dept d2 where d2.deptno = d1.deptno and exists (
> select 1 from dept d3 where d3.deptno = d2.deptno and d3.dname = d1.dname));
> +--------+
> | DEPTNO |
> +--------+
> | 10 |
> | 20 |
> | 30 |
> | 40 |
> +--------+
> (4 rows)!ok {code}
> Error message:
> > java.lang.AssertionError: out of range; value: 6, limit: 6
> > at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
> > at
> > org.apache.calcite.sql2rel.RelDecorrelator.allLessThan(RelDecorrelator.java:2397)
> > at
> > org.apache.calcite.sql2rel.RelDecorrelator$Frame.<init>(RelDecorrelator.java:3790)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.<init>(TopDownGeneralDecorrelator.java:970)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.createJoinUnnestInfo(TopDownGeneralDecorrelator.java:1021)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator$UnnestedQuery.access$100(TopDownGeneralDecorrelator.java:957)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:663)
> > at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > at
> > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> > at
> > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> > at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:436)
> > at jdk.internal.reflect.GeneratedMethodAccessor178.invoke(Unknown Source)
> > at
> > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> > at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnestInternal(TopDownGeneralDecorrelator.java:458)
> > at jdk.internal.reflect.GeneratedMethodAccessor179.invoke(Unknown Source)
> > at
> > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> > at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:533)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.unnest(TopDownGeneralDecorrelator.java:420)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:283)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.correlateElimination(TopDownGeneralDecorrelator.java:243)
> > at
> > org.apache.calcite.sql2rel.TopDownGeneralDecorrelator.decorrelateQuery(TopDownGeneralDecorrelator.java:213)
> > at
> > org.apache.calcite.tools.Programs$DecorrelateProgram.run(Programs.java:454)
> > at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:406)
> > at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:178)
> > at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:320)
> > at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:221)
> > at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:675)
> > at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:526)
> > at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:494)
> > at
> > org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:246)
> > at
> > org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:654)
> > at
> > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:677)
> > at
> > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:157)
> > at
> > org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:228)
> > at net.hydromatic.quidem.Quidem.checkResult(Quidem.java:317)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)