.. _version_4.0.7:

=============
Version 4.0.7
=============

Released on 2019/10/24.

.. NOTE::

    Please consult the :ref:`v4.0.0-upgrade-notes` before upgrading from
    CrateDB 3.x or earlier.  Before upgrading to 4.0.7 you should be running a
    CrateDB cluster that is at least on 3.0.7.

    We recommend that you upgrade to the latest 3.3 release before moving to
    4.0.7.

    If you want to perform a `rolling upgrade`_, your current CrateDB version
    number must be at least :ref:`version_4.0.2`. Any upgrade from a version
    prior to this will require a `full restart upgrade`_.

    When restarting, CrateDB will migrate indexes to a newer format. Depending
    on the amount of data, this may delay node start-up time.

.. WARNING::

    Tables that were created prior CrateDB 3.x will not function with 4.x and
    must be recreated before moving to 4.x.x.

    You can recreate tables using ``COPY TO`` and ``COPY FROM`` or by
    `inserting the data into a new table`_.

    Before upgrading, you should `back up your data`_.

.. _rolling upgrade: https://crate.io/docs/crate/howtos/en/latest/admin/rolling-upgrade.html
.. _full restart upgrade: https://crate.io/docs/crate/howtos/en/latest/admin/full-restart-upgrade.html
.. _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_4.0.0` release notes for a full list of changes in the
4.0 series.

Fixes
=====

- Fixed the handling of array values when used in the ``SET GLOBAL`` statement.

- Improved the handling of ``NULL`` values in ``SET GLOBAL`` statement. They
  now no longer cause a ``NullPointerException`` but instead advice users to
  use ``RESET GLOBAL`` to reset settings to their default value.

- Fixed :ref:`evaluation <gloss-evaluation>` of generated columns when they are
  based on columns with default constraints and no user given values. Default
  constraints where not taken into account before.

- Fixed an issue when using ``try_cast('invalid-ts' as timestamp)`` which
  resulted in a parsing exception instead of an expected ``NULL`` value.

- Tuned the circuit breaker mechanism to reduce the chance of it rejecting
  queries under low cluster load.

- Closed some gaps in the memory accounting used for the circuit breaker
  mechanism. This should help prevent memory intense queries from triggering
  long GC pauses as they'll be rejected earlier.

- Made the documented :ref:`indices.breaker.total.limit
  <indices.breaker.total.limit>` setting public, so that it can be adjusted
  using :ref:`SET GLOBAL <ref-set>`.

- Improved the migration logic for partitioned tables which have been created
  in CrateDB 2.x. If all current partitions of a partitioned tables have been
  created in CrateDB 3.x, the table won't have to be re-indexed anymore to
  upgrade to CrateDB 4.0+.

- Changed the error message returned when a :ref:`CREATE REPOSITORY
  <sql-create-repository>` statement fails so that it includes more information
  about the cause of the failure.
