Version 2.0.7

Released on 2017/08/08.


If you are upgrading a cluster, you must be running CrateDB Version 1.1.3 or higher before you upgrade to 2.0.7.

If you want to perform a rolling upgrade, your current CrateDB version number must be Version 2.0.0. If you want to upgrade from a version prior to this, the upgrade will introduce all of the breaking changes listed for Version 2.0.0, and will require a full restart upgrade.

Consult the upgrade notes for Version 2.0.0 when upgrading.


If you’re using CrateDB’s BLOB storage you should consult the Upgrade Notes.

Before upgrading, you should back up your data.

Table of contents

Upgrade Notes

Due to a bug introduced in Version 2.0.0 that can cause loss of BLOB data, it is necessary to perform a rolling upgrade if you’re running a version >= 2.0.0 and < 2.0.4 and using BLOB tables.

Additionally, the number of replicas needs to be set to at least 1 for all blob tables and you need to make sure that data is fully replicated before continuing.

Only then you may upgrade one node after each other.



  • Enabled mapping.total_fields.limit setting for tables in order to be able to increase the maximum number of columns higher than the default of 1000.


  • Fixed an issue where COPY FROM, INSERT-BY-SUBQUERY or bulk INSERT statements could not be killed when high pressure is put on data node thread pools.

  • Fixed the error message to be more descriptive when the condition in a CASE/WHEN expression is not a boolean.

  • Fixed an issue which caused an exception if EXPLAIN is used on a statement that uses the ANY (array_expression) operator.

  • Allow support of conditional expressions with different return types that can be converted to a single return type.

  • Fixed support for negate on null in conditional expressions.

  • Fixed support for setting write.wait_for_active_shards on a partitioned table.

  • Optimized the algorithm that determines the best ordering of the tables in a JOIN.

  • Fixed a regression causing incorrect results for queries with DISTINCT on scalar functions. E.g.:

    SELECT DISTINCT upper(name) FROM t
  • Fixed a null pointer exception when running SELECT port FROM sys.nodes while psql.enabled: false was set.

  • Implemented NOT NULL constraint validation for nested object columns, which was previously ignored. E.g.:

    CREATE TABLE test (
      stuff object(dynamic) AS (
        level1 object(dynamic) AS (
          level2 string not null
        ) NOT NULL
      ) NOT NULL