[ 
https://issues.apache.org/jira/browse/CALCITE-2782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16743168#comment-16743168
 ] 

Justin Szeluga edited comment on CALCITE-2782 at 1/15/19 6:16 PM:
------------------------------------------------------------------

That change works for me. It would be doing what the JavaDoc says its supposed 
to do. It looks like that is what is happening anyway in the Avactica 
Connection. Should I update the pull request with the change?


was (Author: jszeluga):
That change works for me. It would be doing what the JavaDoc says its supposed 
to do. It looks like that is what is happening anyway in the Avactica 
Connection. Should I update the pull request with the change?

CalciteConnectionProperty doesn't appear to be the right class to change. The 
default null is coming from CalciteConnectionConfig which extends 
ConnectionConfig from Avatica Core (where the null default is coming from). The 
CalciteConnectionProperty is never called.

Oh I see I can override the call to timezone() and use the fixed connection 
property

> EXTRACT function doesn't work because of NULL returned from 
> druidQuery.getConnectionConfig().timeZone()
> -------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-2782
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2782
>             Project: Calcite
>          Issue Type: Bug
>          Components: druid
>    Affects Versions: 1.18.0
>            Reporter: Justin Szeluga
>            Assignee: Julian Hyde
>            Priority: Major
>
> The default value for BuiltInConnectionProperty.TIME_ZONE is null. If the 
> timezone is not set in the properties then the null is returned and a 
> NullPointerException is thrown when PeriodGranularity initializes.
> {code:java}
> Caused by: java.lang.RuntimeException: Error while applying rule 
> DruidProjectRule, args 
> [rel#303:LogicalProject.NONE.[](input=RelSubset#145,EXPR$0=EXTRACT(FLAG(DAY), 
> $0)), rel#213:DruidQuery.BINDABLE.[](table=[adhoc, 
> bach.sign_ctrl_f],intervals=[2019-01-08T00:00:00.000Z/3000-01-01T00:00:00.000Z])]
>     at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:236)
>     at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:641)
>     at org.apache.calcite.tools.Programs.lambda$standard$3(Programs.java:298)
>     at 
> org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:358)
>     at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:189)
>     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:320)
>     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231)
>     at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:772)
>     at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:636)
>     at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:606)
>     at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229)
>     at 
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:550)
>     at 
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
>     at 
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
>     ... 14 more
> Caused by: java.lang.NullPointerException
>     at java.util.Objects.requireNonNull(Unknown Source)
>     at 
> org.apache.calcite.adapter.druid.Granularities$PeriodGranularity.<init>(Granularities.java:93)
>     at 
> org.apache.calcite.adapter.druid.Granularities$PeriodGranularity.<init>(Granularities.java:85)
>     at 
> org.apache.calcite.adapter.druid.Granularities.createGranularity(Granularities.java:57)
>     at 
> org.apache.calcite.adapter.druid.DruidDateTimeUtils.extractGranularity(DruidDateTimeUtils.java:331)
>     at 
> org.apache.calcite.adapter.druid.DruidQuery.toDruidColumn(DruidQuery.java:273)
>     at 
> org.apache.calcite.adapter.druid.DruidQuery.computeProjectAsScan(DruidQuery.java:763)
>     at 
> org.apache.calcite.adapter.druid.DruidRules$DruidProjectRule.onMatch(DruidRules.java:298)
>     at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212)
>     ... 27 more
> {code}
> In tests, org.apache.calcite.test.CalciteAssert#assertQuery sets the timezone 
> to UTC hiding the problem. When I issue queries from DBeaver it fails because 
> of the NPE



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to