Version 3.1.0

    Note

    If you are upgrading a cluster, you must be running CrateDB 2.0.4 or higher before you upgrade to 3.1.0.

    We recommend that you upgrade to the latest 3.0 release before moving to 3.1.0.

    You cannot perform a rolling upgrade to this version. Any upgrade to this version will require a .

    When restarting, CrateDB will migrate indexes to a newer format. Depending on the amount of data, this may delay node start-up time.

    Warning

    Tables that were created prior to upgrading to CrateDB 2.x will not function with 3.1 and must be recreated before moving to 3.1.x.

    You can recreate tables using and COPY FROM while running a 2.x release into a new table, or by inserting the data into a new table.

    Before upgrading, you should .

    Table of contents

    • Crash is no longer bundled with the CrateDB tarball distribution.

    Changes

    • Improved performance and memory utilisation for queries against the sys tables.

    • Improved performance and memory utilisation for unsorted distributed GROUP BY and aggregations statements by executing the reduce operation in an incremental way.

    • Improved performance and memory utilisation of GROUP BY statements when the key column is a single string, byte, short, int or long.

    • Exposed the cluster state version in the sys.nodes table under the cluster_state_version column and under the NodeInfo MXBean in JMX.

    • Added a new ThreadPools MXBean for JMX which exposes statistics of all used thread pools.

    • Changed the PostgreSQL wire protocol binary encoding format for columns to use the newer int64 format. This will enable compatibility with clients like pgx.

    • Added support for multi line SQL comments, e.g. /* multi line */.

    • Improved performance of queries using an array access inside the WHERE clause. E.g.:

    • Added the full PostgreSQL syntax of the BEGIN statement and the COMMIT statement. This improves the support for clients that are based on the PostgreSQL wire protocol, such as the Golang lib/pg and pgx clients. The BEGIN and COMMIT statements and any of their parameters are simply ignored.

      1. SELECT * FROM t
      2. WHERE NOT IGNORE3VL(5 = ANY(t.int_array_col))
    • Added a new MBean for JMX which exposes the number of open connections per protocol.

    • Added support for COPY FROM ... RETURN SUMMARY which will return a result set with detailed error reporting of imported rows.

    • Added a new stats.jobs_log_filter setting which can be used to control what kind of entries are recorded into the sys.jobs_log table. In addition there is a new stats.jobs_log_persistent_filter setting which can be used to record entries also in the regular CrateDB log file.

    • Exposed statement classification in sys.jobs_log table.

    • Added a sys.jobs_metrics table which contains query latency information.

    • The setting es.api.enabled has been marked as deprecated and will be removed in a future version. Once removed it will no longer be possible to use the Elasticsearch API. Please create a feature request if you’re using the ES API and cannot use the SQL interface as substitute.

    • Introduced the EXPLAIN ANALYZE statement for query profiling.

    • Added typbasetype column to the pg_catalog.pg_type table.

    • Added support for the SHOW TRANSACTION_ISOLATION statement.

    • Added TimeZone parameter response to PostgreSQL Wire Protocol.