Which Drill version are you running?

> On Feb 23, 2022, at 17:57, Z0ltrix <[email protected]> wrote:
> 
> 
> Hi drill devs,
> 
> we have a problem with our superset -> drill connection with time range 
> filters, as described below.
> 
> Superset sends the following to drill:
> WHERE `startTime` >= '2022-02-14 00:00:00.000000'
>   AND `startTime` < '2022-02-21 00:00:00.000000'
> ORDER BY `startTime` DESC
> 
> and i get the following error:
> 
> SYSTEM ERROR: ClassCastException: 
> org.apache.drill.exec.expr.holders.NullableTimeStampHolder cannot be cast to 
> org.apache.drill.exec.expr.holders.TimeStampHolder
> 
> 
> Please, refer to logs for more information.
> 
> 
>   (org.apache.drill.exec.work.foreman.ForemanException) Unexpected exception 
> during fragment initialization: 
> org.apache.drill.exec.expr.holders.NullableTimeStampHolder cannot be cast to 
> org.apache.drill.exec.expr.holders.TimeStampHolder
>     org.apache.drill.exec.work.foreman.Foreman.run():305
>     java.util.concurrent.ThreadPoolExecutor.runWorker():1149
>     java.util.concurrent.ThreadPoolExecutor$Worker.run():624
>     java.lang.Thread.run():748
>   Caused By (java.lang.ClassCastException) 
> org.apache.drill.exec.expr.holders.NullableTimeStampHolder cannot be cast to 
> org.apache.drill.exec.expr.holders.TimeStampHolder
>     org.apache.drill.exec.expr.FilterBuilder.getValueExpressionFromConst():208
>     
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression():240
>     
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression():58
>     org.apache.drill.common.expression.FunctionHolderExpression.accept():53
>     org.apache.drill.exec.expr.FilterBuilder.generateNewExpressions():268
>     org.apache.drill.exec.expr.FilterBuilder.handleCompareFunction():278
>     
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression():246
>     
> org.apache.drill.exec.expr.FilterBuilder.visitFunctionHolderExpression():58
>     org.apache.drill.common.expression.FunctionHolderExpression.accept():53
>     org.apache.drill.exec.expr.FilterBuilder.buildFilterPredicate():80
>     
> org.apache.drill.exec.physical.base.AbstractGroupScanWithMetadata.getFilterPredicate():317
>     org.apache.drill.exec.store.parquet.ParquetPushDownFilter.doOnMatch():150
>     org.apache.drill.exec.store.parquet.ParquetPushDownFilter$2.onMatch():103
>     org.apache.calcite.plan.AbstractRelOptPlanner.fireRule():319
>     org.apache.calcite.plan.hep.HepPlanner.applyRule():561
>     org.apache.calcite.plan.hep.HepPlanner.applyRules():420
>     org.apache.calcite.plan.hep.HepPlanner.executeInstruction():257
>     org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute():127
>     org.apache.calcite.plan.hep.HepPlanner.executeProgram():216
>     org.apache.calcite.plan.hep.HepPlanner.findBestExp():203
>     
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform():419
>     
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform():370
>     
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform():353
>     
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToPrel():536
>     org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan():178
>     org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan():216
>     org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan():121
>     org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan():87
>     org.apache.drill.exec.work.foreman.Foreman.runSQL():593
>     org.apache.drill.exec.work.foreman.Foreman.run():276
>     java.util.concurrent.ThreadPoolExecutor.runWorker():1149
>     java.util.concurrent.ThreadPoolExecutor$Worker.run():624
>     java.lang.Thread.run():748
> 
> When i manually resend the query with TIMESTAMP as here:
> WHERE `startTime` >= TIMESTAMP '2022-02-14 00:00:00.000000'
>   AND `startTime` < TIMESTAMP '2022-02-21 00:00:00.000000'
> ORDER BY `startTime` DESC
> 
> Everything is fine, but superset doesnt create the query this way.
> 
> So, now to my question:
> Is this error message legit because of the missing "TIMESTAMP" before the 
> timestamp string, or do we have a problem here in drill?
> 
> Regards 
> Christian
> 
> ------- Original Message -------
> Z0ltrix <[email protected]> schrieb am Mittwoch, 23. Februar 2022 um 
> 10:49:
> 
>> Hello superset devs,
>> 
>> we have a problem with our superset -> drill connection with time range 
>> filters.
>> 
>> When we filter a dashboard by time range (last week, month, etc.) i get an 
>> SYSTEM ERROR: ClassCastException: 
>> org.apache.drill.exec.expr.holders.NullableTimeStampHolder cannot be cast to 
>> org.apache.drill.exec.expr.holders.TimeStampHolder
>> from drill.
>> 
>> I dont want to talk here too much about the drill error because this is a 
>> topic for the drill project, but i think we could solve this also by adding 
>> something to db_engine_specs/drill.py
>> 
>> Superset sends the following to drill:
>> WHERE `startTime` >= '2022-02-14 00:00:00.000000'
>>   AND `startTime` < '2022-02-21 00:00:00.000000'
>> ORDER BY `startTime` DESC
>> 
>> Superset should send the following filter:
>> WHERE `startTime` >= TIMESTAMP '2022-02-14 00:00:00.000000'
>>   AND `startTime` < TIMESTAMP '2022-02-21 00:00:00.000000'
>> ORDER BY `startTime` DESC
>> 
>> My Question is, which classmethod of BaseEngineSpec must be overwritten and 
>> maybe you could give me a hint how i could do this.
>> If im aware what to do, i can create a PR for this.
>> 
>> Regards,
>> Christian
>> 
> 
> 
> <publickey - [email protected] - 0xF0E154C5.asc>

Reply via email to