=================
Changes for Crate
=================

Unreleased
==========

2015/12/23 0.54.1
=================

 - Improved error message on type cast failure

 - Fixed: Columns of type array and analyzed columns can now be selected in
   statements that contain joins

2015/12/16 0.54.0
=================

 - Fix: Plugin modules are now instantiated with settings

 - Added support for 2+ table joins

 - Fix: All insert from subquery statements are now executed without ``limit``

 - Updated crate-admin to 0.17.0 which includes following changes:

     - Display current shard recovery status on table info page. It shows the
       percentage of done recovery.

     - Updated calculation of underreplicated shards/records to work with the
       change in Crate server where shards in sys.shards table have a more fine
       granular state now and relocating shards are listed, too.

 - Added ``show schemas``, ``show tables``, and ``show columns``
   commands.

 - Updated crash to 0.15.0 which contains following changes:

   - Added new format ``json_row`` which prints a dataset as json row-by-row
     in separate lines.

   - Added the ``sysinfo`` command which queries the ``sys`` tables for
     system and cluster information. The command requires Crate >= 0.54.0

 - Added filtering support to ``COPY TO`` statement

 - Fix: disabled type detection for timestamps

 - Added support for ``Generated columns`` (Feature T175 ANSI SQL:2006)

 - fixed an issue which caused dangling readers after executing a self-join

 - Added ``char_length``, ``bit_length`` and ``octet_length`` scalar
   functions.

 - The ``jobs.keep_alive_timeout`` value can now be configured and the default has been
   changed to 0 (deactivated) from ``5m``

 - Allow creating the CrateClient with settings and servers at the same time

 - Expose shard recovery information in sys.shards table

 - Expose relocating shards in sys.shards table
   Note that relocating shards are shown additionally to their already assigned
   source shards.

 - Removed the limitation that all selected columns must also appear in the
   ORDER BY clause for joins.

 - Added support for explicit INNER JOIN .. ON syntax.

 - added os and jvm infos to sys.nodes table

 - sort columns in ``sys`` and `` information_schema`` tables
   alphabetically when selecting all columns with ``*``

2015/12/02 0.53.1
=================

 - Updated Crash to 0.14.3, which includes the following change:

   - Python2.6/2.7 output now prints unicode strings correctly when using
     csv output format

 - Improved the speed of group by queries which contain tables with more
   than 1 shard per node.

 - Updated crate-admin to 0.16.1 which includes following changes:

   - fix: column headers where not shown in result table on console page
     when two or more columns with the same name were selected

 - Fix: insert into a partitioned primary key column of type long
   could fail under some circumstances

 - Fix: missing characters when concatenating string under some
   rare circumstances

 - Internal optimization: Avoid writing partition values to the source.

 - Updated crate certificates in the ssl truststore.

 - Fixed an issue that could cause bulk update requests to fail if the
   ``bulkArgs`` contained only one item

2015/11/16 0.53.0
=================

 - Updated crate-admin to 0.16.0 which includes following changes:

   - The table list is now fully searchable and sorted by table name within
     its schemas.

   - fix: charts are not correctly displayed in Microsoft Edge browser.

   - UDC: identify anonymous user with cluster id.
     Both user id and cluster id are anonymous traits.
     Note: You can disable UDC via the `udc.enabled` setting on the Crate server.

 - implement ``intersects`` scalar function

 - fix: properly restrict partitioned by columns to primitive types
        during analysis

 - added functionality to index and match geo shapes

 - restrict WITHIN function to only accept geo_point (and compatible types)
   as first argument

 - Added snapshot and restore functionality

 - Changed crate launch scripts to no longer support extending the
   CRATE_CLASSPATH environment variable

 - Added initial limited cross and inner join support

 - Updated crate/elasticsearch for improved logging on graceful shutdown errors

 - Added ``array_cat``, ``array_unique`` and ``array_difference`` scalar
   functions. Also modified ``concat`` function to resolve to ``array_cat`` when
   ``concat`` function is called with 2 array args, so the operator ``||`` will
   work with arrays.

2015/11/11 0.52.2
=================

 - Updated crate-admin to 0.15.3 which includes following changes:

   - fix: REPLICATED DATA at the overview page showed incorrect percentage of
     of replicated data when number of undereplicated records was higher than
     number of total records

 - Updated crash to 0.14.2 which contains following changes:

   - Fixed an assertion error that could occur under python2.7

2015/11/04 0.52.1
=================

 - Fixed an issue that caused orphaned partitions with an remaining alias to
   not be recognized correctly

 - Fix: clean up file descriptors in case of exceptions when retrieving blobs
   over the REST api

 - Fixed an issue that was causing like queries to fail if using a special regex
   character

 - Upgraded Elasticsearch to 1.7.3

 - Fixed the issue which causes overloading of the first configured node in
   the cluster when multiple clients connections are established

 - Fixed a possible race condition that could lead to queries getting stuck
   (Only affected SELECT queries with a limit/offset > 500000)

 - Fix: Crate won't start properly if a plugin loading error occurs
   (e.g. through a misconfigured plugin)

 - Fixed an issue that was introduced in 0.52.0 which could cause a
   FetchContext to remain open longer than necessary in an error case.
   This could then lead to failures if an attempt was made to move shards to
   which the FetchContext hold onto.

 - Updated crate-admin to 0.15.2 which includes following changes:

   - fixed a bug that displays partitions that are not related to the selected
     table in the table-list.

   - fixed a bug where cluster shows wrong state if the number of nodes gets
     smaller than the minimum master nodes.

   - fixed a bug that displays a zero value as NULL value

   - fixed URL to download in dropdown that notifies about old Crate version

   - fixed a visual bug that let an item in the node/table list partly disappear
     if scrolling gets enabled

 - Updated crash to version 0.14.1 which contains the following changes:

   - Floating point values are no longer rounded to 6 places under python2.7 if
     output using the tabular or mixed output format.
     Now the behaviour for all output formats is the same and consistent with
     the python3 output format.

     Python2.6 will still display rounded values.

   - Fixed the issue casuing parsing error while using internal ``non-sql``
     crash commands with semicolon.

2015/10/13 0.52.0
=================

 - The client will now accept IPv6 literals as server addresses

 - Updated crate-admin to 0.15.0 which includes following changes:

   - display cluster checks on overview page

   - display relative Crate process CPU usage as bar chart and show number of
     cores per node

 - Allow quoted subscript expressions in SQL statement. This will allow
   supporting various client applications on Windows that use ODBC.

 - Added ``try_cast`` scalar function.

 - Added cluster checks which are exposed via the ``sys.checks`` table.

 - Added ``os_info`` column to ``sys.nodes`` table.
   Currently the column only lists the number of available processors in the JVM
   (which is usually equal to the number of cores of the CPU).

 - Upgraded Elasticsearch to 1.7.2
   This update changes the default value for delayed allocation of unassigned
   shards (see: `https://crate.io/docs/en/latest/configuration.html#unassigned`_).
   Also updated the upstream of EC2 discovery module

2015/10/09 0.51.6
=================

 - Fix check if setting is settable/resettable on runtime for nested settings

 - Exposed missing cluster gateway settings

 - Throw an exception when someone attempts to change non-runtime changeable
   settings

 - Fixed a race condition that could cause COPY FROM operations to get stuck if
   shards were to be relocated.

 - Fixed a race condition that could cause the re-creation of an already
   existing table partition and therefore potential dataloss when creating
   a lot of partitions simultaniously using COPY FROM or bulk inserts.

2015/10/07 0.51.5
=================

 - Updated crate-admin to 0.14.6 which includes following changes:

   - fixed a visual bug that let an item in the node/table list partly disappear
     if scrolling gets enabled

   - fixed URL to download in dropdown that notifies about old Crate version

   - fixed a bug that displays a zero value as NULL value

 - Fixed a bug in SHOW CREATE TABLE statement that leads to a wrong table
   schema if the table contains nested objects

 - Fix: Prevent NPE in COPY FROM and INSERT FROM SUBQUERY queries
   when newly created shards are not available yet

 - Fixed an issue that causes a ClosedChannelException during BLOB download

 - Fixed a bug that causes a NaN response on _score system column in select
   statement that uses an ORDER BY clause

 - Fix: in some rare cases tables were not updated on every node after table
   schema changes

 - If the same table appears more than once in the FROM clause now an error is
   thrown instead of silently ignoring it.

 - Fixed a rare bug that leads to serialization issues when a ShardBulkRequest
   was serialized more than once

 - Fixed a bug that could cause imports from s3 result in an error instead of
   importing the data if the URI contained wildcards.

 - Improve performance of LIKE and Regexp queries

 - Fix: Order by ``_raw`` and/or ``_id`` did not work.

 - Fix: support compressed ``_source``

2015/09/18 0.51.4
=================

 - Fixed calculation of the EC2 discovery retry delay in order to prevent
   exceeding of the AWS API request limit.

 - Updated crate-admin to 0.14.5 which includes following changes:

   - display ``NULL`` instead of empty cell in console results table

2015/09/15 0.51.3
=================

 - Display column names that contain a dot correctly in information schema
   and result column headers

2015/08/09 0.51.2
=================

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

   - updated Intercom to support new messaging features. The Intercom service is
     disabled if UDC is disabled on the Crate server.

 - Fixed handling of non-deterministic functions

 - Added Usage Data Collector ``udc`` column to ``sys.cluster`` table to
   indicate its configured settings.

 - Updated crash to version 0.14.0 which contains the following changes:

   - Fixed output tabular format bug which results in wrong representation
     of a string containing a floating point value.

   - Updated wording of the cluster check command output.

   - Added the check command which queries the ``sys.checks`` table for
     cluster checks

   - updated crate-python to 0.13.4

 - Fixed an issue that could kill long running queries on shards with few
   segments containing huge amounts of documents

2015/08/13 0.51.1
=================

 - Improved retry logic of EC2 unicast host discovery mechanism

 - Fixed a deadlock that could occur if queries with high offset or limit were
   executed concurrently

2015/08/06 0.50.3
=================

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

   - fixed line wrapping in console result table

 - Fixed an issue which could cause the blob recovery process to hang under some
   rare circumstances

 - Fixed an issue that caused ``COPY TO .. s3`` statements to leave the cluster
   in an inaccessible state

 - Fixed an issue that could cause a count function on partitioned tables
   to cause an error if a partition was deleted concurrently.

