CrateDB 是一个分布式的 SQL 数据库,使得实时存储和分析大量的机器数据变得简单。CrateDB 提供了通常与 NoSQL 数据库相关的可扩展性和灵活性,最小的 CrateDB 集群可以轻松地每秒摄取数万条记录。这些数据可以在整个集群中实时地、临时地、并行地进行查询。
CrateDB 5.5.1 现已正式发布,该版本更新内容如下:
修复
- 修复了导致在
WHERE
子句中使用NOT
表达式的查询无法正确评估NULL
的问题。 - 修复了以下问题:在
INSERT INTO .. ON CONFLICT
语句中,如果列不在目标列列表中,则生成的主键列的值会求值为NULL
的问题。 - 在创建表格时,如果使用表函数作为默认表达式或生成表达式的一部分,现在会在创建表格时出错,而不会因运行时故障而永远不插入记录。
- 改进了在使用带有
wait_for_completion=false
和RETURN SUMMARY
的COPY FROM
时的错误信息。现在它会报告不支持这种组合,而不是出现ClassCastException
。 - 修复了导致在
WHERE
子句中使用NOT (a AND b)
表达式的查询无法正确评估NULL
值的问题。 - 修复了一个问题,该问题可导致在包含可空列的
CASE
表达式中使用NOT
或!=
进行查询时排除NULL
entries。 - 重新添加
jcmd
到捆绑的 JDK 发行版中。 - 如果列本身或其子列参与了与其他列的表级约束,则在尝试删除该列时,会返回有意义的错误。例如,不能从以下表中删除列
col_to_drop
:
CREATE TABLE t1 (i int, col_to_drop int,
CHECK (col_to_drop + i > 0))
CREATE TABLE t2 (i int, col_to_drop object AS (subcol_a int),
CHECK (col_to_drop['subcol_a'] + i > 0))
- 修复了一个问题,该问题会在尝试删除带有 CHECK 的列时抛出
ColumnUnknownExceptio
。所有相关约束都会与列一起被删除。 - 修复了导致 hash-join operator 生成无效 hashes 的问题,从而在涉及两个以上关系时导致连接操作中断例如:
SELECT * FROM t1, t2, t3 WHERE t3.c = t1.a AND t3.c = t2.b AND t1.a = t2.b;
将生成 logical plan:
HashJoin[(t3.c = t2.b AND t1.a = t2.b)]
├ HashJoin[(t3.c = t1.a)]
│├ Collect[doc.t3 | [c] | true]
│└ Collect[doc.t1 | [a] | true]
└ Collect[doc.t2 | [b] | true]
连接 t3.c = t2.b AND t1.a = t2.b 的 hash-symbol generation 已损坏,不会连接数据。
- 修复了 5.5.0 中引入的回归,该回归导致在通过
optimizer_move_filter_beneath_join
规则优化查询时,嵌套连接中过滤条件丢失 。 - 修复了 5.5.0 中引入的回归,该回归导致在创建表时空字符串被接受为有效列名。
详情可查看更新说明。