I've added a test case (and the test missed in CALCITE-1615) in https://github.com/julianhyde/calcite/tree/xxxx-hop. I cannot reproduce your problem. Please still log a jira case.
On Tue, Apr 25, 2017 at 10:13 AM, Julian Hyde <[email protected]> wrote: > 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 >>>