2015/07/29 0.51.0
=================

 - Added the ``KILL 'job_id'`` statement.

 - Fixed a bug with the kill of collectors when ``KILL ALL`` is called.

 - Added support for unicast host discovery via EC2 API

 - BREAKING CHANGE
   Connections to AWS S3 for ``COPY FROM`` and ``COPY TO`` are now using HTTPS.
   If you have previously blocked outgoing connections on ``443``, please update
   your firewall settings!

 - Improved handling of /_blobs REST URIs to prevent invalid URIs from being
   passed to main handler where they raise missleading error messages

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

   - added support for line breaks in console result table

 - Added column policy as column to ``information_schema.tables`` table

 - Added SHOW CREATE TABLE statement to dump the schema of a user created table

 - Updated crash to 0.13.1 which contains following changes:

   - added multiline support for tabular output format

 - Expose missing refresh_interval table setting in information_schema.tables.

 - Added support for multiple tables in refresh statement.

 - Added ``date_format`` scalar function

2015/07/29 0.50.2
=================

  - Fix: reduced the amount of unnecessary data handled on select queries

  - Fixed an issue which prevented column updates to be noticed in the cluster
    on tables in custom schemas.

  - Fix: issuing ``KILL ALL`` when a ``SELECT`` statement hung due to a node
    becoming unavailable during execution could result in error response

  - Improved the error handling: In case threadpools are exhausted (due to very
    high load on the cluster) queries could get stuck instead of being aborted
    right away.

  - Fixed a bug where a job entry wasn't cleaned up on any parser/analyzer errors.

  - Fixed an issue that caused queries on blob tables to cause a
    NullPointerException if the filter in the WHERE CLAUSE resulted in a
    ``null`` value.

  - Fix: fixed an issue which caused an error if one selects a setting
    which is not set

  - Fix: fixed an issue which caused TypeConversion errors if a setting was
    selected which represents a byte size
    (e.g. indices[‘store’][‘throttle’][‘my_bytes_per_sec’])

  - Fixed a rare bug which could cause a MapperParsingException if one creates
    a new dynamic array concurrently

2015/07/16 0.50.1
=================

 - Updated crate-admin to 0.14.1 which includes following changes:

   - fix: number of underreplicated shards were fetched and displayed incorrectly

   - load plugins.json that can inject additional modules on app start
     the "Get Started" tutorial is now implemented as a plugin

   - fix: approximate number of underreplicated and missing records per table was
     calculated incorrectly, which could have lead to different results
     when viewing table info on admin ui of different nodes

   - fix: automatically refresh load history chart on overview page

 - Fixed a bug which prevented a retry, or caused a retry to fail if a shard
   was closed because of relocation

 - Fixed an issue which could cause an error if a ``group by`` query was killed

 - Added a limitation notice that `COPY TO` doesn't work with system tables and
   attempting to do so will result in a more meaningful error.

 - Fixed bulk delete for partitioned tables where partition column was part
   of the where clause

 - Fixed an issue that could lead to unclosed contexts when issuing bulk requests

2015/07/16 0.49.6
=================

 - Fixed an issue which caused `array (string)` types to be interpreted as
   `string` if an analyzer was also used

 - Fixed an issue due to which bulk partition creation operations wouldn't
   timeout correctly

 - Corrected the default value of the `bulk.partition_creation_timeout`
   setting. It was incorrectly reported as `0s` instead of `10s`.

 - Fixed an issue that could cause concurrent queries on sys tables to
   return inconsistent results if the table contains unassigned shards

 - Fixed an issue that could cause a `SELECT` statement to cause a missleading
   error if the table was deleted concurrently.

 - Fixed an issue that could cause a `SELECT` statement on partitioned tables
   to cause an error if all partitions were deleted concurrently.

 - Fixed a race condition that could cause a `REFRESH TABLE` statement to fail
   on partitioned tables

 - Fixed a race condition that could cause `DROP TABLE IF EXISTS` statements to
   get stuck

 - Fixed a race condition that could cause queries with a high limit to fail
   due to a missing job context.

 - Fixed an issue that caused COPY TO `s3` statements to get stuck

 - Fixed an issue which results in _id queries not matching on
   partitioned and clustered tables without primary key columns.


2015/07/07 0.49.5
=================

 - Fixed issue that could lead to a NullPointerException
   caused by reporting row results to handler node before merge phase on handler
   was started

 - Fixed an issue that could cause concurrent queries on information_schema or
   sys tables to return inconsistent results

 - Fixed a rare race condition that could cause some queries with offset + limit higher
   than 1_000_000 to return too few rows

 - Fixed a possible race condition which leads to the execution of a
   non-distributed group by instead of a distributed one.

 - Fix: IS NULL predicate in query could return records that have already been
   marked for deletion

 - Fixed hash collide in fetch requests to avoid collision of node identifiers

2015/06/30 0.49.4
=================

 - Fixed issue that could lead to deadlock and therefore freezing of a node
   when there where too many queries asking for routing information in parallel.

 - Fix: Querying from information_schema while a table is created could
   cause an error

 - only log amazon s3 client stuff on level ``WARN``

 - log failing uri on COPY FROM

 - Fixed a NPE that was thrown if a SELECT statement contained `_score` in the
   result columns and an ORDER BY clause.

 - Fix: selecting error from sys.jobs_log caused a NPE in some cases

 - Fix: If a query would fail because a shard starts to relocate during
   query time, the query is retried now

 - Fix: load Crate plugins only once on node start

 - Fixed an issue that caused `sys.shards` queries to omit unassigned shards
   if the query was made against a node that has `node.data` set to false

 - Fix: Fixed a bug where some searchers were not properly closed

 - Fixed a race condition that could cause `DROP TABLE IF EXISTS` to fail if
   the table was concurrently dropped.

 - Fixed a race condition in `ALTER TABLE <partitioned_table>` that could occur
   if a `DELETE FROM <partitioned_table>` was invoked immediately before the
    `ALTER TABLE` statement.

2015/06/16 0.50.0
=================

NOTE: Upgrading from 0.49 or earlier versions requires a full cluster restart

 - Updated crate-admin to 0.13.2 which includes following changes:

    - improved layout for smaller screens

    - improved load graph on overview page

    - display load, cpu usage, disk i/o, process stats and shard information
      on node detail page

    - added columns with partition values on "Partitions" table
      on table detail view

 - Added ``probe_timestamp`` child expressions for os, process, heap, mem, and
   network columns to sys.nodes table

 - Added ``process['cpu']`` column to sys.nodes table

 - Added ``ALTER TABLE ONLY`` statement support.

 - Added unicast host discovery via SRV DNS records

 - Added the ``KILL ALL`` statement which can be used to cancel running
   operations

 - Added new table settings that can be set on ``CREATE TABLE``
   and changed/reset with ``ALTER TABLE``.

 - Added the ``concat`` scalar function and the concat operator ``||``.

 - Updated Elasticsearch to 1.5.2

 - Added the ``IF NOT EXISTS`` clause to the ``CREATE TABLE`` statement

2015/06/16 0.49.3
=================

 - Fixed an issue where ``_raw`` and ``_doc`` in primary key queries
   returned ``NULL``

 - Updated crash to 0.13.0 which includes following changes:

    - Added `dynamic` as output format option

    - Added ``--version`` to cli interface to show crash version and exit

    - Display command help in case the command is not used correctly

    - Display NULL values in mixed mode correctly

    - Fixed broken 'mixed' output style due to overriding import

    - Improved readability of sql syntax highlighting

    - Attempting to use unknown command now results in an error

 - Fix: return correct status for ``GET`` requests on ``/`` REST endpoint
   when cluster is starting up

 - Fixed a race condition that could cause a `CREATE TABLE` statement
   immediately after a `DROP TABLE` statement to fail.

 - Fixed a minor memory leak that occurred if custom schemas were deleted.

 - Fixed incorrect comparison in query by IP type

 - Fix: make sure sys.nodes expressions that utilize os/process/network/jvm
   services use the same stats probe per row; previously values derived from
   these services could have been from different probes

2015/06/03 0.49.2
=================

 - Fix: Accounted RAM wasn't freed after distributed grouping queries finished.

 - Added missing cluster settings for request circuit breaker
   and expose them via information schema

 - Made circuit breaker cluster settings settable on runtime
   and renamed the missleading prefix ``node`` to ``indices``.
   Note: This is a backward incompatibility change!

 - Fix: Row count was wrong when a `DELETE FROM` statement on a
   partitioned table hit exact 1 partition.

 - Updated crate-admin to 0.12.1 which includes following changes:

    - updated logo and icons

 - Fixed an error that could occur if the same ``delete from
   <partitoned_table>`` or ``drop table <partitioned_table>`` statement is
   executed concurrently

2015/05/21 0.49.1
=================

 - Fix: Do not throw exception on querying `sys.shards` while
   unassigned shards are changing

 - Fix: Removed unnecessary close context calls on CollectContext

 - Support to register a plugin with different settings to multiple crate
   instances using the same JVM


2015/05/20 0.48.6
=================

 - Optimized ``DELETE FROM <partitioned_table>``

 - Fix: Handle concurrently dropped partitions while collecting rows

 - Fix: Updated es/upstream to prevent errors caused by too many cluster
   state updates when dropping tables with a huge amount of partitions

 - Fixed an issue that caused a node stop to always take up at least 10 seconds

 - Further improved bulk partition creation which can occur during ``COPY
   FROM`` or INSERTS with multi-values into partitioned tables


2015/05/15 0.48.5
=================

 - Fix: Deleting a partitioned table could return a succesful query result
   even if some partitions were not deleted correctly

 - ``COPY FROM``: imports from S3 will now retry the import in case of a
   read timeout.

 - Select queries will now wait a bit longer before throwing an error in case
   the shards of a table aren't fully active.

 - Fix: In some cases a ``DROP TABLE`` statment does not delete all
   partitions. Now it's possible to repeat the statement in order
   to delete the orphaned partitions.

2015/05/07 0.49.0
=================

 - Fix: performing queries on a partitioned table could cause unnecessary
   ``execution rejected`` errors

 - Add plugin support

 - Removed the limitation that the WHERE clause couldn't contain certain
   expressions in `select count(*)` queries.

 - update crate-admin to 0.12.0 which contains the following changes:

    - display ``rest_url`` from sys.nodes table on node detail view

 - Expose REST URL of node in ``sys.nodes`` table

 - Increased speed and reduced amount of used memory on sorted queries

 - Ordering by `_score` must be defined explictly now even when using a
   `match` predicate.
   Note: This is a backward incompatibility change.

2015/05/07 0.48.4
=================

