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>
