CRATE DB:WHERE IN 时间戳数据导致 NullPointerException

CRATE DB: WHERE IN on timestamp data results in NullPointerException

以下select 不起作用:

 SELECT * FROM "myschema"."timetable" WHERE "start_time" in (1519705800000, 1519710840000, 1519705800000, 1519718400000)

Start_time 是时间戳列。板条箱响应:

Error!

SQLActionException[UnhandledServerException: java.lang.NullPointerException]

WHERE IN 不处理时间戳吗?有其他选择吗? 板条箱版本是 2.1.6.

我无法在最新版本 (2.3.2) 的 CrateDB 实例上确认此行为。

你能试试最新版本吗?否则 post 您的架构和一些示例数据要重现?

此错误已在 CrateDB 2.1.9 中修复,请参阅 https://crate.io/docs/crate/reference/en/2.1/release_notes/2.1.9.html#fixes。请考虑升级到 2.1.9,因为它只是一个补丁版本,应该不会影响您的开发状态。

也就是说,有一个解决方法。您必须将时间戳列转换为 long,它会正常工作:

SELECT * FROM "myschema"."timetable" WHERE "start_time"::long in (1519705800000, 1519710840000, 1519705800000, 1519718400000);

之所以可行,是因为时间戳在内部表示为 long,因此您不会失去任何精度。