You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2019/06/06 14:10:00 UTC

[jira] [Updated] (CALCITE-3088) Multi-groupsets query failed due to data type preservation check

     [ https://issues.apache.org/jira/browse/CALCITE-3088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ASF GitHub Bot updated CALCITE-3088:
------------------------------------
    Labels: pull-request-available  (was: )

> Multi-groupsets query failed due to data type preservation check
> ----------------------------------------------------------------
>
>                 Key: CALCITE-3088
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3088
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.20.0
>            Reporter: Feng Zhu
>            Assignee: Feng Zhu
>            Priority: Major
>              Labels: pull-request-available
>
> We encounter the proble in our environment. It can be reproduced by the modification on _testCube_ in *SqlToRelConverterTest*.
> {code:java}
> @Test public void testCube() {
>   // cube(a, b) is {(a, b), (a), (b), ()}
>   final String sql = "select a+1\n"
>       + "from (values (1, 2, 3, 4)) as t(a, b, c, d)\n"
>       + "group by cube(a, b)";
>   sql(sql).ok();
> }
> {code}
> This query will fail with following exception:
> {code:java}
> java.lang.AssertionError: Conversion to relational algebra failed to preserve datatypes:
> validated type:
> RecordType(INTEGER NOT NULL EXPR$0) NOT NULL
> converted type:
> RecordType(INTEGER EXPR$0) NOT NULL
> rel:
> LogicalProject(EXPR$0=[+($0, 1)])
>   LogicalAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}, {1}, {}]])
>     LogicalProject(A=[$0], B=[$1])
>       LogicalValues(tuples=[[{ 1, 2, 3, 4 }]])
>     at org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:406)
>     at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:523)
>     at org.apache.calcite.test.SqlToRelTestBase$TesterImpl.convertSqlToRel(SqlToRelTestBase.java:610)
>     at org.apache.calcite.test.SqlToRelTestBase$TesterImpl.assertConvertsTo(SqlToRelTestBase.java:723)
>     at org.apache.calcite.test.SqlToRelConverterTest$Sql.convertsTo(SqlToRelConverterTest.java:3073)
>     at org.apache.calcite.test.SqlToRelConverterTest$Sql.ok(SqlToRelConverterTest.java:3065)
>     at org.apache.calcite.test.SqlToRelConverterTest.testCube(SqlToRelConverterTest.java:474)
> {code}
> The exception stacktrace is very clear. In validation phase, SqlValidator does not take such case into consideration, and consequently the type of {color:#FF0000}EXPR$0(a+1){color} cannot be inferred as nullable.



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