NOTE: Upgrading from 0.47 or earlier versions requires a full cluster restart

 - Fix: fix update queries on partitioned tables which are partitioned
   by part of the primary key

 - Fix: correctly display initial and reset settings in ``sys.cluster.settings``

 - add dynamic settings ``bulk.request_timeout`` and ``bulk.partition_creation_timeout``

 - make the ``sys.shards.size`` expression refresh all 10 seconds maximum

 - Fixed an issue that caused GROUP BY queries with multiple group keys, no
   order by and limit to hang.

 - Increased performance of ``hostname`` and ``id`` expression for ``sys.nodes`` table

2015/04/28 0.48.3
=================

 - Added possibility to create a single jar which contains all crate packages
   without dependencies

 - Include java client in crate distributions

 - Optimized queries that use ``IN`` or ``ANY``

 - Fix: Prevent COPY FROM or INSERT into a partitioned table to run into timeouts
   when creating many partitions at once

 - Fix: In some cases too few threads where started which could slow
   down queries

 - Fix: Option http.enabled=false caused UDC module to crash on startup

2015/04/21 0.48.2
2015/04/21 0.47.9
=================

 - Fixed an issue with GROUP BY queries on partitioned tables which could lead
   to wrong results

 - Optimized retry logic in bulk and COPY operations to handle
   and coordinate retries once per node

 - Fix: Add transparent retry logic to UPDATE execution

 - Using unsupported URI schema in COPY FROM statement now results in an error.

 - Fixed an issue with the LIKE predicate if used on a system table where it
   wouldn't match if the content contains newline characters

2015/04/21 0.47.9
=================

 - Fix: documented minimum required java version

2015/04/09 0.48.1
=================

 - Updated crate-admin to version 0.11.5 which contains following changes:

    - fix: concurrent ajax requests caused partition information
      in table detail view to be mixed up between tables

 - Added support for setting the default schema name in the SQLRequest class

 - Attempting to refresh a system table will now result in an error as system
   tables are read-only and don't need to be refreshed.

 - Fix: documented minimum required java version

 - Updated crash to version 0.11.5 which contains the following changes:

    - Fixed an issue with pasting multi-line statements from clipboard.

    - Added argcomplete support. If argcomplete is available bash argument
      completion will work if argcomplete is loaded.

 - Fix: COPY FROM is now skipping empty lines.

 - Fix: allow more than 1k elements in the IN query

 - allow to use ANY expression to compare primitive values against an array literal

 - Fix: ip type conversion did not allow NULL values

 - Fix: Grouping or sorting on a dynamically created column of a partitioned
   table could cause a NullPointerException

 - include jts and spatial4j in client jar in order to properly use
   the ``geopoint`` type

 - produce a crate-client with all dependencies included under the 'io.crate'
   package namespace in order to avoid conflicts

 - Fix: Filtering by `_score` wasn't recognized on group-by queries.

 - Fix: Do not shutdown the BulkShardProcessor while there are pending requests
   anymore

 - Fix: The ``format`` scalar function now always uses Locale.ENGLISH

 - Fixed misleading error message for trying to group by invalid data type.


2015/04/03 0.47.8
=================

 - Updated crash to version 0.11.5 which contains the following changes:

    - Fixed an issue with pasting multi-line statements from clipboard.

    - Added argcomplete support. If argcomplete is available bash argument
      completion will work if argcomplete is loaded.

 - Fix: COPY FROM is now skipping empty lines.

 - Fix: allow more than 1k elements in the IN query

 - allow to use ANY expression to compare primitive values against an array literal

 - Fix an issue while analyzing nested aggregations.

 - Fix: ip type conversion did not allow NULL values

 - Fix: Grouping or sorting on a dynamically created column of a partitioned
   table could cause a NullPointerException

 - include jts and spatial4j in client jar in order to properly use
   the ``geopoint`` type

 - produce a crate-client with all dependencies included under the 'io.crate'
   package namespace in order to avoid conflicts

 - Fix: select queries querying for the primary key on custom schemas did now
   return the correct results

 - Fixed an issue that caused ``where somefield in (null)`` to match all rows

 - Fix: Do not shutdown the BulkShardProcessor while there are pending requests
   anymore

 - Fix: The ``format`` scalar function now always uses Locale.ENGLISH

 - Fixed misleading error message for trying to group by invalid data type.

2015/03/17 0.48.0
=================

 - Fixed misleading error message for trying to group by invalid data type.

 - COPY FROM / COPY TO will now automatically create a quoted URI if only a
   path is given.

 - Updated crash to version 0.11.4 which contains following changes:

    - Fix: print stacktrace when crash is launched in verbose mode

    - Fix: query duration was rounded incorrectly to second precision

    - added ``--format`` command line option
      to support different response output formats such as
      ``tabular``, ``raw``, ``json``, ``csv`` and ``mixed``

    - BREAKING CHANGE
      the ``CONNECT <host>`` client command was changed to ``\connect <host>``
      see documentation for further details

    - alternative cli implementation using prompt_toolkit

    - added coloured printing when in interactive shell

 - Support `ON DUPLICATE KEY UPDATE` while inserting using a query.

 - Fix: Parameter substitution within subscript notation is not
   allowed anymore

 - Optimize OR queries which involve the cluster column.

 - Removed support for ``_version`` column in where clause if no
   primary key is specified in a query.

 - Added support for the ``IF EXISTS`` clause to ``DROP TABLE`` and
   ``DROP BLOB TABLE``

2015/03/13 0.47.7
=================

 - Fixed an issue where statements wouldn't work correctly if tables of a
   custom schema are involved

 - IN operator NULL literals bug fix

 - Fixed an ip validator bug that marked some valid ip's as invalid.

 - Fixed an issue with concurrent INSERT requests that could fail due to using
   a shared state internally.

2015/03/11 0.47.6
=================

 - Fixed an issue with custom schemas that could cause select statements on the
   ``information_schema.tables`` table to result in a NPE.

 - Fixed an issue that could cause the response to contain the wrong types
   (e.g. integer instead of long)

 - Fix: Sorting on a scalar with a column containing NULL values as
   argument no longer throws an NPE

 - Fix: group by on clustered by column on a partitioned table now produces
   correct results for groups spanning different partitions

 - Fixed an issue that caused errors to be swallowed and caused queries to not
   terminate correctly.

 - Fix: COPY FROM and INSERT from subquery into a partitioned table created
   separate tables with a wrong name instead of correct partitions

2015/03/09 0.47.5
=================

 - Upgrade Elasticsearch to v1.4.4

 - Updated crate-admin to version 0.11.4 which contains following changes:

    - fix: calculate health for each partition of a partitioned table
      based on the number of shards of that partition

 - Fix: number_of_shards and number_of_replicas are now correctly applied
   through the whole lifetime of a partitioned table and its partitions

 - Added columns ``number_of_shards`` and ``number_of_replicas`` to
   table ``information_schema.table_partitions``

2015/02/18 0.47.4
=================

 - Fixed a race condition where some statements would break because of
   using a shared state internally.

 - Made zero length string routing consistent and route by the actual
   hash of an empty string instead of handling it as null. CAUTION: If
   you are using emtpy strings as routing values, affected records
   need to be re-inserted.

2015/02/17 0.47.3
=================

 - Fix: Inserting from a query which contains aggregation functions failed in some
   cases

2015/02/13 0.47.2
=================

 - Fix regression introduced in ``0.47.0``: It is now again possible to refer
   to columns using the fully qualified name including table name or alias in
   the WHERE clause of an Update statement.

 - Added a new option ``overwrite_duplicates`` to COPY FROM. This option can be
   used to make COPY FROM behave the same as it did in versions prior to
   ``0.47.0``

 - Fix: Sorting on a function that returns a boolean value could cause an error.

2015/02/10 0.47.1
=================

 - Improved performance of queries that use generic scalar functions (like
   equals comparison on arrays)

 - COPY FROM now skips rows with the same primary key instead of overriding them

2015/02/06 0.47.0
=================

 - Added support for array comparisons using the equals ``=`` operator.

 - Support `INSERT ... ON DUPLICATE KEY UPDATE` statement

 - Added case-insensitive regex operator ~*

 - Support PCRE compatible regular expressions

 - updated crate-admin version to 0.11.3 which contains following changes:

    - fixed bug that showed custom schemas in the table list
      as often as the amount of tables in that custom schema

 - Added support for the ``std_dev``, ``variance`` and ``geometric_mean``
   aggregation functions

 - Added support for the CURRENT_TIMESTAMP expression

 - Throw an error while using unknown column references in ``SELECT``
   statements while parent's policy is not of type ``ignored``

 - Added support for the datetime function ``extract (field from source)``

 - Support column referencing in ``Update`` statement assignment
   expression

 - Removed undocumented feature: It is no longer possible to use sys
   expressions in any context.

 - don’t allow full qualified names in UPDATE assignments, INSERT and
   INSERT INTO

 - The ``sys.operations`` table has now a ``_nodes`` system column
   which exposes information about the node the operation runs on.

2015/02/06 0.46.5
=================

 - Upgrade Elasticsearch to v1.4.2

 - Fix: Hard wire utf-8 encoding in init scripts, so unicode filenames work

 - Fix: COPY FROM PARTITION failed if the source contained a ``partitioned by`` column

 - Fix: ALTER TABLE could break existing tables under some conditions

 - Fix: Improved value validation for nested primary key and clustered by
   columns in INSERT statements.

 - Fix: IP column validation is now done in analysis

2015/02/06 0.46.5
2015/02/06 0.45.9
=================

 - Fix: ``Insert-By-Query`` using objects did not work through wrong
   comparison of data types.

2015/02/03 0.46.4
=================

 - Fix: group by queries with a having clause without the group key
   being selected failed

 - Fix: Force UTF8 encoding in file reading collector to avoid JVM's default encoding settings

 - Fix: Filtering on a routing column sometimes didn't work if the value was an
   empty string

 - Fix: Bulk inserts with mixed but compatible types (e.g. int and long) failed

 - Fix: removed unsupported syntax from ``Update`` synposis

2015/02/03 0.45.8
=================

 - Fix: Force UTF8 encoding in file reading collector to avoid JVM's default encoding settings

 - Fix: Fixed global count using non-existing column in the where clause

 - Fix: Bulk inserts with mixed but compatible types (e.g. int and long) failed

 - Fix: removed unsupported syntax from ``Update`` synposis

