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

Unreleased
==========

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