Version 5.3.4¶
Released on 2023-07-11.
Note
If you are upgrading a cluster, you must be running CrateDB 4.0.2 or higher before you upgrade to 5.3.4.
We recommend that you upgrade to the latest 5.2 release before moving to 5.3.4.
A rolling upgrade from 5.2.x to 5.3.4 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.3.0 release notes for a full list of changes in the 5.3 series.
Fixes¶
Fixed an issue introduced with CrateDB
5.3.0
resulting in failing writes, broken replica shards, or even un-recoverable tables on tables using a column definition with aIP
data type and an explicitINDEX OFF
. Any table that was created withINDEX OFF
on aIP
column and already written to with CrateDB version >=5.3.0
should be recreated using e.g. INSERT INTO new_table SELECT * FROM old_table (followed by swap table ALTER CLUSTER SWAP TABLE new_table TO old_table) or restored from a backup.Improved error message to be user-friendly, for definition of CHECK at column level for object sub-columns, instead of a
ConversionException
.Added validation to prevent creation of invalid nested array columns via
INSERT INTO
and dynamic column policy.Fixed parsing of
ARRAY
literals in PostgreSQLsimple
query mode.Fixed value of
sys.jobs_log.stmt
for various statements when issued via the PostgreSQLsimple
query mode by using the original query string instead of the statements string representation.Fixed an issue that caused
UPDATE
andDELETE
on tables withPRIMARY KEYs
from ignoring nonprimary key
symbols inWHERE
clauses if theWHERE
clauses containPRIMARY KEYS
, e.g.UPDATE test SET x = 10 WHERE pk_col = 1 AND x = 2; -- executed update with 'pk_col = 1' only, ignoring 'x = 2'
Fixed an issue that could cause errors for queries with aggregations,
UNION
andLIMIT
, e.g.SELECT a, avg(c), b FROM t1 GROUP BY 1, 3 UNION SELECT x, avg(z), y FROM t2 GROUP BY 1, 3 UNION SELECT i, avg(k), j FROM t3 GROUP BY 1, 3 LIMIT 10
Fixed an issue which prevented
INSERT INTO ... SELECT ...
from inserting any records if the target table had a partitioned column of a non-string type, used in any expressions ofGENERATED
orCHECK
definitions.Fixed an issue which caused
INSERT INTO ... SELECT ...
statements to skipNULL
checks ofCLUSTERED BY
column values.Fixed an issue that resulted in enabled indexing for columns defined as the
BIT
data type even when explicitly turning it of usingINDEX OFF
.Fixed an issue resulting in an exception when writing data into a column of type
Boolean
with disabled indexing usingINDEX OFF
.Fixed an issue that caused an exception to be thrown when inserting a non-array value into a column that is dynamically created by inserting an empty array, ultimately modifying the type of the column and then selecting this column by the row’s primary key, for example:
CREATE TABLE t (id int primary key, o OBJECT(dynamic)); INSERT INTO t VALUES (1, {x=[]}); INSERT INTO t VALUES (2, {x={}}); /* this is the culprit statement, inserting an object onto an array typed column */ SELECT * FROM t WHERE id=1; SQLParseException[Cannot cast object element `x` with value `[]` to type `object`]
after the fix:
SELECT * FROM t WHERE id=1; +----+-------------+ | id | o | +----+-------------+ | 1 | {"x": null} | +----+-------------+