Version 3.2.0

Released on 2018/12/19.

Note

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

We recommend that you upgrade to the latest 3.1 release before moving to 3.2.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.

Please consult the Upgrade Notes before upgrading.

Warning

Tables that were created prior to upgrading to CrateDB 2.x will not function with 3.2 and must be recreated before moving to 3.2.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

Upgrade Notes

Logging Configuration Changes

The default logging configuration for CrateDB in log4j2.properties has been changed. If you have customised this logging configuration, you should replace the $marker entry with [%node_name] %marker.

Deprecated Settings and Features

In previous versions, the CrateDB license was set via the license.ident configuration setting. This has now been deprecated, and going forward the CrateDB license should be set using the SET LICENSE statement.

The INGEST framework has been deprecated, and will be removed in the future.

The http.enabled setting has been deprecated, and will be removed in the future.

The delimited_payload_filter built-in token filter for fulltext analyzers has been renamed to delimited_payload. The delimited_payload_filter name can still be used, but is deprecated, and will be removed in the future.

Changelog

Breaking Changes

  • The * of SELECT * statements in the query clause of view definitions is no longer expanded at view creation time but lazy whenever a view is evaluated. That means columns added to a table after the views initial creation will show up in queries on the view. It is generally recommended to avoid using * in views but always specify columns explicitly.

Changes

New Features

  • Added support for executing existing aggregation functions as window functions using the OVER clause.
  • Added support for CrateDB license management enabling users to trial the enterprise features, set a production enterprise license or continue using the community edition. Additionally, a new SET LICENSE statement has been added for license registration, and the license.ident setting has become @deprecated.

SQL Improvements

  • Added the REPLACE scalar function replacing substrings in a string with another string.
  • Added the GENERATE_SERIES(start, stop [, step ]) table function which can generate a series of numbers.
  • Implemented the ARRAY_UPPER, ARRAY_LENGTH and ARRAY_LOWER scalars that return the upper and respectively lower bound of a given array dimension.
  • Added support for the ARRAY(subquery) expression, which can turn the result from a subquery into an array.
  • The = ANY operator now also supports operations on object arrays or nested arrays. This enables queries like WHERE ['foo', 'bar'] = ANY(object_array(string_array)).
  • Added support for SHOW parameter_name | ALL to retrieve one or all session setting value(s).
  • Added support for INITCAP(string) which capitalizes the first letter of every word while turning all others into lowercase.
  • Added the scalar expression CURRENT_DATABASE which returns the current database.
  • Functions like CURRENT_SCHEMA and CURRENT_USER which depend on the active session can now be used as generated columns.
  • Added support for using table functions in the select list of a query.
  • geo_shape columns can now be casted to object with cast in addition to try_cast.
  • Improved the handling of function expressions inside subscripts used on object columns. This allows expressions like obj['x' || 'x'] to be used.
  • <object_column> = <object_literal> comparisons now try to utilize the index for the objects contents and can therefore run much faster.
  • Values of byte-size and time based configuration setting do not require a unit suffix anymore. Without a unit time values are treat as milliseconds since epoch and byte size values are treat as bytes.
  • Added support of using units inside byte-size or time bases statement parameters values. E.g. ‘1mb’ for 1 MegaByte or ‘1s’ for 1 Second.

PostgreSQL Compatibility

  • Added the pg_catalog.pg_database table.
  • Added pg_class, pg_namespace, pg_attribute, pg_attrdef, pg_index and pg_constraint tables to the pg_catalog schema for improved compatibility with PostgreSQL.
  • Improved the compatibility with PostgreSQL clients that use the text type for parameter encoding.
  • Changed PostgreSQL wire interface to emulate version 10.5.
  • Added some type aliases for improved compatibility with PostgreSQL.
  • Expand the search_path setting to accept a list of schemas that will be searched when a relation (table, view or user defined function) is referenced without specifying a schema. The system pg_catalog schema is implicitly included as the first one in the path.

Database Administration

Admin UI Upgrade to 1.11.3

  • Changed the license information (ident) to be taken from the sys.cluster.licence attribute instead of the license.ident setting, which is @deprecated.
  • Addition of French language files and menu options.
  • Fixed an issue that caused incorrectness in the navigation of the Admin UI.
  • Updated the license container to be responsive in the Admin UI.
  • Various other improvements.

Deprecations

  • The MQTT endpoint has been deprecated and will be removed in a future version.
  • Deprecated the http.enabled setting which will be always on in future.

Other

  • Upgraded to Elasticsearch 6.5.1, which includes changes to the default logging configuration.
  • Added a remove_duplicates token filter.
  • Added a char_group tokenizer.
  • Renamed the delimited_payload_filter token filter to delimited_payload. The old name can still be used, but is deprecated.

For further information on CrateDB 3.2.0 see our announcement blogpost.