CRATE DB:WHERE IN on timestamp数据导致NullPointerException

时间:2018-01-29 15:54:02

标签: crate cratedb

以下选项不起作用:

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

Start_time是时间戳列。 Crate响应:

Error!

SQLActionException[UnhandledServerException: java.lang.NullPointerException]

WHERE IN无法处理时间戳吗?还有其他选择吗? 箱包版本是2.1.6。

2 个答案:

答案 0 :(得分:0)

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

您可以尝试使用最新版本吗?否则发布您的架构和一些示例数据以重现?

答案 1 :(得分:0)

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

那说,有一个解决方法。您必须将timestamp列强制转换为long,它将正常工作:

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

这是有效的,因为时间戳在内部表示为long,所以你不会失去任何精度。