calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Feng Zhu (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CALCITE-3088) Multi-groupsets query failed due to datype preservation check
Date Thu, 23 May 2019 08:38:00 GMT
Feng Zhu created CALCITE-3088:
---------------------------------

             Summary: Multi-groupsets query failed due to datype 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


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)

Mime
View raw message