You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Stamatis Zampetakis (JIRA)" <ji...@apache.org> on 2019/01/08 14:19:00 UTC
[jira] [Commented] (CALCITE-2677) Struct types with one field are
not mapped correctly to Java Classes
[ https://issues.apache.org/jira/browse/CALCITE-2677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16737164#comment-16737164 ]
Stamatis Zampetakis commented on CALCITE-2677:
----------------------------------------------
Hi [~julianhyde], to illustrate the problem of bad Java types on structs with one field, let's consider the following query:
{code:sql}
select * from (values
(1, ROW(1)),
(2, ROW(2))) as v(id,struct);
{code}
Without the fix in this PR, this query fails at runtime with a ClassCastException.
I updated the PR with this test case and I added an additional fix related with CALCITE-2776.
Can you please have a look when you find some time?
> Struct types with one field are not mapped correctly to Java Classes
> --------------------------------------------------------------------
>
> Key: CALCITE-2677
> URL: https://issues.apache.org/jira/browse/CALCITE-2677
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.17.0
> Reporter: Stamatis Zampetakis
> Assignee: Julian Hyde
> Priority: Major
> Labels: easy-fix, pull-request-available
>
> There are various places in the code where given a RelDataType we need to obtain the respective Java Class/Type. This is done mainly through JavaTypeFactory#getJavaClass. For the Calcite runtime it passes through PhysType#fieldClass and PhysType#getJavaFieldType.
> However, when the RelDataType is a struct of one field the returned Class/Type is not the correct one since the struct type is simplified to the type of its component.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)