.. _version_1.0.0:

=============
Version 1.0.0
=============

Released on 2016/12/05.

.. NOTE::

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

    You cannot perform a `rolling upgrade`_ to this version. Any upgrade to
    this version 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
=========


Breaking Changes
----------------

- Removed ``schema_name`` from ``information_schema.tables``,
  ``information_schema.columns``, and ``information_schema.table_constraints``
  in favour of ``table_schema``.

- Possibly BREAKING blob storage changes:

- Changed blob storage to utilize all paths listed under ``path.data``.

  - Changed the directory layout in case a custom ``blobs.path`` is
    configured. This allows running two nodes on the same machine pointing to
    the same ``blobs.path`` without conflicts.

    These changes require a manual migration for users who have blob tables and
    either had:

     - Multiple paths configured under ``path.data``

     - A custom ``blobs.path`` set either globally or per table.

  Please run the `migration script`_ provided **before** updating to examine
  whether you are affected by these changes. The migration script will tell you
  what has to be done.


Changes
-------

- Removed the ``client`` package which contained the deprecated
  ``crate-client``. You should start using the PostgreSQL JDBC driver instead.

- Removed Java 7 support

- Optimize execution of joins by ordering the join relations based on
  join/where conditions.

- Improved error message if a :ref:`function <gloss-function>` is unsupported
  with ``distinct``.

- Nested numeric factors do not require brackets any more; e.g. ``SELECT + -
  10`` is now supported.

- Added subscript support for ``cast`` and ``try_cast`` :ref:`expressions
  <gloss-expression>`. e.g.: ``SELECT cast(coordinates AS array(double))[1]
  FROM sys.summits`` is now possible

- Upgraded Elasticsearch to 2.4.2.

- Added scalar functions ``latitude`` and ``longitude`` to extract latitude and
  longitude of a ``geo_point``.

- Improved performance of ``array_cat`` and ``array_difference`` scalar
  functions if the array contains function expressions.

- New setting ``stats.service.interval`` which allows to control the refresh
  interval of the table statistics used to create optimal query execution
  plans.

- Added support for global aggregations on :ref:`subselects <gloss-subquery>`.

- Added the ``-C`` option for providing CrateDB settings and deprecated usage
  of the ``.es`` prefix with ``-D`` option.

- Added support for global aggregations on joins

- Log unhandled HTTP related exceptions as ``debug`` instead of ``error``.

- Implemented ``if`` conditional function.

- F261/F262: Implemented ``CASE`` expression support.

- Removed the duplicate ``rowcount`` field from the HTTP response.

- Added the ``search_path`` session setting parameter. The default table schema
  can be set with ``SET SESSION search_path = schema_name``.

- Updated crate-admin to 1.0.1 which includes the following changes:

  - Fixed an issue that caused incorrect URL paths if the project gets built.

    Implemented new layout for the Admin UI.

  - Local development: do not store ``base_uri`` permanently in localStorage
    but keep it in URL.

  - Added Pepper contact widget which displays various Crate.io support
    Channels in a user friendly way.

  - The first node in the node list is selected by default.

  - The first table in the table list is selected by default.

  - Developer news from Crate.io website are now loaded correctly into
    ``newsfeed``.

- Updated Crash to 0.20.0 which includes the following change:

- Updated information_schema metadata queries to reflect the current state of
  CrateDB.

Fixes
-----

- Fixed issue in joins with 3 or more tables where limit was applied before
  ``WHERE`` clause filtering which produced wrong results.

- Fixed issue which causes ``BETWEEN`` to return a wrong result if ``min`` or
  ``max`` is null.


.. _migration script: https://github.com/crate/crate-utils/tree/master/migrations/pre-1.0
