[ 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)