2015/01/19 0.46.3
2015/01/19 0.45.7
=================

 - SELECT statements that involved tables from the information_schema schema or
   from the sys schema could fail if they contained columns in the ORDER BY
   clause but didn't contain these columns in the result column list.

 - Fix: Return zero row count instead of an exception if update by id
   doesn't match any document

 - Fixed an issue in the ``sys.shards`` table which caused an
   exception when the select limit was lower then the number of
   matching shards on a node.

 - Fixed type conversion of bulk parameters

 - Updated crate-admin to version 0.11.2 which includes following changes:

    - removed usage of sys expressions in wrong context

    - fixed a template rendering issue in cluster view in Safari

    - de-register watches to decrease DOM updates and improve
      performance in cluster view

    - fixed title of `tables` view if no tables exists or connection is down

2015/01/14 0.46.2
=================

 - improved string lookup performance for group queries and global aggregates

 - Optimized memory estimates for min()/max() aggregates for the CircuitBreaker

2015/01/14 0.46.2
2015/01/19 0.45.7
=================

 - fix: throw correct exception if `_version` is misused in WHERE clause

 - improved speed of Alter table settings in partitioned tables

 - Restricted allowed characters in column names

2014/12/22 0.46.1
=================

 - Fixed broken COPY FROM/TO S3 caused by missing depencenies

 - Updated crate-admin to 0.11.1 which includes following changes:

   - Fixed title of `tables` view if no tables exists or connection is
     down

 - Fixed an issue that could cause bulk inserts to get stalled.

2014/12/17 0.46.0
=================

 - Add support for user-defined schemas.

 - Changed output of column names in error messages to subscript notation,
   so the correct notation to address columns in sql is reflected

 - implemented table ``information_schema.schemata`` with column ``schema_name``
   listing all available schemas

 - Array types are now fully supported in dynamic schemas. Note that
   Crate performs an internal migration, therefore downgrading to an
   older version is not supported

 - Updated Elasticsearch to 1.4.1

 - Improve performance of regex functions by actually
   pre-compiling their used patterns (if given as literal)

 - Add sql query breaker which will terminate a query execution if too
   much memory will be consumed.

 - Use flake ids for interal id generation

 - Added Support for Column Policies, which can be used to define if a
   table enforces its defined schema or if it's allowed to store
   additional columns which are not defined in the schema.

 - Throw an error while using unknown root columns on SELECT

2014/12/16 0.45.6
=================

 - Fix: Nested Columns of ignored objects where exported
   as `null` values when using COPY TO

 - Fix: Inserting arrays with a null value at first position
   failed

 - Fix: Using CLUSTERED BY Column in PARTITIONED BY clause threw
   misleading exception

 - Fix: Added comments to the logging.yml config file and reduced the
   amount of log entries by changing the loglevel of some log messages

 - Fix: correctly plan group by queries using HAVING clause

 - Fix: Improve Error messages on COPY TO and COPY FROM

 - Fix: The clustered-by columns could be updated if they were nested.

 - Fix: Fixed an edge case where group by queries on system tables or
   grouping on primary key or routing column and using limit or
   selecting the same aggregation twice did not execute correctly.

 - Fixed possible race condition that could cause the `LIMIT` to not
   be applied correctly.

 - improved speed of bulk inserts in partitioned tables to avoid request
   timeouts

 - Fixed NPE which could occur on a shard failure while collecting
   distributed (e.g. group by query)

 - Fix: correctly validate array values in INSERT and UPDATE
   statements

 - Fix: NULL element in array in first element of bulk insert threw
   NPE

 - Fix: array columns that were nested inside multiple objects had
   incorrect data type (type of their elements instead of array type)

 - Fix: adding column on partitioned table without partitions threw
   exception although column was added to schema


2014/11/18 0.45.5
=================

 - Updated crate-admin to version 0.10.2 which includes following changes:

    - fixed issue that caused clunky scrolling with trackpad
       in Safari that mainly occured when having a narrow browser width

    - made console placeholder text darker so you can distinguish better
      between placeholder text and actually written statement

    - fixed 'Execute Query' button in console view

 - Fix: correctly handle empty values and values containing commas
   for clustered by columns in the where clause. e.g: ``where _id=''``

 - Fix: Forbid using ``alter table add column`` on a single partition.

 - Fix: do not consider rootfs in ``sys.nodes.fs['data']['dev']``


2014/11/12 0.45.4
=================

 - Number of shards for new partitions can now be changed by using the
   ``ALTER TABLE`` statement.

 - Fixed a rare race condition that could cause the ``having`` clause to filter
   incorrectly.

 - Fix: ``alter table add column`` didn't work correctly on partitioned tables.

 - Added cast function for timestamp type.

2014/11/10 0.45.3
=================

 - Fix: Selecting nested columns didn't work correctly if the query got
   optimized to do a "primary key lookup"

 - Fix performance regression on ``SELECT`` queries which use the ``IN``
   operator in the ``WHERE`` clause.

 - Updated crate-admin to 0.10.0 which includes following changes:

    - added hint to console: press shift+enter to submit query

    - fix: UI showed partitions from wrong table after switching between tables
      this could also lead to 'red' partitions if the newly selected table also had partitions

    - added syntax highlighting to sql console

 - Updated Elasticsearch to 1.3.5

 - Fix: Ensure that adding new columns inside nested objects using
   ``ALTER TABLE`` works as expected.

 - ``SELECT COUNT(*)`` statements on partitioned tables didn't apply partition
   filters if present in the WHERE clause.

2014/10/31 0.45.2
=================

 - functions that are used with analyzed columns as arguments in the WHERE
   clause of a SELECT statement no longer throw an error but behave just the
   same as if used inside the result column list

 - corrected alias handling

 - improved error messages for ``regexp_matches`` and ``regexp_replace scalar``
   function when arguments are of wrong type

 - fix: ``regexp_matches`` with column ident as input raised exception
   when used in IS (NOT) NULL predicate

 - added missing _id collector expression so _id can also be used in
   'insert from query' statements

 - added support for scalar functions within the select column list and ORDER
   BY clause for SELECT statements that get optimized to do
   primary-key-lookups

 - fix: Bulk inserts into partitioned tables resulted in inserting
   all records into the partition of the last record

 - updated crash to 0.10.3 which includes the following changes

    - require crate-python 0.12.3 to get support for the iterator protocol
      on cursor

    - fixed an error that caused crash to crash on non posix platforms

 - updated es/upstream to prevent spurious deletion of dangling indices

 - fix: If an insert from query statement involved partitioned columns of a
   partitioned table in the query part those partitioned columns weren't
   resolved correctly and resulted in null values

 - fix: raise an error if an array is inserted into an objects
   field which is not of type array

 - fix: all group by queries with the primary key(s) or routing column
   as group key(s) are executed correctly

2014/10/21 0.44.8
=================

 - Fix: all group by queries with the primary key(s) or routing column
   as group key(s) are executed correctly

2014/10/21 0.45.1
2014/10/21 0.44.7
=================

 - Fix: non-matching global aggregates on partitioned tables failed

 - Fix: handle boost factor in simple match predicate correctly

 - Reduced memory consumption of COPY FROM statements that involve partitioned
   tables.

 - Reduced memory consumption during execution of regular SELECT statements

 - Fix: Requests that resulted in a shard failure could cause a NPE during the
   generation of the error message.


2014/10/16 0.45.0
=================

 - Support explicit type conversion using cast expression

 - All scalar functions can now be used in the WHERE clause in SELECT
   statements and they may be nested without limitations. In addition it is now
   possible to compare one scalar function to another.

 - Added support to compare one column with another in the WHERE clause for
   SELECT statements.

 - Implemented regular expression scalar functions and query operator

 - Support for accessing items in an array. Please refer to the
   ``Crate SQL -> Querying Crate -> Retrieving Data -> Object Arrays``
   documentation section for details and limitations.

 - Renamed NullType to UndefinedType in order to avoid confusion
   about its usage

2014/10/14 0.44.6
=================

 - fix: pre-calculated count is now also used on partitioned tables

2014/10/10 0.44.5
=================

 - fix: trying to copy out of a non-existent partition now throws an
   appropriate exception

 - fix: some shard errors were not being raised and so the shard failed silently
   when some kind of errors, like an Out of memory error occured.

 - upgraded ES upstream to v1.3.4

2014/10/04 0.44.4
2014/10/04 0.43.5
2014/10/04 0.42.5
=================

 - Fix: The ``>`` and ``<`` operators didn't behave correctly in some cases for
   string values if used on a system table or if both operands were literals.

 - fix: updating a partitioned table with a WHERE clause querying for a
   non existent column of for a non existent partition value led to
   updating all partitions of the queried table

2014/10/02 0.44.3
2014/10/02 0.43.4
2014/10/02 0.42.4
=================

 - fix: deleting on a partitioned table with a WHERE clause querying for a
   non existent column or for a non existent partition value led to
   deletion of all partitions of the queried table

 - Fix: Copy from using the PARTITION clause imported into a ``null`` partition
   instead of using the partition clause.

2014/09/26 0.44.2
2014/09/26 0.43.3
=================

 - Track correct transient cluster setting for routing allocation
   when performing graceful shutdown

 - Improved error handling when trying to import data using COPY FROM
   where primary key is a NULL value

2014/09/23 0.44.1
2014/09/23 0.43.2
=================

 - BREAKING IF UPGRADING FROM 0.42:
    The sub-folder in which blobs are saved by default has accidentily
    been changed with 0.42, this change is now being reverted. For
    users upgrading from 0.42 this means that they have to move
    the directories ``tmp`` + ``var`` from the shard folders to
    subfolder named ``blobs``. Users who upgrade from a version priour
    to 0.42 can upgrade without worries.


2014/09/22 0.44.0
=================

 - Support usage of all scalar functions in the ORDER BY clause without
   limitations

 - Using a column name that doesn't exist in the ORDER BY clause will throw an
   error instead of silently ignoring it

 - Implemented the graceful-stop command to enable zero downtime upgrades

 - Exposed a lot of cluster settings, most of them are changeable at
   runtime by using ``SET/RESET``

 - BREAKING:
   Existing cluster settings have been renamed:
     - collect_stats to stats.enabled
     - jobs_log_size to stats.jobs_log_size
     - operations_log_size to stats.operations_log_size
   Please refer to the ``Configuration`` section in the documentation
   for more details

2014/09/22 0.43.1
=================

 - fix: change the type of ``information_schema.table_constraints.constraint_name``
   to array of string

 - fix: properly return elements of object arrays in system tables
   like sys.nodes.fs['data']['path']

 - fix: filtering on system column ``_score`` is only valid by using a
   ``>=`` comparison, throw error if used otherwise

