You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Zoltan Farkas (Jira)" <ji...@apache.org> on 2019/11/08 21:46:00 UTC

[jira] [Created] (CALCITE-3488) Interpreter does not implement LogicalCorelate.

Zoltan Farkas created CALCITE-3488:
--------------------------------------

             Summary: Interpreter does not implement LogicalCorelate.
                 Key: CALCITE-3488
                 URL: https://issues.apache.org/jira/browse/CALCITE-3488
             Project: Calcite
          Issue Type: Bug
            Reporter: Zoltan Farkas


Example query:

{code}
select name,
         ARRAY(select c2.name from friendships f, characters c2
                            where f.characterId1 = c.characterId and f.characterId2 = c2.characterId) as friends
{code}

where the 2 tables involved are:

{code}
    record Character {
      string characterId;
      string name = "";
      string homeWorldPlanet;
      string speciesName;
    }

    record Friendship {
      string characterId1;
      string characterId2;
    }
{code}


the plan:

{code}
LogicalProject(name=[$1], friends=[$4])
  LogicalCorrelate(correlation=[$cor0], joinType=[inner], requiredColumns=[{0}])
    LogicalTableScan(table=[[characters]])
    Collect(field=[EXPR$0])
      LogicalProject(name=[$2])
        LogicalJoin(condition=[=($0, $1)], joinType=[inner])
          LogicalProject(characterId2=[$1])
            LogicalFilter(condition=[=($0, $cor0.characterId)])
              LogicalTableScan(table=[[friendships]])
          LogicalProject(characterId=[$0], name=[$1])
            LogicalTableScan(table=[[characters]])\n
{code}

when interpreted, results in:

{code}
java.lang.UnsupportedOperationException
	at o.a.c.i.JaninoRexCompiler.lambda$compile$0(JaninoRexCompiler.java:94)[calcite-core-1.21.0.jar:1.21.0]
	at o.a.c.a.e.RexToLixTranslator.translate0(RexToLixTranslator.java:714)[^]
	at ^.translate(^:199)[^]
	at ^.translate0(^:684)[^]
	at ^.translate(^:199)[^]
	at ^.translate(^:194)[^]
	at ^.translateList(^:928)[^]
	at ^.translateList(^:901)[^]
	at o.a.c.a.e.RexImpTable.implementCall(RexImpTable.java:1163)[^]
	at ^.implementNullSemantics(^:1153)[^]
	at ^.implementNullSemantics0(^:1043)[^]
	at ^.lambda$createImplementor$4(^:690)[^]
	at o.a.c.a.e.RexToLixTranslator.translateCall(RexToLixTranslator.java:758)[^]
	at ^.translate0(^:730)[^]
	at ^.translate(^:199)[^]
	at ^.translate0(^:684)[^]
	at ^.translate(^:199)[^]
	at ^.translate(^:194)[^]
	at ^.translateList(^:928)[^]
	at ^.translateProjects(^:169)[^]
	at o.a.c.i.JaninoRexCompiler.compile(JaninoRexCompiler.java:101)[^]
	at o.a.c.i.Interpreter$CompilerImpl.compile(Interpreter.java:487)[^]
	at o.a.c.i.Nodes$CoreCompiler.compile(Nodes.java:43)[^]
	at o.a.c.i.TableScanNode.createEnumerable(TableScanNode.java:266)[^]
	at ^.createProjectableFilterable(^:233)[^]
	at ^.create(^:81)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:70)[^]
	at j.i.r.NativeMethodAccessorImpl.invoke0(Native Method)
	at ^.invoke(^:62)[^]
	at j.i.r.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[^]
	at j.l.r.Method.invoke(Method.java:566)[^]
	at o.a.c.u.ReflectUtil.invokeVisitorInternal(ReflectUtil.java:257)[calcite-core-1.21.0.jar:1.21.0]
	at ^.invokeVisitor(^:214)[^]
	at o.a.c.u.ReflectUtil$1.invokeVisitor(^:464)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:451)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.r.BiRel.childrenAccept(BiRel.java:45)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:447)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.r.SingleRel.childrenAccept(SingleRel.java:72)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:447)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.r.SingleRel.childrenAccept(SingleRel.java:72)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:447)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.r.BiRel.childrenAccept(BiRel.java:46)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:447)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.r.SingleRel.childrenAccept(SingleRel.java:72)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visit(Interpreter.java:447)[^]
	at o.a.c.i.Nodes$CoreCompiler.visit(Nodes.java:43)[^]
	at o.a.c.i.Interpreter$CompilerImpl.visitRoot(Interpreter.java:405)[^]
	at o.a.c.i.Interpreter.<init>(^:88)[^]
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)