.. _version_2.1.0:

=============
Version 2.1.0
=============

Released on 2017/07/11.

.. 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.0.

   You cannot perform a :ref:`rolling_upgrade` to this version. Any upgrade to
   this version will require a :ref:`full_restart_upgrade`.

   Consult the `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
=========

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

 - ``CURRENT_USER``, ``USER`` and ``SESSION_USER`` are now reserved words as we
   introduced them as system functions. These terms will not be available to
   be used as table, and column names and for already existing entities they
   will have to be quoted when referenced (otherwise the terms will be treated
   as function calls).

 - ``SELECT`` statements without any ``FROM`` items are no longer executed
   against the ``sys.cluster`` table, but against a virtual table with no
   columns. Queries including ``sys.cluster`` columns but no explicit ``FROM``
   item will now result in a ``ColumnUnknownException``.

 - The ``onModule()`` method had been removed from ``io.crate.Plugin``
   interface; ``createGuiceModules()`` must be used instead.

 - ``srv`` and ``azure`` are no longer valid configuration options for
   ``discovery.type``. Instead there is a new ``discovery.zen.hosts_provider``
   settings which can be set to either ``srv`` or ``azure``.

Packaging Changes
.................

 - The sigar jar and object files have been moved from ``plugins/sigar`` to
   ``lib/sigar``.

Changes
-------

 - Updated Elasticsearch to ``5.2.2``.

 - Updated Crash to ``0.21.3``.

 - Updated the Admin UI to ``1.4.1``.

 - The table setting ``recovery.initial_shards`` has been deprecated. You may
   set ``gateway.local.initial_shards`` per node instead.
   CrateDB will continue to read the old setting but applications should be
   migrated to the new setting.

 - Added support for ``GRANT`` and ``REVOKE`` privileges for accessing the
   cluster. Currently supported privilege types: ``DQL``, ``DML`` and ``DDL``.

 - Added support for ``GRANT``, ``DENY`` and ``REVOKE`` privileges for
   accessing the tables and schemas.

 - Added column ``username`` to ``sys.jobs`` and ``sys.jobs_log`` that contains
   the username under which the job was invoked.

 - Added SSL/TLS support for HTTP endpoints.

 - Added SSL/TLS support for PostgreSQL Wire Protocol.

 - Added new HBA setting ``ssl`` which allows to control whether
   users have to connect with ssl enabled or disabled.

 - Added support for client certificate authentication via HBA.

 - Added support for joins on virtual tables.

 - Queries which contain a correlated subquery will now result in an error
   stating that correlated subqueries are not supported, instead of a more
   confusing error indicating that a relation is unknown.

 - Extended the output of the ``EXPLAIN`` statement.

.. _version_2.1.0_upgrade_notes:

Upgrade Notes
=============

Upgrading from version 2.0.x
----------------------------

If you're using CrateDB's BLOB storage and you need to run at least version
2.0.4 before upgrading to 2.1.0. Please consult the :ref:`version_2.0.4`
release notes for further details.

Upgrading from versions prior to 2.0.0
--------------------------------------

Please consult the :ref:`version_2.0.0_upgrade_notes` for 2.0.0.