2014/09/11 0.43.0
=================

 - ``RESET`` statement does not support the persistence keyword
   anymore

 - added having support for global aggregate and group by

2014/09/11 0.42.3
=================

 - fixed bulk arguments validation: it was too strict and failed if the
   arguments contains null values.

2014/09/08 0.42.2
=================

 - fix: ``RESET`` statement must prefer configuration file setting values
   over default values.

 - fix: return column types if requested even on responses with no results

 - updated lucene version in client to 4.9.0

2014/09/05 0.42.1
=================

 - made parser for object and array literals stricter to allow only literals

 - updated crash to 0.10.0 which includes following changes

   - crate server version information is now also included in the connect-output

   - improved formatting of field lists in docs
     by adding docutils configuration to docs build process

   - updated crate-python to version 0.11.1 to get a more reliable failover
     mechanism if a host goes down.

 BREAKING:

 - Logging configuration files must now start with ``logging.`` and end with
   either ``.yml`` or ``.yaml`` to be read. The previous behaviour was to read
   all files starting with ``logging.`` which incorrectly also read ``.rpmnew``
   or ``.bak`` files.


2014/08/25 0.42.0
=================

 - improved the performance of GROUP BY queries that use the clustered by
   column or the primary key as GROUP BY key

 - upgraded ES upstream to v1.3.2

 - implemented ``bulkSql`` methods for crate java client

 - added support for update, delete and insert bulk operations

 - updated crate-admin to 0.9.3 which includes following changes:

    - send cookies with cross-origin requests

 - match predicate can now be used on multiple columns
   and supports several options for a more powerful fulltext search

 - improve readability of documentation

 - blobs can now be stored on different paths than normal tables,
   custom path can be set global and per blob table

2014/08/22 0.41.4
=================

 - COPY FROM now always assumes that the files it reads are encoded using UTF-8
   instead of relying on the system default.

 - fix: The table schema of partitioned table is now correctly invalidated if a
   single partition has been modified using the ALTER TABLE statement with the
   PARTITION clause.

 - fix: correctly serialize sys expressions of type object

 - fix: using the is not null predicate on a non-existing or ignored column
   did throw an exception



2014/08/18 0.41.3
=================

 - the ``fs['disks']`` expression will now only list block devices

 - the number of shards in the ``CLUSTERED INTO`` clause of the ``CREATE
   TABLE`` statement can now be specified using parameter substitution.

 - fixed error handling on certain kind of failures that can occur on select
   queries

 - updated crate-admin to 0.9.2 which includes following changes

    - fix: display number of records and started shards correctly
      if table and blob table have the same name

 - querying the node stats didn't work correctly if one of the paths couldn't
   be read due to permission issues. Now Permission denied errors emit a
   warning and disk stats are calculation continues.

2014/08/12 0.41.2
=================

 - fix: ``match`` is now more strict and no longer searches nested objects if the searched column doesn't exist
   and it is not allowed on non existing columns anymore

 - improved readability of documentation

 - improved formatting of field lists in docs
   by adding docutils configuration to docs build process

 - improved documentation codeblock formatting

 - fix: it is now allowed to specify a custom fulltext analyzer
   in a nested column definition

 - remove documentation about information_schema.indices (which is not
   implemented).

 - improved error handling if illegal arguments are used in COPY FROM or COPY
   TO statements.

 - improved COPY TO documentation.

2014/08/01 0.41.1
=================

 - fix: arithmetic functions correctly execute on all numeric types

 - fix: throw an error on lossy conversion of numeric types

 - fix: always return rowcount, even when it's not ascertenaible.
   In this cases -1 is returned.

 - fix: composite index must only work with `string` typed columns,
   also defining it using the `plain` method must result in `keyword` analyzer

 - fix: using non-equality comparison of a partition column within
   `AND` expressions results in empty row set

2014/07/29 0.41.0
=================

 - implemented the following scalar functions:
      abs(x),
      ceil(x),
      floor(x),
      ln(x),
      log(x),
      log(b,x),
      random(),
      round(x),
      sqrt(x)

2014/08/01 0.40.4
=================

- fix: always return rowcount, even when it's not ascertenaible.
  In this cases -1 is returned.

- fix: composite index must only work with `string` typed columns,
  also defining it using the `plain` method must result in `keyword` analyzer

- fix: using non-equality comparison of a partition column within
  `AND` expressions results in empty row set

2014/07/28 0.40.3
=================

 - fix: ORDER BY using non-indexed (index off) column do fail silently

 - fix: grouping or global aggregation using non-indexed (index off)
   or analyzed (fulltext) column throws misleading exception

 - added documentation for match function

 - replaced SQLAction python doctest with java integration test

 - updated incorrect options in crate usage information

 - updated crate-admin to 0.9.1 which includes following changes

    - fix: do not append limit to insert by query statement

2014/07/21 0.40.2
=================

 - updated crash to 0.9.14 which includes the following changes

    - fix: correctly apply ``-v`` switch to increase verbosity

    - update crate-python to version 0.10.6

 - made ``bin/crash`` posix compatible

 - improved substr function to not copy underlying byte array

 - retry fetching objects from s3 if a connection error occures

2014/07/15 0.40.1
=================

 - fix: expose close() in crate client

 - fix: make timeout of ``insert by query`` request configurable
   as ``insert_by_query.request_timeout``

 - fix: there was a possible race condition that could occur during blob
   relocation.

 - fix: fetch all keys from buckets with more than 1000 files
   for import from S3

 - fix: prevent early GC of AmazonS3Client which caused
   premature end of response body in ``COPY FROM``

2014/07/11 0.40.0
=================

 - ``COPY FROM`` / ``COPY TO``: allow importing from and exporting
   to s3 without access credentials (only to / from public resources)

 - fix: improved the clean up of distributed query execution if some part of
   the operations couldn't be executed due to resource exhaustions

 - performance improved of scalar function 'substr'

 - updated crate-admin to 0.9.0 which contains following changes

    - use new sys.nodes.fs expression in order to
      calculate disk utilization of data disks correctly

 - changed sys.nodes.fs column to contain stats about all mounted disks,
   total disk stats and node data path locations

 - changed output of colum names in information schema to subscript notation

 - implemented sys.nodes.process expressions

 - implemented sys.nodes.os expressions to show uptime and cpu utilization

 - implemented sys.nodes.network expressions to show tcp network stats

 - updated elasticsearch to 1.2.2

 - added insert by query support

 - added ``distance`` and ``within`` geo scalar functions

 - implemented ``sys.cluster.master_node`` expression.

 - it is now possible to use `is null` on columns of any data type.

 - added support for ``alter table add column``

2014/07/08 0.39.3
=================

 - fix: ``COPY FROM`` could result in a deadlock on high concurrency

 - fix: apply proper quoting to crash arguments when used as ``bin/crash``

2014/07/06 0.39.2
=================

 - fix: concurrent issues at ``COPY FROM`` retry logic

2014/07/03 0.39.1
=================

 - fix: ``COPY FROM`` will now throttle and retry if there are failures due to
   full thread pool queues
   The ``concurrency`` option has also been removed.

 - fix: improve input validation for objects and object arrays

 - fix: avoid failed execution of ``DROP TABLE`` on partitioned table
   to leave unrecoverable inconsistent state behind

 - fix: columns referenced by positional arguments in a ``ORDER BY`` or
   ``GROUP BY`` clause are now validated for their data types

 - fix: revised incorrect documentation about geo_point definition

 - fix: if partitioned tables exists, information_schema queries did
   not work properly

 - updated crash to 0.9.13 which includes the following changes

    - fix: avoid stripping arbitrative whitespaces from
      commands passed via stdin

 - fix: with a very large number of shards, queries on ``sys.shards`` could
   overflow the threadpools

 - updated crate-admin to 0.8.4 with includes following changes

    - changed font in console for better readability

    - fixed ui glitch that caused right column content to be cut off

    - fix: include initializing shards in calculation for underreplicated shards

 - fix: creating a table with arrays as primary key now correctly results in an
   error as it is not supported

2014/06/16 0.39.0
=================

 - upgraded elasticsearch to 1.1.2

 - implemented `sys.shards.orphan_partition` expression

 - updated crate-admin to 0.8.3

    - display developer news notifications

 - added ``substr`` scalar function

 - added the ``sys.jobs``, ``sys.jobs_log``, ``sys.operations`` and
   ``sys.operations_log`` tables

 - implemented ``SET`` and ``RESET`` statements

 - implemented ``sys.nodes.thread_pools`` expressions

 - implemented ``LIKE`` and ``NOT LIKE`` operators on string arrays and sets.

 - improved error messages

 - added arithmetic operators

 - implemented partition support for ``copy`` statements

 - implemented alter table to operate on single partitions

 - implemented object and array literals

 - changed refresh table for partitioned tables.

 - the ordering of null values can now be influenced using the ``NULLS { FIRST
   | LAST }`` keywords.

2014/06/16 0.38.6
=================

 - fixed an NPE that could occur when retrieving shard stats from a blob table

 - updated crate-admin to 0.7.4 which includes following changes:

    - fixed ui glitch that caused right column content to be cut off

    - fix: make table list and node list available in mobile view

    - fix: round percentage of available and underreplicated data correctly

    - make table that displays table partitions horizontally scrollable

2014/06/14 0.38.5
=================

 - fix: validation for ``array`` and ``object`` typed partition
   columns were broken

 - updated crash to 0.9.12 which includes following changes:

    - fixed output encoding when LC_CTYPE locale is not UTF-8

 - fix: queries for ``_version=0`` have no match and do not execute as
   ``_version`` can never be ``0``

2014/06/07 0.38.4
=================

 - fix: querying ``sys.shards`` could result in an exception if one of the
   shards was initializing

 - fix: where is null / is not null didn't work correctly on system tables

 - fix: log error instead of recurring exception throwing if shard of
   orphaned partition is started

 - updated crate-admin to 0.7.4 which includes following changes:

    - fix: make table list and node list available in mobile view

 - fix: in some cases ``format`` function returned bytes instead of string

 - fix: columns of type "ip" are now returned in the string representation
   instead of the internal long format when returned as part of a group by
   query.

