Version 2.1.1¶
Released on 2017/08/04.
Note
If you are upgrading a cluster, you must be running CrateDB Version 1.1.3 or higher before you upgrade to 2.1.1.
If you want to perform a rolling upgrade, your current CrateDB version number must be Version 2.1.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.1.0, and will require a full restart upgrade.
Consult the upgrade notes for Version 2.1.0 when upgrading.
Warning
Before upgrading, you should back up your data.
Table of contents
Changelog¶
Changes¶
Made the help messages of
bin/crate
and the Java code consistent. This change also removes the undocumented-E
command line option which makes-C
the only valid option for passing settings to CrateDB.Changed the Enterprise License missing check message, as well as lowering the severity from
HIGH
toLOW
.Added a warning message to the log if the unofficial Elasticsearch HTTP REST API is enabled via
es.api.enabled
setting.Updated Elasticsearch to v5.4.3.
Enabled
mapping.total_fields.limit
setting for tables in order to be able to increase maximum number of columns higher than the default of1000
.Table functions now support value expressions as arguments.
Fixes¶
Fixed an issue when using dots in an identifier for column creation in alter table, where they were interpreted as sub-fields of an object. The usage of dots as part of a column name is prohibited.
Fixed an issue that prevented CrateDB from starting when
path.home
was set via command line argument.Fixed an issue causing
JOINs
on virtual tables (subselects) which containLIMIT
and/orOFFSET
to return incorrect results. E.g.:SELECT * FROM (SELECT * FROM t1 ORDER BY a LIMIT 5) t1, JOIN (SELECT * FROM t2 ORDER BY b OFFSET 2) t2 ON t1.a = t2.max
Fixed an issue causing
JOINs
with aggregations on virtual tables (subselects) which also contain aggregations to return incorrect results. E.g.:SELECT t1.a, COUNT(*) FROM t1 JOIN (SELECT b, max(i) as max FROM t2 GROUP BY b) t2 ON t1.a = t2.max GROUP BY t1.id
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 theANY (array_expression)
operators.Allow support of conditional expression with different return types that can be converted to a single return type.
Fixed support for negate on null in conditional expression.
Fixed support for setting
write.wait_for_active_shards
on a partitioned table.Added missing documentation about the default value of the table setting
write.wait_for_active_shards
.Improved user privileges matching to constant time complexity.
Improved the error message if an invalid table column reference is used in
INSERT
statements.Optimized the algorithm that determines the best ordering of the tables in a
JOIN
.Updated Crash to
0.21.4
which fixes an issue with\verbose
command not working correctly when Crash is started without--verbose
.Implemented flexible return type of
sum
function depending on the input types, which was previously only double.Fixed a regression causing incorrect results for queries with
DISTINCT
on scalar functions. E.g.:SELECT DISTINCT upper(name) FROM t
Fixed a race condition which made it possible to create new columns in a partition of a partitioned table that didn’t match the type of the same column of sibling partitions.
Upgraded Admin UI version to fix an issue with the Twitter tutorial.
Fixed a NPE when running
select port from sys.nodes
andpsql.enabled: false
was set.Fixed an issue where the user that gets provided by the client on connect is not always used as current user if host based authentication is disabled.
Corrected the documentation of the
version
column of thesys.snapshots
table. It was described as the CrateDB version whereas it’s an internal version instead.Dropping an empty partitioned table now drops the related table privileges.
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 )
Internal system queries are now executed under the
crate
superuser if user management is enabled.!= ANY()
could not operate on arrays with more than 1024 elements. This limit has been increased by default to 8192. A new node setting:indices.query.bool.max_clause_count
has been exposed to allow configuration of this limit.Fixed an issue which caused unrelated table privileges to be lost after a table was renamed.
Fixed an issue that prevents CrateDB from bootstrapping on Windows hosts.