.. _version_4.4.0:

=============
Version 4.4.0
=============

Released on 2021-01-19.

.. NOTE::

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

    We recommend that you upgrade to the latest 4.3 release before moving to
    4.4.0.

    A rolling upgrade from 4.3.x to 4.4.0 is supported.

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

.. _back up your data: https://crate.io/docs/crate/reference/en/latest/admin/snapshots.html



.. rubric:: Table of Contents

.. contents::
   :local:


Deprecations
============

- The settings ``discovery.zen.publish_timeout``,
  ``discovery.zen.commit_timeout``, ``discovery.zen.no_master_block``,
  ``discovery.zen.publish_diff.enable`` have been marked as deprecated and will
  be removed in a future version.


Changes
=======


Performance improvements
------------------------

- Improved the performance of queries on the ``sys.health`` table.

- Added support for using the optimized primary key lookup plan if additional
  filters are combined via ``AND`` :ref:`operators <gloss-operator>`.

- Improved the performance of queries on the ``sys.allocations`` table in cases
  where there are filters restricting the result set or if only a sub-set of
  the columns is selected.

- Improved the performance for queries which select a subset of the columns
  available in a wide table.


SQL and PostgreSQL compatibility improvements
---------------------------------------------

- Added :ref:`arithmetic operation <arithmetic>` support for the :ref:`numeric
  <type-numeric>` type.

- Added support for the :ref:`numeric <type-numeric>` data type and allow the
  ``sum`` aggregation on the :ref:`numeric <type-numeric>` type.  Note that the
  storage of the ``numeric`` data type is not supported.

- Extended the ``RowDescription`` message that can be sent while communicating
  with PostgreSQL clients to include a ``table_oid`` and a ``attr_num`` based
  on the values that are also exposed via the ``pg_catalog.pg_attribute``
  table. This improves compatibility with clients which make use of these
  attributes.

- Changed the :ref:`format_type <scalar-format_type>` function to use the PostgreSQL
  compatible type name notation with ``[]`` suffixes for arrays, instead of
  ``_array``.

- Added the ``delimiter`` option for :ref:`sql-copy-from` CSV files. The option
  is used to specify the character that separates columns within a row.

- Added the ``empty_string_as_null`` option for :ref:`sql-copy-from` CSV files.
  If the option is enabled, all column's values represented by an empty string,
  including a quoted empty string, are set to ``NULL``.


Administration and Operations
-----------------------------

- Added information about the shards located on the node to the :ref:`NodeInfo
  MXBean <node_info_mxbean>` which is available as an enterprise feature.

- Added the :ref:`sys.snapshot_restore <sys-snapshot-restore>` table to track
  the progress of the :ref:`snapshot restore <snapshot-restore>` operations.


New scalar and window functions
-------------------------------

- Added the :ref:`to_char <scalar-to_char>` scalar function for ``timestamp``
  and ``interval`` argument data types.

- Added the :ref:`split_part <scalar-split_part>` scalar function.

- Added the :ref:`dense_rank <window-functions-dense-rank>` window function,
  which is available as an enterprise feature.

- Added the :ref:`rank <window-functions-rank>` window function, which is
  available as an enterprise feature.
