You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Ruben Q L (Jira)" <ji...@apache.org> on 2022/04/04 09:24:00 UTC

[jira] [Commented] (CALCITE-5048) Query with parameterized LIMIT and correlated sub-query throws AssertionError "not a literal"

    [ https://issues.apache.org/jira/browse/CALCITE-5048?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17516709#comment-17516709 ] 

Ruben Q L commented on CALCITE-5048:
------------------------------------

Hello [~jiajunbernoulli], for some reason, I cannot assign the ticket to you. Do you have contributor role in Jira? If not, could you please send an email to Calcite's dev list requesting it (mentioning your Jira login).
In any case, it is not a hard requirement to have the ticket assign to yourself to start working in the patch (it is recommendable, but not essential), so in the meanwhile, if you wish, you can start working on the PR for this ticket even if the ticket is unassigned.

> Query with parameterized LIMIT and correlated sub-query throws AssertionError "not a literal"
> ---------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5048
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5048
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.29.0
>            Reporter: Corvin Kuebler
>            Priority: Major
>
> This query:
> {code:java}
> // Does not run
> @Test void testDynamicParameterLimit() {
> CalciteAssert.hr()
>   .query("SELECT * FROM \"hr\".\"emps\" AS a " +
>          "WHERE \"deptno\" = " +
>          "(SELECT MAX(\"deptno\") " +
>          "FROM \"hr\".\"emps\" AS b " +
>          "WHERE a.\"empid\" = b.\"empid\"" +
>          ") LIMIT ?")
>   .runs();
> }{code}
> results in the following exception:
> {code:java}
> not a literal: ?0
> java.lang.AssertionError: not a literal: ?0
>     at org.apache.calcite.rex.RexLiteral.findValue(RexLiteral.java:1208)
>     at org.apache.calcite.rex.RexLiteral.intValue(RexLiteral.java:1183)
>     at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:481)
>     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:531)
>     at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:711)
>     at org.apache.calcite.sql2rel.RelDecorrelator.decorrelate(RelDecorrelator.java:306)
>     at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateQuery(RelDecorrelator.java:230)
>     at org.apache.calcite.tools.Programs$DecorrelateProgram.run(Programs.java:361)
>     at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:336)
>     at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:177)
>     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:312)
>     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:220){code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)