Version 5.9.3¶
Released on 2024-11-14.
Note
If you are upgrading a cluster, you must be running CrateDB 4.0.2 or higher before you upgrade to 5.9.3.
We recommend that you upgrade to the latest 5.8 release before moving to 5.9.3.
A rolling upgrade from 5.8.x to 5.9.3 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.9.0 release notes for a full list of changes in the 5.9 series.
Fixes¶
Fixed an issue that would lead to wrong results when querying a table with a
WHERE
clause which filters on multiple columns, which are part of PRIMARY KEY, and there at least one of them is tested against lots of values, e.g.:SELECT * FROM t WHERE pk1 IN (<long_list_of_values>) AND pk2 = 3 AND pk3 = 'foo'
Fixed an issue that would prevent dropping a generated column from a table, even though no error was returned.
Fixed an issue that caused exceptions when querying sub-columns of nested object arrays.
Fixed an issue that would cause an error to be thrown when attempting to
ORDER BY
on top of a complex query (e.g. aJOIN
), using an expression which contains a query parameter, e.g.:SELECT * FROM t1 JOIN t2 ON t1.a = t2.b ORDER BY abs(t2.i + ?) DESC
Re-added the missing
crate-node
script to the tarball distribution.Fixed an issue that caused error to be thrown when attempting to access a nested field of an OBJECT, which contains also arrays of OBJECT, e.g.:
SELECT {"o"=[{"oo"={"x"= 10}}, {"oo"={"x"= 20}}]}['o']['oo']['x']
Fixed an issue that prevented to cast an array of TEXT containing JSON text representation values to an array of OBJECT.
Fixed an issue that caused
ClassCastExceptions
or invalid results when theWHERE
clause contained comparisons of different data types. For example:SELECT * FROM t WHERE a < 128; SQLParseException[Cannot cast `128` of type `integer` to type `byte`] SELECT * FROM t WHERE float_col = 0.99999999; +-----------+ | float_col | +-----------+ | 1.0 | +-----------+
Fixed an issue that caused
=
on a NUMERIC type and a number type such as DOUBLE PRECISION or INTEGER to throw aClassCastException
or to return invalid results.Fixed an issue that lead to an error when selecting a table function inside a a scalar function and using a column inside a scalar but not having it neither in
SELECT
nor in the table function. For example:SELECT CASE WHEN regexp_matches(col1, '^a') != [] THEN 'found' WHEN col2 LIKE '%xyz%' <--- col2 is not in SELECT targets and not used in the table function THEN 'special case' ELSE 'default' END FROM test;
Fixed an issue that caused the ANALYZE statement to fail when executed on a table that was created with an OBJECT(IGNORED) column and afterwards a sub-column with a concrete type was added to the object column. In cases where data was already inserted into this sub-column with a different type than defined later on, the ANALYZE statement failed with a cast error.
Fixed an issue that caused a CREATE TABLE statement to fail when a column defines a generated expression including a conditional CASE function.
Fixed an issue that caused a SQL parsing error when running a query against a
FOREIGN TABLE
of type jdbc which contains an aliased column name inside theWHERE
clause. For example:CREATE FOREIGN TABLE t (a INT) SERVER s; SELECT * FROM (SELECT id as some_alias FROM t) tt WHERE tt.some_alias = 1;
Fixed the error messages returned when a given parameter of type OBJECT fails on casting a object element to the expected type.
Fixed an issue that may cause the use of explicit casts inside a generated column expression to fail with a SQL parsing error, depending on the target type. For example:
CREATE TABLE t ( p GEO_POINT, x ARRAY(DOUBLE) GENERATED ALWAYS AS p::ARRAY(DOUBLE) );
Fixed an issue that caused an
UnsupportedFeatureException
whenORDER BY
expression contained a nested function. For example:SELECT * FROM t ORDER BY LEFT(txt_col, 1) = ANY(['a']);
Fixed an issue that caused casting values of the
NUMERIC
type to thefloat
ordouble
types to hang. For example:SELECT exp(-1110102730.1852759636)::float;