2014/06/03 0.38.3
=================

 - updated crash to 0.9.10 which includes following changes:

    - NULL values are handled correctly

    - fix: increased precision of float formatting

    - crash renders complex types as json instead of their python representation

    - return -1 for rowcount if rowcount is unknown

 - fix: `date_trunc` will now accept literals of type long or string and
   attempt to convert them to a timestamp.

 - fix: ``count(*)`` on a table which has unavailable records will now result
   in a failure instead of returning only the available records

 - fix: insert statements with a large number of multi-values didn't insert all
   rows if the internal threading queues run full.

 - fix: display nested columns correctly in ``information_schema.table_partitions.values``

 - fix: id generation on import via `COPY FROM` were wrong if multiple
   primary key constraints and clustered-by were used.
   WARNING: records must be re-imported otherwise queries with filter
   on primary key columns will not match any record

2014/05/23 0.38.2
=================

 - updated crash to 0.9.7 which includes following changes:

    - return exit code 1 if the execution of a single command fails

2014/05/23 0.38.1
2014/05/23 0.37.5
=================

 - fix: fixed schema update issues with partitioned tables.

 - fix: DELETE on an empty partitioned table caused an error.

 - fix: ORDER BY/GROUP BY clauses with ordinal numbers now work correctly

 - fixed the glob pattern matching for S3 imports using the ``COPY FROM``
   statement.

 - fix: creating tables with nested primary keys and nested partitioned by columns
   did not work correctly

 - fix: insert and update partitioned tables with nested partition columns did not work

 - fix: dynamic columns of partitioned tables did not show up in ``information_schema.columns``
   when only one partition existed

2014/05/20 0.37.4
=================

 - updated crash to 0.9.6 which includes the following changes:

    - crash exited immediately with an exception if a query result
      contained an object or array

    - the size of the history file is now limited to 10000 lines

    - stdin is no longer read completely into memory

2014/05/19 0.38.0
=================

 - fix: default settings of crate client have been applied incorrect

 - added support for select statements on blob tables. This can be used to list
   the blobs that are stored inside a blob table.

 - removed developer and installation instructions from documentation

 - added the ``geo_point`` type.

 - the data type of every responded column can now be returned via
   REST using the optional parameter ``types`` or via transport by
   defining it at the ``SQLRequest`` object

 - improved building of client jar, also added maven upload task

2014/05/19 0.37.3
=================

 - updated crate-admin version to 0.7.3 including following changes:

    - fix: prevent selected node/table item from being out of viewport

 - document data aggregation behaviour on fields in columns with disabled
   indexing.

 - updated crash to 0.9.5 which includes the following change:

   - SQL statements passed in via the --command switch take precedence over stdin

 - the ``CREATE TABLE`` statement now doesn't silently ignore analyzer
   specifications on column types that don't support them.

2014/05/16 0.37.2
=================

 - fix: allow aliased subscript expressions

 - fix: allow single character blob table names

 - fix: ``count(*)`` on empty partitioned tables threw a TableUnknownException.

 - S3 authentication using ENV variables now also defaults to HTTP in order to
   avoid certificate issues.

 - updated crash version to 0.9.4 including following changes:

    - updated crate-python to 0.10.0

    - fix: crash exited immediately with an exception if a query result
      contained two or more equal field names

    - fix: if crash was started while one of the specified hosts was
      not available crash exited immediately

 - updated crate-admin version to 0.7.2 including following changes:

    - improved handling of error responses from server

2014/05/09 0.37.1
2014/05/09 0.36.5
=================

 - fix: raise an error if same column is defined more than once on
   table creation

2014/05/08 0.37.0
=================

 - documentation is no longer included in the distribution but available online only

 - refactored exceptions, ``SQLActionException`` is now the only one thrown
   via transport + REST

 - forbid querying arrays inside object arrays in where clause or as select column

 - increase debug output to show SQLRequests and errors in server log

 - aliases for tables in SELECT, UPDATE, and DELETE clauses are now supported.

 - renamed ``ANY`` aggregation function to ``ARBITRARY``

 - implemented ``ANY`` / ``SOME`` operator for array containment checks

2014/05/12 0.36.6
=================

 - improved error reporting for COPY operations using Amazon S3

2014/05/09 0.36.5
=================

 - fix: raise an error if same column is defined more than once on
   table creation

2014/05/07 0.36.4
=================

 - fix: forbid order by on compound types (array, set, object)

 - fix: transport serialization of set columns did not work correctly

2014/05/05 0.36.3
=================

 - fix: date range queries (``WHERE ts > '1970-02-01'``) were misinterpreted

2014/04/29 0.36.2
=================

 - updated crate-admin to 0.6.3 which includes the following fixes:

    - fix: make sure twitter import stops when user navigates away from
      tutorial view

    - fix: allow horizontal scrolling in console result table

    - fixed broken redirect after twitter authentication in 'get started'
      section

 - feature: implemented version in sys.nodes

 - fix: the version check for update statements that contain a ``_version``
   column in the where clause is now atomic.

 - minor documentation improvements

2014/04/24 0.36.1
=================

 - fix: throw appropriate exceptions when using unsupported expressions

2014/04/22 0.36.0
=================

 - feature: updated crash to 0.9.0 which now uses urllib3 instead of requests.

 - fix: updated crate-admin to 0.6.1 to prevent display glitches

 - feature: implemented partitioned tables

 - feature: added table 'information_schema.table_partitions'

 - feature: added column 'partitioned_by' to table 'information_schema.tables'

 - feature: added s3 support for COPY TO

 - feature: It is now possible to specify the columns that should be exported
   when using the COPY TO statement.

 - feature: added the ``DIRECTORY`` keyword to COPY TO

 - feature: added sys.nodes.heap expression

 - upgraded to ES 1.1.0

 - fix: elect one shard as primary shard for unassigned shards

 - fix: Items of string arrays now get transformed to strings

 - fix: updated crate-theme to 0.0.15 to fix documentation link in the admin-ui

2014/04/30 0.35.8
=================

 - fix: upgrade crate-admin to hotfix release 0.5.3

 - fix: the version check for update statements that contain a ``_version``
   column in the where clause is now atomic.

2014/04/24 0.35.7
=================

 - fix: throw appropriate exceptions when using unsupported expressions

2014/04/22 0.35.6
=================

 - fix: queries like "select sys.nodes.name, * from sys.shards" now also work
   correctly if there are unassigned shards

2014/04/14 0.35.5
=================

 - updated crate-admin to hotfix release 0.5.2

 - fix: it is not possible anymore to create a (blob) table with number of
   shards smaller than 1.

 - fix: all unassigned shards are now considered in ``sys.shards`` table

 - updated crate-theme to 0.0.15 to fix documentation link in the admin-ui

2014/04/10 0.35.4
=================

 - fixed a serialization error that occured if COUNT(distinct <col>) was used
   on a column of type LONG

 - fixed a NPE that could occur using COPY FROM

2014/04/08 0.35.3
=================

 - downgraded crate-theme to fix a doc rendering bug

2014/04/08 0.35.2
=================

 - updated crate-admin to 0.5.1

2014/04/08 0.35.1
=================

 - updated crate-admin to 0.5.0

 - fixed an issue where sometimes ``COPY TO`` ignores settings.

 - fixed a NullPointerException that could occur using the COPY TO statement if
   the target directory doesn't exist.

2014/04/07 0.35.0
=================

 - updated crate-admin to 0.4.3

 - tables can now be exported using the COPY TO statement.

 - S3 support added to COPY FROM statement

 - various new options in COPY statements

 - COPY FROM now supports globs and expressions in uris.

 - feature: added support to set 'refresh_interval' for tables

 - fix: AND operator normalization was wrong if one of the arguments
   is a boolean

2014/04/04 0.34.1
=================

 - fix: do not display internal blob table names in ``sys.shards.table_name``

 - fix: detect nested primary keys and clustered by values in insert analysis

 - fix: correctly update ``ping_counters`` for udc

 - update crash_standalone to 0.8.3

2014/03/26 0.34.0
=================

 - feature: added table information_schema.routines

 - feature: support global DISTINCT select statements

 - upgrade bundled crash to 0.8.1

 - fix: allow ``PRIMARY KEY`` constraint and compound index definition
   to appear anywhere in the table element list

 - fix: proper boolean column handling in where clause of select statements

 - fix: first parts of qualified name in ORDER BY were ignored

 - fix: unassigned shards must return NULL by default for the `primary` column

 - fix: error messages will no longer show the 'return type' of a function and
   aggregation

 - fix: prevent select or filter of system columns if query has not a
   group-by or global aggregate clause and used table is not a system table

 - fix: fixed global 'group by' analysis. analyzer now returns an improved
   error message if a statement contains aggregates and column references but
   missing the corresponding group by expression

 - fix: table names may not contain '.'

2014/03/24 0.33.0
=================

 - upgraded crate-python and crash to 0.8.0

 - optimize sets of compound primary keys in where clause to multi gets

 - fixed schema creation for nested objects.

 - added the ``format`` scalar function.

 - support primary key constraint with multiple columns

 - support clustered-by key without primary key constraint

2014/03/20 0.32.3
=================

 - fix: windows compatibilty (sys.nodes.load, crash_standalone)

 - fixed a threading issue that could occur when executing ``COPY`` statements.

 - fix: prevent updating of system, primary key and clustered-by column

2014/03/17 0.32.2
=================

 - bugfix: the rowcount returned from `copy <table> from <path>` was sometimes
   wrong.

 - log the current version of Crate Data

2014/03/17 0.32.1
=================

 - updated crate-admin to 0.3.0 - to no longer depend on elasticsearch REST API

2014/03/17 0.32.0
=================

 - upgraded included crash to 0.7.1

 - introduced setting ``es.api.enabled`` (Boolean) to enable
   the elasticsearch HTTP REST API

 - elasticsearch HTTP REST API now disabled by default

2014/03/13 0.31.0
=================

 - updated crate-admin to 0.2.9

 - optimized global count aggregations.

 - now downloading current ``crash.zip.py`` during build

 - added the sql `ALTER [BLOB] TABLE` clause.

2014/03/12 0.30.0
=================

 - streamlined ``CREATE ANALYZER`` syntax to only use the ``WITH`` keyword
   on properties

 - implemented refresh sql command ``REFRESH TABLE <tableName>`` to make previous
   changes to this table available for further commands.

2014/03/12 0.29.0
=================

 - update crate-admin to 0.2.6

 - The `number_of_replicas` column in `information_schema.tables` is now a
   string instead of a number as it might also return ranges like '0-all'.

 - blobs can now only be used on a ``BLOB TABLE`` created using sql,
   also the REST endpoint changed from ``/<tableName>/_blobs`` to ``/_blobs/<tableName>``

 - updated fulltext utilities documentation

 - Fixed exceptions on ``sys.shards.num_docs`` when shard is not started yet.
   Return ``null`` in this case.

