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,因此您不会失去任何精度。
以下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,因此您不会失去任何精度。