Version 5.2.1

Released on 2023-02-02.


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

We recommend that you upgrade to the latest 5.1 release before moving to 5.2.1.

A rolling upgrade from 5.1.x to 5.2.1 is supported. Before upgrading, you should back up your data.


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.2.0 release notes for a full list of changes in the 5.2 series.


  • Fixed behaviour of FETCH RELATIVE, which previously behaved identically to FETCH FORWARD and FETCH BACKWARD, whereas it should behave similarly to FETCH ABSOLUTE, with the difference that the position of the 1 row to return is calculated relatively to the current cursor position.

  • Fixed an issue that caused accounted memory not to be released when using cursors, even if the CURSOR was explicitly or automatically (session terminated) closed.

  • Added validation to reject inner column names containing special whitespace characters to avoid invalid schema definitions.

  • Fixed an issue that caused the returned column names to be missing the subscripts when querying sub-columns of nested object arrays.

  • Fixed an issue that caused IndexOutOfBoundsException to be thrown when trying to FETCH backwards from a CURSOR, past the 1st row.

  • Fixed an issue that caused wrong rows to be returned when scrolling backwards and then forwards through a CURSOR.

  • Improved error message when fetching using ABSOLUTE, past the last row returned by the cursor query.

  • Fixed and issue that caused wrong or 0 rows to be returned when trying to fetch all rows backwards from a CURSOR using: FETCH BACKWARDS ALL.

  • Fixed an issue that caused swap table to consume invalid table names provided in a double-quoted string format containing . such as "table.t" by mis-interpreting it as "table"."t", which is a two double-quoted strings joined by a .. This caused metadata corruptions leading to StartupExceptions and data losses. Corrupted metadata recovery is in place to prevent the exceptions but not all data can be recovered.

  • Fixed an issue that caused ClassCastException when accessing a sub-column of a nested object array where the sub-column resolves to a nested array. An example

    CREATE TABLE test (
      "a" ARRAY(OBJECT AS (
        "b" ARRAY(OBJECT AS (
          "s" STRING
    INSERT INTO test (a) VALUES ([{b=[{s='1'}, {s='2'}, {s='3'}]}]);
    SELECT a['b'] FROM test; // a['b'] is type of array(array(object))
  • Fixed an issue in the PostgreSQL wire protocol that would cause de-serialization of arrays to fail if they contained unquoted strings consisting of more than 2 words.