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

Unreleased
==========

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