.. _version_1.1.4:

=============
Version 1.1.4
=============

Released on 2017/06/02.

.. NOTE::

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

    If you want to perform a `rolling upgrade`_, your current CrateDB version
    number must be :ref:`version_1.1.1` or higher. If you want to upgrade from
    a version prior to this, the upgrade will introduce all of the breaking
    changes listed for :ref:`version_1.1.0`, and will require a `full restart
    upgrade`_.

.. WARNING::

    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

.. rubric:: Table of contents

.. contents::
   :local:

Changelog
=========

Changes
-------

- Improved the resiliency of the retrieval of large results via HTTP. Queries
  are now aborted and result in an error if they consume too much memory.

- Changed the ``QueryStats`` JMX MBean to deliver node-based values instead of
  cluster-based values.

  This makes it possible to spot performance discrepancies between nodes more
  easily.

Fixes
-----

- Fixed a ``COPY FROM`` issue that caused imports into tables with certain
  combinations of ``PARTITIONED BY``, ``PRIMARY KEY`` and
  ``GENERATED COLUMNS`` to fail.

- Fixed an issue with algorithm that tries to reorder the joined tables using
  the optimum ordering. The issue caused an exception to be thrown when join
  conditions contain table(s) which are not part of the adjacent joined
  tables. E.g.::

    SELECT * FROM t1 JOIN t2 JOIN t3 JOIN t4 ON t4.id = t2.id

- Fixed an issue that led to ``ArrayIndexOutOfBoundsException`` on
  ``DISTINCT`` or ``GROUP BY`` queries on the ``sys.shards`` table.

- Fixed an issue that could cause ``sys.operations`` entries to remain even
  after the operation has finished.

- Optimized the JMX ``QueryStats`` MBean to prevent it from putting too much
  load on the cluster.

- Fixed the calculation of the ``OverallQueryAverageDuration`` ``QueryStats``
  MBean.

- The internal ``fetchSize`` is now dynamic based on configured heap and has
  an upper bound to prevent ``OutOfMemory`` errors if a PostgreSQL client
  retrieves a large result set without setting a ``fetchSize``, or setting a
  ``fetchSize`` which is too large.

- Fixed a race condition that could lead to ``KILL (ALL)`` causing queries to
  get stuck instead of interrupting them.

- Fix an issued that cause a ``NullPointerException`` when ordering by system
  columns.

- Fixed validation so that ``SELECT DISTINCT`` can be used only if there is no
  ``GROUP BY`` present or if the set of ``GROUP BY`` :ref:`expressions
  <gloss-expression>` is the same as the set ``SELECT`` expressions.

- Added validation that ``ORDER BY`` symbols are included in the ``SELECT``
  list when ``DISTINCT`` is used.
