[ 
https://issues.apache.org/jira/browse/CALCITE-7401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated CALCITE-7401:
------------------------------------
    Labels: pull-request-available  (was: )

> 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
>              Labels: pull-request-available
>
> 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)

Reply via email to