You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "TANG Wen-hui (Jira)" <ji...@apache.org> on 2020/03/26 07:51:00 UTC

[jira] [Comment Edited] (CALCITE-3216) ClassCastException when running window function over union

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

TANG Wen-hui edited comment on CALCITE-3216 at 3/26/20, 7:50 AM:
-----------------------------------------------------------------

I am working on this issue, it seems that EnumerableUnion does not processes the inputs' RowType which are compatible but not totally same. I think we shoud unify the RowType of the inputs with the RowType of Union before the codegen phase of inputs, because during the codegen phase, the RowType of the inputs has been already translated to Java class.


was (Author: winipanda):
I am working on this issue, it seems that EnumerableUnion does not processes the inputs' RowType which are compatible but not totally same. I think we shoud unify the RowType of the inputs with the RowType of Union before codegen phase, because during the codegen phase, the RowType of the inputs has been already translated to Java class.

> ClassCastException when running window function over union
> ----------------------------------------------------------
>
>                 Key: CALCITE-3216
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3216
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Laurent Goujon
>            Priority: Major
>
> I discovered an issue in Calcite execution engine which can be captured by this simple query:
> {code:sql}
> select *, count(*) over (partition by "id") from (
> select "id" from (VALUES(CAST(1 AS TINYINT))) "foo"("id")
> union
> select "id" from (VALUES(2)) "foo"("id"))
> {code}
> When running this query using JdbcTest for example, I got the following stacktrace:
> {noformat}
> Caused by: java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer
> 	at Baz$3.apply(ANONYMOUS.java:55)
> 	at org.apache.calcite.linq4j.DefaultEnumerable.foreach(DefaultEnumerable.java:77)
> 	at Baz.bind(Baz.java:43)
> 	at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:355)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:316)
> 	at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:506)
> 	at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:497)
> 	at org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:182)
> 	at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64)
> 	at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:1)
> 	at org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:667)
> 	at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:566)
> 	at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
> 	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
> {noformat}



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