Version 4.3.0

Released on 2020-10-16.

Note

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

We recommend that you upgrade to the latest 4.2 release before moving to 4.3.0.

A rolling upgrade from 4.2.6+ to 4.3.0 is supported.

Before upgrading, you should back up your data.

Breaking Changes

  • Added support for the g flag to function regexp_matches and changed its type from scalar to table. It now returns a table where each row contains a single column groups of type array(text).

  • Changed values of information_schema.columns.ordinal_position and pg_catalog.pg_attribute.attnum for object data type sub-columns from NULL to an incremented ordinal. Values of top-level columns may change if their position is after an object type column.

Deprecations

Changes

Performance improvements

  • Improved the performance of aggregations in various use cases. In some scenarios we saw performance improvements by up to 70%.

  • Changed the default for soft deletes. Soft deletes are now enabled by default for new tables. This should improve the speed of recovery operations when replica shard copies were unavailable for a short period.

SQL Standard and PostgreSQL compatibility improvements

Administration

  • Added a new cluster.max_shards_per_node cluster setting that limits the amount of shards that can be created per node. Once the limit is reached, operations that would create new shards will be rejected.

  • Added the read_only_allow_delete setting to the settings['blocks'] column of the information_schema.tables and information_schema.table_partitions tables.

  • Changed OPTIMIZE to no longer implicitly refresh a table.

  • Changed the privileges for KILL, all users are now allowed to kill their own statements.

  • Removed the Twitter tutorial from the Admin Console.

Error handling improvements

  • Added detailed information on the error when a column with an undefined type is used to GROUP BY.

  • Added detailed information to possible errors on repository creation to give better insights on the root cause of the error.

  • Changed the error code for the PostgreSQL wire protocol from XX000 internal_error when:

    • a user defined function is missing to 42883 undefined_function

    • a column alias is ambiguous to 42P09 ambiguous_alias

    • a schema name is invalid to 3F000 invalid_schema_name

    • a column reference is ambiguous to 42702 ambiguous_column

    • a relation exists already to 42P07 duplicate_table

    • a column does not exist to 42703 undefined_column

    • a relation does not exist to 42P01 undefined_table

    • a document exists already to 23505 unique_violation

  • Changed the error code for dropping a missing view from the undefined 4040 to 4041.

  • Changed the error handling so it returns the error message and the related exception without being wrapped in a SqlActionException. Error codes remain the same.