ClassCastException: org.apache.drill.exec.expr.holders.NullableDateHolder 无法转换为 org.apache.drill.exec.expr.holders.DateHolder

ClassCastException: org.apache.drill.exec.expr.holders.NullableDateHolder cannot be cast to org.apache.drill.exec.expr.holders.DateHolder

当我尝试在 Date 字段上使用 WHERE 子句查询镶木地板时,这个异常给了我 Drill v. 1.16。

select * FROM dfs.test."my/parquet/directory"
where "Date" >= '2019-11-01'
limit 10;

ClassCastException: org.apache.drill.exec.expr.holders.NullableDateHolder cannot be cast to org.apache.drill.exec.expr.holders.DateHolder

详情:

select min("Date") as min, max("Date") as max
FROM dfs.test."my/parquet/directory";
---
min,max
2017-02-03,2019-12-05
select distinct sqltypeof("Date") as test
FROM dfs.test."my/parquet/directory";
---
test
DATE

经过几个小时的调试后,我发现当我将 drill.exec.functions.cast_empty_string_to_null 设置为 FALSE 时,它开始起作用了。但是我不能让这个选项为假。

我是不是做错了什么?

找到解决方法:

WHERE "Date" >= DATE_ADD('2019-11-01', 0) 

它很丑陋,但它修复了行为。如果你找到更好的方法,请分享。

-- 更新

还是坏了。适用于版本 1.16、1.17、1.19