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)