Version 6.4.4 - Unreleased

Note

In development. 6.4.4 isn’t released yet. These are the release notes for the upcoming release.

Note

If you are upgrading a cluster, you must be running CrateDB 5.0.0 or higher before you upgrade to 6.4.4.

We recommend that you upgrade to the latest 6.3 release before moving to 6.4.4.

A rolling upgrade from >= 6.3.0 to 6.4.4 is supported. Before upgrading, you should back up your data.

Warning

Tables that were created before CrateDB 5.x will not function with 6.x and must be recreated before moving to 6.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 6.4.0 release notes for a full list of changes in the 6.4 series.

Fixes

  • Fixed an issue that caused a UNION ALL inside a sub-select to return an additional column, or to fail with Index x out of bounds for length y, if the outer query used an ORDER BY on a column which was not selected and the sub-select contained further columns which were neither selected nor used by the ORDER BY. e.g:

    SELECT c3 FROM (SELECT * FROM tbl UNION ALL SELECT * FROM tbl) x ORDER BY c1;
    
  • Fixed an issue that could return wrong results if a WHERE clause contained a non-deterministic function, like random(), and was applied on a virtual relation which uses window functions, GROUP BY or table functions. Prevent the push down for such filters, as they can produce different results than if applied after those operations as intended.

  • Fixed an issue that caused under-accounting of memory usage for queries using array_agg() aggregation function and aggregation queries using DISTINCT.

  • Fixed an issue that caused ~ and ~* regular expression operators to not match any rows when used in the WHERE clause of a query on column with INDEX OFF, e.g.:

    SELECT * FROM tbl WHERE no_index_col ~ '[a-z]'
    
  • Fixed an issue where a node could still shut down when the cluster health wait timed out during decommissioning despite cluster.graceful_stop.force=false.

  • Improved the error message for queries involving an uncorrelated subquery in join condition. e.g:

    SELECT * FROM t JOIN t AS t2 ON t.c = (select 1)
    
  • Fixed an issue that could cause a correlated subquery inside a join, to ignore a filter on a bare boolean column of the outer relation. As a consequence, it could return rows that should have been filtered out. e.g.:

    SELECT (
        SELECT count(*)
        FROM t t1 CROSS JOIN t t2
        WHERE t1.col = t2.col AND q.flag
    )
    FROM t q;
    

    In this example, the q.flag filter was dropped. array_agg() aggregation function.

  • Fixed an issue that caused wrong results when array_agg() aggregation function was used with window functions with an explicit window frame, e.g.:

    SELECT array_agg(x) OVER(
      ORDER BY x ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM tbl
    
  • Fixed an issue where ALL did not return TRUE when comparing NULL values against an empty array.