You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by Rahul Raj <ra...@gmail.com> on 2017/12/08 07:11:53 UTC

Apache Drill/Calcite error on Date manipulation

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

Re: Apache Drill/Calcite error on Date manipulation

Posted by Rahul Raj <ra...@gmail.com>.
Created CALCITE-2188 <https://issues.apache.org/jira/browse/CALCITE-2188>

On Wed, Feb 21, 2018 at 4:43 AM, Julian Hyde <jh...@apache.org> wrote:

> 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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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>
>
>


-- 
<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>

Re: Apache Drill/Calcite error on Date manipulation

Posted by Julian Hyde <jh...@apache.org>.
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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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>


Re: Apache Drill/Calcite error on Date manipulation

Posted by Rahul Raj <ra...@gmail.com>.
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 <jh...@apache.org> 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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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>

Re: Apache Drill/Calcite error on Date manipulation

Posted by Julian Hyde <jh...@apache.org>.
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 <ra...@gmail.com> 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 <jh...@apache.org> 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 <ra...@gmail.com> 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>


Re: Apache Drill/Calcite error on Date manipulation

Posted by Rahul Raj <ra...@gmail.com>.
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 <jh...@apache.org> 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 <ra...@gmail.com> 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>

Re: Apache Drill/Calcite error on Date manipulation

Posted by Julian Hyde <jh...@apache.org>.
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 <ra...@gmail.com> 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