2014/03/10 0.28.0
=================

 - fix null ordering in non 'group by' queries.

 - added column ``schema_name`` to ``sys.shards`` table

 - implemented blob shards on ``sys.shards`` table

 - updated crate-admin to 0.2.4

 - fix bug with empty lists or lists only containing ``null`` as parameter

 - delay Parameter resolving until expected type is known.

 - BREAKING CHANGE: replaced the `REPLICAS` table setting with the table
   property `number_of_replicas`.

2014/03/04 0.27.0
=================

 - date_trunc: implemented optional parameter 'timezone'.

 - corrected sys.nodes.mem percentages

 - bin/crate will now start crate in the foreground by default.
   In order to start it in the background add `-d`

 - add support for implicit type casts on set literals.

2014/03/04 0.26.0
=================

 - removed obsolete akiban sql parser and related code

2014/03/04 0.25.0
=================

 - updated crate-admin to 0.2.2

 - added ``information_schema.table_constraints``

 - added support for array types.

2014/03/04 0.24.0
=================

 - updated crate-admin to 0.1.2

 - upgraded elasticsearch to 1.0.1

 - added scalar function date_trunc

 - fixed several issues with certain locales

 - new parser is now used for create table and drop table

2014/02/26 0.23.2
=================

 - fixed a synchronization issue that could cause invalid results

 - cleaned up exception messages to be more useful for the users.

 - fixed a bug that caused an exception in case the request was "primary key
   optimized" and the cluster state wasn't yet fully synchronized.

 - added missing state description in docs/sql/stats

 - closed tables are now longer shown in the information schema.

 - fixed various random test failures that were caused by a flaky test setup.

2014/02/25 0.23.1
=================

 - improved error handling and fixed an error that caused group by to hang
   sometimes.

 - added back support for parameter substitution for the LIMIT and OFFSET
   clause

 - use crate-admin 0.0.4

2014/02/24 0.23.0.Beta0
=======================

 - changed the sql-parser from a javacc/akiban derived parser to a presto
   derived antrl based parser.

 - added sys.nodes and sys.cluster tables which can be queried to get
   information about the cluster and nodes.

 - BREAKING: the core data types are now more strict and so it is for example
   no longer possible to save a string array into a string field.

   This functionality will be added back later with explicit multi value
   types.

2014/01/29 0.22.2
=================

 - updated .gitignore and renamed heading in README.rst

2014/01/29 0.22.2
=================

 - fix: `_search_into` now works again with `targetNodes`

 - updated README.rst

 - Moved 'create_tag.sh' to 'devtools'.
   Attention: Because of relative paths, you _have_ to invoke the script as
   follows: './devtools/create_tag.sh'.

2014/01/23 0.22.1
=================

 - admin-ui: implemented basic cluster view with list of nodes

 - updated default config files crate.yml and logging.yml

2014/01/20 0.22.0
=================

 - disabled logging of udc at info level

 - fix: udc ssl truststore was not found at JAR's

 - fix: distinct count aggregation should return 0 when hitting no column

 - upgraded elasticsearch to 0.90.10

2014/01/15 0.21.1
=================

 - fix Double URL encoding of udc parameters

 - fix NPE on close of UDCService

2014/01/15 0.21.0
=================

 - changed default port ranges for http to 4200-4300 and for transport 4300-4400

 - added ssl truststore including StartCom CA, fixes UDC

 - fixed default cluster name (especially on linux platforms)

 - implemented UDC module

 - implemented generation of an unique ClusterId on cluster start-up

 - added parameter expressions to presto based sql-parser

 - added support for subscript expressions to the new presto based sql-parser

2014/01/10 0.20.4
=================

 - admin-ui: fixed number format, fixed table missing + underreplicated shards count,
             show first table if selected table was deleted/closed

 - ignore unknown types in legacy mappings

2014/01/09 0.20.3
=================

 - admin-ui: fixed table css + data reload flickering + sidebar button
             re-enabled blender font at docu

 - added presto based sql-parser to the source tree

2014/01/08 0.20.2
=================

 - admin-ui: implemented tables overview page

2014/01/08 0.20.1
=================

 - admin-ui: fixed display/number of under-replicated docs while cluster state is red

 - admin-ui: display long numbers as rounded units

 - implemented ``object`` type within ``CREATE TABLE`` statements
   allowing to create nested tables/documents with SQL

 - renamed all occurrences of ``craty`` to ``object``

 - fix irregular deadlock while collect with ScriptValuesExpression

2013/12/20 0.20.0
=================

 - admin-ui: implemented general overview page

 - optimized serialization performance for `count(distinct colName)`

 - fix: fix NPE on ``stats.shards`` with unknown column in where clause

 - now an error is thrown if the DISTINCT keyword is used globally. Currently
   only `count(DISTINCT colName)` is supported. Other queries have to be
   re-written to use the `group by` clause.

 - removed inline junit-benchmarks sources and added dependency

 - crate.yml configuration file is now also read without specifying
   `-Des.config` in the start script.

 - new global expression ``sys.cluster.name`` created.
   Can be queried in group by queries and global aggregate queries.

 - removed inline junit-benchmarks sources and added dependency

 - crate.yml configuration file is now also read without specifying
   `-Des.config` in the start script.

 - admin-ui: added simple loading indicator on submitting a SQL query via console,
             also display query result status including query duration

 - optimized group by performance

2013/12/17 0.19.14
==================

 - fix: ignore closed tables at `information_schema`

 - fix: forbid references to other tables

 - fix: more stability for InformationSchemaServiceTest

2013/12/17 0.19.13
==================

 - admin-ui: resolve cluster health state using SQL now
   also display empty values at status-bar if cluster is not reachable/disconnected

 - allow nested columns in aggregate functions

2013/12/16 0.19.12
==================

 - the `order by` clause now works on both alias and non-alias as long as the
   columns/alias are unique within the statement.

 - fix COUNT(*) requests on "virtual" tables like ``information_schema`` and ``stats.shards``

2013/12/13 0.19.11
==================

 - fixed an error that occured if a blob is uploaded using a client that chunks
   the request but doesn't support 100-Continue.

2013/12/11 0.19.10
==================

 - implemented basic version of new admin-ui

 - fixed a thread deadlock that could occur if many group by queries run in
   parallel

 - changed threadpool settings to avoid handler blocking each other on group by queries

2013/12/05 0.19.9
=================

 - benchmark test setup improvements

 - removed randomness from test setup

 - renamed crate admin plugin to `admin-ui`

 - updated elasticsearch to 0.90.7

 - Queries on the shard stats table using aggregates without group by are supported now.

 - Also list unassigned shards when querying shard stats table.

 - fix: fixed stalled cluster on using more than one COUNT(DISTINCT col) in a statement

 - performance-tuning: faster ANY processing in ``group by`` requests

 - Shard stats table is using a pool for it's MemoryIndex now.

 - Implemented ``stats`` schema with virtual table ``shards``, usable for gathering real-time
   statistics of shards.

 - performance-tuning: concrete serialization of aggstates

 - ``COUNT`` aggregate function can now be used on column names, counting all rows with values that
   are not ``NULL``.

 - ``ANY`` aggregate function

 - the `COUNT` aggregation function now supports the `DISTINCT` keyword.

 - aggregations are now allowed on normal ``SELECT`` statements, not only ``GROUP BY`` statements

 - ``AVG`` aggregate function

 - ``SUM`` aggregate function

 - ``MAX`` aggregate function

 - minor group by optimization (replaced idxMap with value extractors)

 - grouping performance tuning

 - added more trace logs

 - ``MIN`` aggregate function, basic infrastructure for column/value based aggregation

2013/11/26 0.19.8
=================

 - added more trace logs

 - fixed classpath overloading issue.

2013/11/25 0.19.7
=================

 - fixed a bug that occured if the offset in a group by query was larger then
   the number of rows in the result-set

 - fix: group by did not work correctly on nested columns due to missing mapping

 - group by performance improvements.

 - the `group by` clause now also works if information_schema tables are
   queried.

2013/11/22 0.19.6
=================

 - fix: added sql query duration to SQL xcontent response

2013/11/22 0.19.5
=================

 - fix: offset didn't work correctly for group by queries.

 - fixed primary key handling in inout plugin

 - fixed a bug where special fields might not get applied in inout
   plugin import when a sub-object occurs in a row

 - error that group by doesn't work on columns that contain arrays is now
   already raised in the query parsing step if possible.

 - improved test-run speed by not starting nodes unnecessarily

 - further optimization of the internal data structure serialization used while
   executing a group by query.

 - Implemented Crate Version & Build class
   - use Crate version number at main rest endpoint
   - use ES version as `es_version`
   - use Version.CURRENT for distribution & create_tag.sh
   - removed static versions.json, read it from main rest endpoint instead

 - Throw a proper error if a multi-value field is encountered during group by
   instead of returning an incorrect result.

 - refactoring of Doctest TestCases

 - internal: support for mapping ip-types (stored as string)

 - Added ``duration`` property to SQLResponse, reflecting the duration of a SQL query.

 - optimized internal data structures that are used when executing a group by
   query. This should reduce memory consumption and speed up serialization.

 - map builtin column ``_score`` explicitly to double

 - type guessing on added columns (as root column or in dynamic object/craty)

 - interpret nested types in indexmapping as craty

 - Increased default ``SELECT`` limit to 10000.
   Also use this default limit on ``GROUP BY`` queries if no limit is defined explicit.

 - Fix: NPE was thrown when using a star select on an index with no defined mappings

 - new es upstream commit: new setting ``index.mapper.map_source`` to control whether source
   values get mapped when returning

 - fix: correct type validation and mapping on all handler nodes, even on nodes without table-shard
   according to table definition

 - nested columns of object types now listed in ``information_schema.columns``

2013/11/18 0.19.4
=================

 - Fix: proper error handling while uploading files to an index with disabled blob support

 - test hickup fixes and speed improvements

 - proper Error handling when issuing statements against a table-alias

 - rename column ``expressions`` of ``information_schema.indices`` to ``columns``
   and change type to array of strings

2013/11/14 0.19.3
=================

 - Schema check for table aliases can be disabled by config now.

2013/11/13 0.19.2
=================

 - Added support for table alias usage on ``SELECT`` queries. Only possible if all tables are
   using the same schema.

 - Windows build: favor crate jars over all other jars at classpath

 - Fix: make test-setup create data dirs as temporary directories
   that get deleted after test runs

 - Fix: use nodeName instead of nodeId for path var ${node} on ``COPY`` SQL command

 - Added support for ${node}, ${cluster} and ${table} variables inside the `path` value of a
   ``COPY`` SQL command

 - Fix: using regex pattern on ``COPY`` did not work properly

