Version 6.3.0

Released on 2026-03-31

Warning

Do not use this version when upgrading from any previous version containing tables created before Version 5.5.0 as this may result in data loss!

If the cluster contains tables created before Version 5.5.0, after upgrading to Version 6.3.0 certain actions on such tables like deleting partitions, changing settings, rename, swap, etc. can lead to corrupted table which causes all the data of the columns created in versions before Version 5.5.0 to be shown as NULL. The bug has been fixed in Version 6.3.2, so we highly recommend to avoid upgrading to any earlier 6.3.x version.

Once already affected by the bug, existing data may be lost forever, while new data (via INSERT or UPDATE) can be retrieved normally.

Note

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

We recommend that you upgrade to the latest 6.2 release before moving to 6.3.0.

A rolling upgrade from >= 6.2.0 to 6.3.0 is supported. Before upgrading, you should back up your data.

Warning

Tables that were created before CrateDB 5.x will not function with 6.x and must be recreated before moving to 6.x.x.

You can recreate tables using COPY TO and COPY FROM or by inserting the data into a new table.

Table of contents

Breaking Changes

  • Removed the canned_acl setting for repositories of type s3 and also removed the undocumented proxy settings.

  • Removed the token_uri setting for repositories of type gcs.

  • Removed the following settings for repositories of type azure:

    • location_mode

    • secondary_endpoint

    • endpoint_suffix

    • timeout

    • proxy_type

    • proxy_host

    • proxy_port

Deprecations

None

Changes

SQL Statements

SQL Standard and PostgreSQL Compatibility

  • Dhruv Patel added support for CREATE TABLE … LIKE.

  • Added support for RESTRICT and CASCADE to DROP SCHEMA.

  • Added support for statements containing only comments like /* ping */ for compatibility with clients like pgx - which is used by Grafana since 12.4.

  • Dhruv Patel added support for DEFAULT expressions in INSERT INTO statements to explicitly declare that the default expression of a column should be used.

  • Added the information_schema.view_column_usage table.

  • Added the pg_sleep function, which pauses a session.

  • Added the has_function_privileges function, which checks whether a user has privileges to execute a function.

  • Dhruv Patel added support for SELECT statements without a column list (e.g., SELECT FROM table) to match PostgreSQL behavior. This enables compatibility with tools like TinyETL that use reflection queries such as SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = $1).

  • Sahin Akyol added support for the IS [ NOT ] TRUE | FALSE boolean predicates.

  • Added support for using null and child columns of an object(ignored) type within ORDER BY. Note that the latter has worse performance compared to ordering on a properly typed column.

  • The INFORMATION_SCHEMA.COLUMNS table now shows values for the udt_name and udt_catalog columns.

Data Types

None

Scalar and Aggregation Functions

Performance and Resilience Improvements

  • ANALYZE now processes tables one after another to update the statistics instead of processing all tables concurrently. This reduces the impact it has on the cluster to avoid sudden spikes in disk IO or memory usage. The tradeoff is that the operation will now run longer.

  • Added a indices.breaker.policy setting which can be set to either current (default - current behavior) or top_consumer (new experimental behavior). If set to top_consumer it changes the circuit breaking mechanism to abort the query consuming the most memory on the node where the circuit breaker was tripped instead of the query who tripped it.

  • Changed the swapping and renaming of tables to no longer re-allocate the shards of the swapped/renamed table, so that in-progress snapshots can finish successfully. Previously, the in-progress snapshots would fail and remain in PARTIAL state, with an ABORTED failure message showing in the sys.snapshots system table.

  • INSERT INTO statements that create new partitions are no longer interrupted by SWAP or RENAME table statements.

Administration and Operations

  • Added a region option to repositories of type s3 for compatibility with alternative s3 implementations like Garage.

  • Repositories of type s3 now use path style access by default instead of virtual host style when building the URI.

Client interfaces

None