[
https://issues.apache.org/jira/browse/CALCITE-2188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16370845#comment-16370845
]
Rahul Raj commented on CALCITE-2188:
------------------------------------
The issue was due to a missed implementation of 'unparse' on Sql Datetime
addition and the fix works when there is no precision on the INTERVAL field.
The precision 2 on "INTERVAL '99' YEAR(2)" is not accepted by MySQL and gets
pushed causing an error.
I have delegated the SqlIntervalQualifier#unparse logic to
SqlDialect#unparseSqlIntervalQualifier and made the MySql specific changes to
MysqlSqlDialect#unparseSqlIntervalQualifier.
SqlIntervalQualifier#unparse now calls:
{code:java}
writer.getDialect()
.unparseSqlIntervalQualifier(writer,this,RelDataTypeSystem.DEFAULT);{code}
I added the test case below to RelToSqlConverterTest. The test fails as the
Dialect is set to AnsiSqlDialect in spite of the 'withMySql' call and thus
results in invoking SqlDialect#unparseSqlIntervalQualifier instead of
MysqlSqlDialect
{code:java}
@Test public void unparseSqlIntervalQualifier() {
String query = "select * from \"employee\" where \"hire_date\" - INTERVAL
'19800' SECOND(5) > TIMESTAMP '2005-10-17 00:00:00' ";
String expected = "select * from `employee` where `hire_date` - INTERVAL
'19800' SECOND > TIMESTAMP '2005-10-17 00:00:00' ";
sql(query)
.withMysql()
//.dialect(MysqlSqlDialect.DEFAULT)
.ok(expected);
}{code}
I will debug this more. Please let me know how to proceed on this.
> Calcite errors on Date interval addition/subtraction in the where clause
> ------------------------------------------------------------------------
>
> Key: CALCITE-2188
> URL: https://issues.apache.org/jira/browse/CALCITE-2188
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Rahul Raj
> Assignee: Julian Hyde
> Priority: Major
>
> Calcite errors on Date interval addition/subtraction in the where clause.
> Eg: "select * from \"sakila\".\"actor\" where \"last_update\" - INTERVAL
> '20' SECOND > TIMESTAMP '2005-10-17 00:00:00' "
> Caused by: java.lang.UnsupportedOperationException: class
> org.apache.calcite.sql.SqlSyntax$6: SPECIAL
> at org.apache.calcite.util.Util.needToImplement(Util.java:925)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlSyntax$6.unparse(SqlSyntax.java:116)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlOperator.unparse(SqlOperator.java:332)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlDialect.unparseCall(SqlDialect.java:332)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at
> org.apache.calcite.sql.dialect.MysqlSqlDialect.unparseCall(MysqlSqlDialect.java:154)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlCall.unparse(SqlCall.java:103)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlUtil.unparseBinarySyntax(SqlUtil.java:323)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlSyntax$3.unparse(SqlSyntax.java:65)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlOperator.unparse(SqlOperator.java:332)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlDialect.unparseCall(SqlDialect.java:332)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at
> org.apache.calcite.sql.dialect.MysqlSqlDialect.unparseCall(MysqlSqlDialect.java:154)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlCall.unparse(SqlCall.java:103)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlNodeList.andOrList(SqlNodeList.java:142)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at
> org.apache.calcite.sql.SqlOperator.unparseListClause(SqlOperator.java:347)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at
> org.apache.calcite.sql.SqlSelectOperator.unparse(SqlSelectOperator.java:197)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlSelect.unparse(SqlSelect.java:240)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:152)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.calcite.sql.SqlNode.toSqlString(SqlNode.java:158)
> ~[calcite-core-1.15.0-drill-r0.jar:1.15.0-drill-r0]
> at org.apache.drill.exec.store.jdbc.JdbcPrel.<init>(JdbcPrel.java:65)
> ~[drill-jdbc-storage-1.13.0-SNAPSHOT.jar:1.13.0-SNAPSHOT]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)