[
https://issues.apache.org/jira/browse/CALCITE-5178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17558887#comment-17558887
]
Benchao Li commented on CALCITE-5178:
-------------------------------------
After some investigation, I think this is cause by
{{JavaRowFormat.SCALAR#javaRowClass}} for {{ROW}}. We always treated nested
{{ROW}} as {{Object[]}}
([see|https://github.com/apache/calcite/blob/94dc303ed0a5ccd4e4f972abf7a41f155cbe5546/core/src/main/java/org/apache/calcite/adapter/enumerable/PhysTypeImpl.java#L77]),
but {{JavaTypeFactory#getJavaClass}} for {{ROW}} will return
{{SyntheticRecordType}} in {{JavaRowFormat.SCALAR#javaRowClass}}.
> Scalar subquery in scalar subquery generates plan that will not compile
> -----------------------------------------------------------------------
>
> Key: CALCITE-5178
> URL: https://issues.apache.org/jira/browse/CALCITE-5178
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Priority: Major
>
> Scalar subquery in scalar subquery generates plan that will not compile.
> Example:
> {code:java}
> > select (select (1, 2));
> Error: Error while executing SQL "select (select (1, 2))": Error while
> compiling generated Java code:
> ...
> public static class Record2_3 implements java.io.Serializable {
> public boolean f0;
> public Object[] f1;
> ...
> }
> java.util.List accumulatorAdders = new java.util.LinkedList();
> accumulatorAdders.add(new org.apache.calcite.linq4j.function.Function2() {
> public Record2_3 apply(Record2_3 acc, Record2_1
> in) {
> if (acc.f0) {
> throw new IllegalStateException(
> "more than one value in agg
> SINGLE_VALUE");
> }
> acc.f0 = true;
> acc.f1 = in;
> return acc;
> }
> public Record2_3 apply(Object acc, Object in) {
> return apply(
> (Record2_3) acc,
> (Record2_1) in);
> }
> }
> );
> ...
> {code}
> Note the line {{acc.f1 = in;}} is attempting to assign a {{Record2_1}} value
> to a {{Object[]}} field.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)