You may modify your sql and operator Collect should not reference correlate variables.
XING JIN <jinxing.co...@gmail.com> 于2019年11月9日周六 下午12:32写道: > Currently RelDecorrelator doesn't support a decorrelateRel(Collect), > that's why decorrelate failed > > Zoltan Farkas <zolyfar...@yahoo.com.invalid> 于2019年11月9日周六 上午5:46写道: > >> Done: https://issues.apache.org/jira/browse/CALCITE-3488 < >> https://issues.apache.org/jira/browse/CALCITE-3488> >> let me know if you need any more info. >> >> thank you >> >> —Z >> >> > On Nov 8, 2019, at 2:17 PM, Julian Hyde <jh...@apache.org> wrote: >> > >> > As I said, I think you should log a bug. >> > >> > On Fri, Nov 8, 2019 at 10:23 AM Haisheng Yuan <h.y...@alibaba-inc.com> >> wrote: >> >> >> >> I am afraid this query can't be easily decorrelated. >> >> >> >> - Haisheng >> >> >> >> ------------------------------------------------------------------ >> >> 发件人:Zoltan Farkas<zolyfar...@yahoo.com.INVALID> >> >> 日 期:2019年11月08日 22:46:53 >> >> 收件人:<dev@calcite.apache.org> >> >> 主 题:Re: Question about Interpreter and Corelations >> >> >> >> Thanks Julian, >> >> >> >> Any idea how could I de-corelate the query? >> >> RelDecorrelator.decorrelateQuery does not seem to alter the plan. >> >> >> >> Will log a jira for the interpreter issue. >> >> >> >> thank you >> >> >> >> —Z >> >> >> >> >> >> >> >>> On Nov 7, 2019, at 5:08 PM, Julian Hyde <jhyde.apa...@gmail.com> >> wrote: >> >>> >> >>> I don’t recall what the interpreter is currently capable of, but you >> should log a bug. >> >>> >> >>> I wonder whether if you could get the query to work in the >> interpreter if you decorrelated the query first. >> >>> >> >>> Julian >> >>> >> >>>> On Nov 7, 2019, at 11:16, Zoltan Farkas <zolyfar...@yahoo.com.invalid> >> wrote: >> >>>> >> >>>> for a test query with the following plan: >> >>>> >> >>>> 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]]) >> >>>> >> >>>> I get : >> >>>> >> >>>> java.lang.nsupportedOperationException >> >>>> 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)[^] >> >>>> ... >> >>>> >> >>>> when trying to use the Interpreter. >> >>>> >> >>>> Is this a current limitation? >> >>>> >> >>>> the query is : >> >>>> >> >>>> select name, >> >>>> ARRAY(select c2.name from friendships f, characters c2 >> >>>> where f.characterId1 = c.characterId and >> f.characterId2 = c2.characterId) as friends >> >>>> from characters c >> >>>> >> >>>> let me know >> >>>> >> >>>> thank you >> >>>> >> >>>> —Z >> >>