Please log that JIRA case and create a pull request, then we can discuss there.

It is possible that Calcite and MySQL have slightly different dialects of SQL. 
SqlParserTest tests Calcite’s dialect. So maybe you need to change how interval 
literals are unparsed for MySQL’s dialect only.

Julian


> On Feb 19, 2018, at 9:25 PM, Rahul Raj <[email protected]> wrote:
> 
> I have a got a fix ready, the issues was due to a missed implementation of
> 'unparse' on Sql Datetime addition. .
> 
> I have a question related to the precision of INTERVAL. The precision 2 on
> "INTERVAL '99' YEAR(2)" is not accepted by MySQL and gets pushed causing an
> error.  Removing the precision during unparse causes tests in
> SqlParserTest#subTestIntercalYearPositive to fail. What to be done here?
> 
> Queries work fine on MySql without the precision part.
> 
> Regards,
> Rahul
> 
> On Fri, Feb 16, 2018 at 11:33 PM, Julian Hyde <[email protected]> wrote:
> 
>> Sure, please log a JIRA case. And develop a fix, if you are able to.
>> 
>>> On Feb 16, 2018, at 4:11 AM, Rahul Raj <[email protected]> wrote:
>>> 
>>> I tested it on Drill 1.13 branch having the latest calcite changes merged
>>> in. It throws an unsupported operation exception, should I raise a
>> Calcite
>>> ticked on this?
>>> 
>>> org.apache.drill.common.exceptions.UserException: SYSTEM ERROR:
>>> UnsupportedOperationException: class org.apache.calcite.sql.SqlSyntax$6:
>>> SPECIAL
>>> 
>>> 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]
>>> 
>>> Regards,
>>> Rahul
>>> 
>>> On Tue, Dec 12, 2017 at 8:21 AM, Julian Hyde <[email protected]> wrote:
>>> 
>>>> I’ve added a comment to the JIRA case. Its a Calcite issue and it
>>>> shouldn’t be too hard to develop a fix.
>>>> 
>>>>> On Dec 7, 2017, at 11:11 PM, Rahul Raj <[email protected]> wrote:
>>>>> 
>>>>> Hi All,
>>>>> 
>>>>> This is an issue related to Apache Drill and need some help to debug
>> the
>>>>> problem.
>>>>> 
>>>>> Drill supports a feature to query a database directly. When querying a
>>>>> database directly, Drill throws an exception while manipulating a date
>>>>> field inside the 'where' clause as shown in the query below:
>>>>> 
>>>>> select * from config_1.APP.EXECUTIONSTEP
>>>>> where DATE_ADD(CAST(STARTED_AT as DATE),interval '1' second) <
>>>>> CAST(CURRENT_DATE as DATE)
>>>>> 
>>>>> I could see a calcite exception in the trace:
>>>>> Caused by: java.lang.AssertionError: 1000: INTERVAL_DAY_TIME
>>>>> at
>>>>> org.apache.calcite.adapter.jdbc.JdbcImplementor$Context.
>>>> toSql(JdbcImplementor.java:179)
>>>>> ~[calcite-core-1.4.0-drill-r19.jar:1.4.0-drill-r19]
>>>>> 
>>>>> I have raised the issue and details at
>>>>> https://issues.apache.org/jira/browse/DRILL-5578.
>>>>> 
>>>>> The issue does not happen when querying parquet files.
>>>>> 
>>>>> Regards,
>>>>> Rahul
>>>> 
>>>> 
>>> 
>>> 
>>> --
>>> <a href="http://www.spreadfirefox.com/?q=affiliates&id=0&t=1";><textarea
>>> rows="3" cols="40"><a href="
>>> http://www.spreadfirefox.com/?q=affiliates&id=0&t=1";>Get Firefox!</a>
>> 
>> 
> 
> 
> -- 
> <a href="http://www.spreadfirefox.com/?q=affiliates&id=0&t=1";><textarea
> rows="3" cols="40"><a href="
> http://www.spreadfirefox.com/?q=affiliates&id=0&t=1";>Get Firefox!</a>

Reply via email to