.. _version_5.6.1:

=============
Version 5.6.1
=============

Released on 2024-01-29.

.. NOTE::

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

    We recommend that you upgrade to the latest 5.5 release before moving to
    5.6.1.

    A rolling upgrade from 5.5.x to 5.6.1 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`_.

.. _back up your data: https://crate.io/docs/crate/reference/en/latest/admin/snapshots.html
.. _inserting the data into a new table: https://crate.io/docs/crate/reference/en/latest/admin/system-information.html#tables-need-to-be-recreated

.. rubric:: Table of contents

.. contents::
   :local:

See the :ref:`version_5.6.0` release notes for a full list of changes in the
5.6 series.

Security Fixes
==============

- Fixed a security issue where any CrateDB user could read/import the content of
  any file on the host system, the CrateDB process user has read access to, by
  using the ``COPY FROM`` command with a file URI. This access is now restricted
  to the ``crate`` superuser only.

Fixes
=====

- Added a workaround for a change in JDK 21.0.2 which caused many operations to
  get stuck.

- Fixed an issue that led to errors when
  :ref:`privileges <administration-privileges>` are defined for users, when
  performing a rolling upgrade of a cluster from a version before
  :ref:`version_5.6.0` to :ref:`version_5.6.0`.

- Fixed an issue that caused ``SELECT`` statements with ``WHERE``
  clause having an equality condition on a primary key to return ``NULL`` when
  selecting an object sub-column of ``ARRAY(OBJECT)`` type.

- Fixed an issue that caused failure of a statement, mixing correlated subquery
  and sub-select. An example::

    CREATE TABLE tbl(x INT);
    INSERT INTO tbl(x) VALUES (1);
    SELECT (
       SELECT x FROM tbl
          WHERE t.x = tbl.x
        AND
          tbl.x IN (SELECT generate_series from generate_series(1, 1))
    ) FROM tbl t;
