.. _version_2.1.9:

=============
Version 2.1.9
=============

Released on 2017/11/08.

.. NOTE::

   If you are upgrading a cluster, you must be running CrateDB
   :ref:`version_1.1.3` or higher before you upgrade to 2.1.9.

   If you want to perform a :ref:`rolling_upgrade`, your current CrateDB
   version number must be :ref:`version_2.1.0`.  If you want to upgrade from a
   version prior to this, the upgrade will introduce all of the breaking
   changes listed for :ref:`version_2.1.0`, and will require a
   :ref:`full_restart_upgrade`.

   Consult the :ref:`version_2.1.0_upgrade_notes` for ``2.1.0`` when upgrading.

.. WARNING::

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

.. _back up your data: https://crate.io/a/backing-up-and-restoring-crate/

Changelog
=========

Fixes
-----

- Fixed an issue that caused extra spaces to be added to the formatted console
  results in the Admin UI.

- Fixed issue that caused ``NULL`` values to be displayed as empty objects in
  the console view of the Admin UI.

- Fixed an issue that prevented the complete graceful shutdown of CrateDB node.

- Fixed an issue that caused a ``NullPointerException`` for queries that use
  the ``IN`` or ``ANY`` operator on timestamp fields.

- Improves resiliency of ``COPY FROM`` and ``INSERT FROM SUBQUERY`` statements
  when lot of new partitions will be created on demand.

- Fixed a ``NullPointerException`` which could occur when joining four tables
  with a join condition which referred to fields from the leftmost relation.

- Fixed a problem that caused ``WITHIN`` queries to return no or incorrect
  results.

- Fixed the problem that ``stats.breaker.*`` settings were not applied to the
  correct circuit breaker.

- Fixed an issue that caused an error ``Primary key value must not be NULL``
  to be thrown when trying to insert rows in a table that has a generated
  column which is used both in ``PARTITION_BY`` and ``PRIMARY KEY``.

- The postgres wire protocol service can now be bound to IPv6 addresses as
  documented.

- Fixed an issue that resulted in aliases overriding column names when a
  subselect is used and a column appears in the outer SELECT multiple times,
  without an alias and with alias or with multiple aliases. E.g.::

    SELECT a, a AS newcol FROM (SELECT a FROM t WHERE a > 1)
    SELECT a AS newcol1, a AS newcol2 FROM (SELECT a FROM t WHERE a > 1)
