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

Stamatis Zampetakis commented on CALCITE-2404:
----------------------------------------------

A first attempt at resolving this issue can be found in PR#762.

Ideally, I would like to take advantage of the PhysType interface in order to 
create the appropriate Expression in RexToLixTranslator.translate0 but it is 
not easy to obtain or create an appropriate PhysType from an arbitrary 
expression.

In the end, I ended up introducing a runtime function which tries to examine 
the possible alternatives (based on the existing JavaRowFormats) and make the 
appropriate actions. 

Alternatively, we could ensure that all structured types are always represented 
in the runtime using the same JavaRowFormat but this requires changes in other 
RelNodes and has also various other disadvantages.

 

> Accessing structured-types is not implemented by the runtime
> ------------------------------------------------------------
>
>                 Key: CALCITE-2404
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2404
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Stamatis Zampetakis
>            Assignee: Julian Hyde
>            Priority: Blocker
>
> Queries on tables containing structured types cannot be executed by the 
> Calcite runtime. A plan like the one that follows (taken from CALCITE-2220) 
> can be translated to neither Bindable nor EnumerableConvention.
>  
> {noformat}
> LogicalProject(EXPR$0=[$0])
>   LogicalProject(EXPR$0$0=[ITEM($6, 1).EMPNO], EXPR$0$1=[ITEM($6, 1).ENAME], 
> EXPR$0$2=[ITEM($6, 1).DETAIL])
>     LogicalProject(DEPTNO=[$0], NAME=[$1], TYPE=[$2.TYPE], DESC=[$2.DESC], 
> A=[$2.OTHERS.A], B=[$2.OTHERS.B], EMPLOYEES=[$3])
>       LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
> {noformat}
>  
> More precisely, if a logical plan contains a RexFieldAccess expression that 
> does not refer to a RexCorrelVariable it cannot be handled by the 
> RexToLixTranslator. The translation will fail when calling
> [RexToLixTranslator#translate0|[https://github.com/apache/calcite/blob/5bbc501a565494442784f65870a20cd65a5016f4/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java#L686]].
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to