Version 5.4.6¶
Released on 2023-11-30.
Note
If you are upgrading a cluster, you must be running CrateDB 4.0.2 or higher before you upgrade to 5.4.6.
We recommend that you upgrade to the latest 5.3 release before moving to 5.4.6.
A rolling upgrade from 5.3.x to 5.4.6 is supported. Before upgrading, you should back up your data.
Warning
Tables that were created before CrateDB 4.x will not function with 5.x and must be recreated before moving to 5.x.x.
You can recreate tables using COPY TO
and COPY FROM
or by
inserting the data into a new table.
Table of Contents
See the Version 5.4.0 release notes for a full list of changes in the 5.4 series.
Fixes¶
Fixed an issue that caused queries with a
NOT
expression in theWHERE
clause to fail evaluatingNULL
correctly.Fixed an issue that caused the value for generated primary key columns to evaluate to
NULL
inINSERT INTO .. ON CONFLICT
statements if the column wasn’t part of the target column list.Creating a table that uses a table-function as part of a default expression or generated expression now results in an error on table creation, instead of never inserting records due to runtime failures.
Improved the error message when using
COPY FROM
withwait_for_completion=false
andRETURN SUMMARY
. It now reports that the combination is not supported instead of running into aClassCastException
.Fixed an issue that caused queries with a
NOT (a AND b)
expression in theWHERE
clause to not evaluate correctly withNULL
values.Fixed an issue that caused queries with a
NOT
or!=
on aCASE
expression containing a nullable column to excludeNULL
entries.Fixed an issue that caused the hash-join operator generate invalid hashes which lead to a broken join operation when there were more than two relations involved e.g.::
SELECT * FROM t1, t2, t3 WHERE t3.c = t1.a AND t3.c = t2.b AND t1.a = t2.b;
would generate the 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]
The hash-symbol generation for the join t3.c = t2.b AND t1.a = t2.b was broken and would not join the data.