I just noticed that in https://issues.apache.org/jira/browse/CALCITE-1615 tests were added to SqlToRelConverterTest.xml but not to SqlToRelConverterTest.java. We've been running without tests.
On Tue, Apr 25, 2017 at 10:01 AM, Julian Hyde <[email protected]> wrote: > Can you log a bug please? I will help out if I can. > > When this is fixed, I presume you will need a Calcite release at the > appropriate time so that you can release Flink. Can you start a > separate email thread when you know that timing? > > On Tue, Apr 25, 2017 at 7:13 AM, Timo Walther <[email protected]> wrote: >> Hi all, >> >> >> I'm working on integrating START and END for TUMBLE/HOP/SESSION in Flink SQL >> with logical time indicator columns (e.g. rowtime, proctime). It seems there >> is a bug in the resolution logic of SqlToRelConverter. Since our feature >> freeze is next week and this feature should be part of Flink 1.3, it would >> be great if you can help me with at least a hint for a quick fix. >> >> >> The problem is as follows: >> >> >> Input: MyTable(INTEGER a, VARCHAR b, BIGINT c, TIMESTAMP proctime, TIMESTAMP >> rowtime) >> >> SQL: SELECT COUNT(*), TUMBLE_START(rowtime, INTERVAL '15' MINUTE), >> TUMBLE_END(rowtime, INTERVAL '15' MINUTE) FROM MyTable GROUP BY >> TUMBLE(rowtime, INTERVAL '15' MINUTE) >> >> Exception: >> >> java.lang.RuntimeException: while converting >> TUMBLE_START(`MyTable`.`rowtime`, INTERVAL '15' MINUTE) >> >> at >> org.apache.calcite.sql2rel.ReflectiveConvertletTable$2.convertCall(ReflectiveConvertletTable.java:134) >> at >> org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:61) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4415) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3783) >> at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:137) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4317) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.createAggImpl(SqlToRelConverter.java:2723) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertAgg(SqlToRelConverter.java:2541) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:654) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:616) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:2951) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:552) >> ..... >> Caused by: java.lang.reflect.InvocationTargetException >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:498) >> at >> org.apache.calcite.sql2rel.ReflectiveConvertletTable$2.convertCall(ReflectiveConvertletTable.java:131) >> ... 42 more >> Caused by: java.lang.AssertionError >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.getRootField(SqlToRelConverter.java:4132) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.adjustInputRef(SqlToRelConverter.java:3446) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.convertIdentifier(SqlToRelConverter.java:3421) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter.access$1800(SqlToRelConverter.java:207) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4424) >> at >> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java >> >> >> The tests in Calcite only cover the case where rowtime is at the beginning >> of a row. Once rowtime is somewhere else, the indices are messed up. I tried >> to debug it, but I'm stuck at SqlToRelConverter#convertIdentifier(). >> >> >> Any help is very welcome. >> >> >> Regards, >> >> Timo >>