2013/11/13 0.19.1
=================

 - added column ``routing_column`` to table ``information_schema.tables``,
   listing the column whose value determines on which shard a document gets stored

2013/11/12 0.19.0
=================

 - Added support for importing data using the SQL `copy <table> from <path>` command.

2013/11/11 0.18.6
=================

 - fix NPE if a null value was passed inside a complex type.

2013/11/11 0.18.5
=================

 - bugfix: complex types like lists and dictionaries now also have the mapping
   applied to the values inside.  For instance if a list of datetimes (in a iso
   datetime string) is passed to the `/_sql` REST endpoint these values are
   converted to long.

2013/11/08 0.18.4
=================

 - the sql `count()` function now also be called with parameter substitution
   (`count(?)`) and with primary key primary key columns (`count(pk_col)`).
   This way SQLAlchemy's ORM functionality can be used with Crate.


2013/11/07 0.18.3
=================

 - values of a row inserted using the sql parameter substitution feature are
   now also mapped to the correct format if the table has a defined type for
   the column.

 - fix: default SQL settings were missing at distribution config file

 - fix: default cluster name(and so the log file) was not `crate`

 - bugfix: SQL statements with `group by` and `limit` clauses returned wrong
   result sets.

 - make information_schema behave like "normal" crate-tables

 - bugfix: NullPointerException when querying for non existent information_schema tables

 - Added the ``routines`` table to information_schema to contain analyzers, tokenizers,
   token-filters and char-filters

2013/11/06 0.18.2
=================

 - Fix: use update-by-path instead of merge on primary-keys queries as well

 - Added virtual table ``indices`` to the ``information_schema``, holds information about all
   available indices.

 - Added virtual table ``columns`` to the ``information_schema``, holds information about all
   available columns.

 - Added the ``table_constraints`` table to information_schema

 - Table index definition documentation overhaul

 - bugfix: the `LIKE` operand now also works on nested columns

2013/11/01 0.18.1
=================

 - Added index method ``plain`` which is the default behaviour

2013/10/31 0.18.0
=================

 - Added the `information_schema` schema that contains a virtual `tables` table
   which can be queries to get information about the currently available
   tables.

 - Added fulltext search support

 - Added support for indices on table creation

 - Implemented ``CREATE ANALYZER`` to create custom analyzers for fulltext-search

2013/10/29 0.17.3
=================

 - fixed a NullPointerException that occured if a `select` statement  got
   optimized to a primary key lookup and returned an object column.

 - fixed a NullPointerException that occured when `null` was passed as `args`
   argument to the `_sql` REST endpoint and the statement contained a `group
   by` clause.

2013/10/28 0.17.2
=================

 - bugfix: the `LIKE` operand only worked with literals, not with parameter
   substitution.

2013/10/25 0.17.1
=================

 - On update, values of kind `object` or `nested` will be overwritten instead of merged.

 - fixed sigar library loading which broke os stats of nodes

2013/10/25 0.17.0
=================

 - Implemented support for optimistic concurrent updates and deletes.

 - Use new crate-cli (crash) version with row count output at doctests.

 - Prevent table creation with routing definition on non-primary key columns.

 - removed `*` and `?` as wildcard characters for the `LIKE` clause to be more
   consistent with the SQL standard.

 - Optimize simple Select Queries with where clauses like <pk_col>=<constant_value> OR <pk_col>=<constant_value>
   and without order-by- or group-by-clauses to use MultiGetRequests

2013/10/21 0.16.0
=================

 - Added support for the SQL `LIKE` operand.

 - Implemented ``drop table``.

 - Implemented the `group by` sql clause.

 - Implemented ``CREATE TABLE`` with core data types, replicas, routing and shard settings.

 - Support for: WHERE <column_name> IN ( <value_1>, <value_2>, ..., <value_n>)

 - Query Planner Optimizes Select / Update / Delete Queries where:

   - Where clause is: <pk_col> = <constant_value>
   - Where clause is like: <pk_col> = <constant_value> OR <pk_col> = <constant_value> OR <pk_col> = ...
   - Where clause is like: <pk_col> = <constant_value> AND ...
   - Where clause is like: <pk_col> IN (<constant_value>) [ OR <pk_col> = <constant_value> ... ]

2013/10/11 0.15.1
=================

 - Rowcount in Integrationtests

2013/10/11 0.15.0
=================

 - created Benchmark to check performance and verify improvements by query planner

 - added rowcount to all SELECT responses

 - fixed filtering by a boolean constant

 - implemented SQL query planner:
   - optimize primary key queries to hit only one single shard

 - set explicit default limit on select to 1000 rows.

2013/10/08 0.14.0
=================

 - set ``primary keys`` definition under the type mappings ``_meta`` instead of index
   ``settings.crate``

 - added support for `select count(*) from ...`

 - updated elasticsearch to 0.90.5

 - included the python clients sqlalchemy documentation

2013/10/02 0.13.2
=================

 - updated crate-python client documentation

 - If a shard or version conflict occurs during select query or update the
   errors are now correctly thrown. Extended the documentation to mention the
   VerionConflictException

 - don't load any JS files from externals domains (CDN) at the admin web interface

2013/10/02 0.13.1
=================

 - include rowcount of affected rows into update responses

 - [test] create temporary directory for test data, will be deleted after test run

2013/10/02 0.13.0
=================

 - add support for sql update statements.

 - set the ``keyword analyzer`` as the default analyzer

 - bugfix: use ES operation type ``create`` for SQL ``INSERT``.

2013/09/27 0.12.0
=================

 - implemented support for selecting and querying inner/nested object properties.

 - calling _sql with `null` in the `args` no longer causes an error.

 - fixed a regression that caused chunk requests to only work for blobs

 - included foundationDB/akiban ``sql-parser`` code into the ``sql`` module

2013/09/20 0.11.3
=================

 - sql parameter substitution now also works for the limit and offset clauses

2013/09/18 0.11.2
=================

 - fixed support for ``object`` type mappings, objects are now supported
   by the transport layer (so also by the java client library).
   In addition the `/_sql`  endpoint now properly accepts nested objects inside
   the `args` key of the request body.

2013/09/18 0.11.1
=================

 - fixed the namespace error in the startscript that resulted in crate not
   starting correctly in the background.

2013/09/17 0.11.0
=================

 - the `_sql` endpoint now supports SQL parameter substitution.

 - DELETE and INSERT SQL statements are now supported.

2013/09/05 0.10.2
=================

 - added java client library in client project

2013/09/04 0.10.1
=================

 - fixed a serialization error in the sql module

2013/09/03 0.10.0
=================

 - blob support is now included

 - sql response format changed

 - use crate fork for elasticsearch dependency

 - use gradle instead of maven

 - integrate plugins from submodules to internal folders

 - removed timefacts plugin since it is not 0.90.3 compatible

 NOTE:
    this update makes crate incompatible with other elasticsearch-plugins

2013/08/08 0.9.2
================

 - updated crate-sql-plugin to 0.1.0

2013/07/24 0.9.1
================

 - fixed scrolling issue in the sql console of the admin interface

2013/07/24 0.9.0
================

 - changed the admin interface to open the linked plugins and documentation in
   a frame.

 - added a custom sphinx theme for the documentation.

 - included sql and inout plugin documentation

 - sphinx generated text documentation added to distribution

 - docs are now tested in the maven verify phase

 - added a link to the documentation in the crate-admin interface available
   under `/admin`

 - added a SQL console to the crate admin interface.

 - added the crate-sql-plugin. Therefore it is now possible to query crate
   using SQL.

 - docs are now available under /_plugins/docs

2013/07/10 0.8.5
================

 - added default config path to start script

 - reverted loading behaviour for settings

 - added DEVELOP.rst file

 - tarball now include CHANGES file

2013/07/09 0.8.4
================

 - added whitelist to allow some hard coded system properties

 - altered start scripts to use valid system properties

2013/07/09 0.8.3
================

 - loading system settings given by the command line as well

2013/07/08 0.8.2
================

 - fixed wrong inclusion path of sigar libs

2013/07/08 0.8.1
================

 - updated elasticsearch-inout-plugin to 0.5.0

2013/07/05 0.8.0
================

 - updated elasticsearch-timefacets-plugin to 0.8.0

 - updated elasticsearch to 0.90.2

 - organized project structure

 - included elasticsearch-inout-plugin and
   elasticsearch-timefacets-plugin as git submodule instead of maven
   dependencs

 - added /admin rest endpoint redirecting to crate-admin

 - added crate-admin site plugin

 - upgraded bigdesk to 2.2.1, which fixes cache memory display issues

2013/06/26 0.7.0
================

 - added elasticsearch-cratedefaults-plugin as sub-module

 - mvn package now also creates a zip file in addition to the tar.gz

 - updated elasticsearch-timefacets-plugin to 0.7.1

2013/06/10 0.6.0
================

 - updated elasticsearch-timefacets-plugin to 0.7.0

 - updated elasticsearch-inout-plugin to 0.4.0

 - updated elasticsearch to 0.90.1

2013/05/28 0.5.0
================

 - included elasticsearch-timefacets-plugin
   (https://github.com/crate/elasticsearch-timefacets-plugin)

2013/05/15 0.4.0
================

 - included segmentspy as site-plugin
   (https://github.com/polyfractal/elasticsearch-segmentspy)

 - included bigdesk as site-plugin
   (https://github.com/lukas-vlcek/bigdesk)

 - included elasticsearch-head as site-plugin
   (https://github.com/mobz/elasticsearch-head)

2013/05/15 0.3.0
================

 - updated elasticsearch-inout-plugin to 0.3.0

 - updated elasticsearch to 0.90.0

2013/05/02 0.2.1
================

 - bugfix: used wrong groupId in common-bin.xml

2013/05/02 0.2.0
================

 - updated elasticsearch-inout-plugin to 0.2.0-SNAPSHOT

2013/04/25 0.1.1
================

 - added missing sigar libraries in rpm as well

2013/04/25 0.1.0
================

 - added missing sigar libraries

 - depending on elasticsearch-inout-plugin

2013/04/17 0.0.8
================

 - updated export plugin to 0.0.3

2013/04/15 0.0.7
================

 - increased version of elasticsearch

 - increased version of elasticsearch-export-plugin

2013/04/15 0.0.6
================

 - added NOTICE file
