Version 3.1.0
Released on 2018/08/28.
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 full restart upgrade.
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 COPY TO
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 back up your data.
Table of contents
Changelog
Breaking Changes
- 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 singlestring
,byte
,short
,int
orlong
.Added a new
CircuitBreakers
MXBean for JMX which exposes statistics of all availabel circuit breakers.Exposed the cluster state version in the
sys.nodes
table under thecluster_state_version
column and under theNodeInfo
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
timestamp
columns to use the newerint64
format. This will enable compatibility with clients likepgx
.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.:SELECT * FROM t
WHERE int_array_col[1] = 123
Added the full PostgreSQL syntax of the
BEGIN
statement and theCOMMIT
statement. This improves the support for clients that are based on the PostgreSQL wire protocol, such as the Golanglib/pg
andpgx
clients. TheBEGIN
andCOMMIT
statements and any of their parameters are simply ignored.Added a new scalar function
ignore3vl
which eliminates the 3-valued logic of null handling for every logical expression beneath it. If 3-valued logic is not required, the use of this function in theWHERE
clause beneath aNOT
operator can boost the query performance significantly. E.g.:SELECT * FROM t
WHERE NOT IGNORE3VL(5 = ANY(t.int_array_col))
Added a new
Connections
MBean for JMX which exposes the number of open connections per protocol.Added a new
connections
column to thesys.nodes
table which contains the number of currently open connections per protocol and the total number of connections per protocol opened over the life-time of a node.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 thesys.jobs_log
table. In addition there is a newstats.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 thepg_catalog.pg_type
table.Added support for the
SHOW TRANSACTION_ISOLATION
statement.Added
TimeZone
parameter response to PostgreSQL Wire Protocol.Extended syntax support for certain
ALTER BLOB TABLE RENAME
,REROUTE
andOPEN/CLOSE
queries.