This release contains performance improvements and bug fixes since the 2.22.1 release. We recommend that you upgrade at the next available opportunity.
Highlighted features in TimescaleDB v2.23.0
- This release introduces full PostgreSQL 18 support for all existing features. TimescaleDB v2.23 is available for PostgreSQL 15, 16, 17, and 18.
- UUIDv7 compression is now enabled by default on the columnstore. This feature was shipped in v2.22.0. It saves you at least 30% of storage and delivers ~2× faster query performance with UUIDv7 columns in the filter conditions.
- Added the ability to set hypertables to unlogged, addressing an open community request #836. This allows the tradeoff between durability and performance, with the latter being favourable for larger imports.
- By allowing set-returning functions in continuous aggregates, this addresses a long standing blocker, raised by the community #1717.
PostgreSQL 15 deprecation announcement
We will continue supporting PostgreSQL 15 until June 2026. Closer to that time, we will announce the specific TimescaleDB version in which PostgreSQL 15 support will not be included going forward.
Features
- #8373 More precise estimates of row numbers for columnar storage based on Postgres statistics.
- #8581 Allow mixing Postgres and TimescaleDB options in
ALTER TABLE SET. - #8582 Make
partition_columninCREATE TABLE WITHoptional. - #8588 Automatically create a columnstore policy when a hypertable with columnstore enabled is created via
CREATE TABLE WITHstatement. - #8606 Add job history config parameters for maximum successes and failures to keep for each job.
- #8632 Remove
ChunkDispatchcustom node. - #8637 Add
INSERTsupport for direct compress. - #8661 Allow
ALTER TABLE ONLYto changereloptionsto apply setting changes only to future chunks. - #8703 Allow set-returning functions in continuous aggregates.
- #8734 Support direct compress when inserting into a chunk.
- #8741 Add support for unlogged hypertables.
- #8769 Remove continuous aggregate invalidation trigger.
- #8798 Enable UUIDv7 compression by default.
- #8804 Remove
insert_blockertrigger.
Bugfixes
- #8561 Show warning when direct compress is skipped due to triggers or unique constraints.
- #8567 Do not require a job to have executed to show status.
- #8654 Fix
approximate_row_countfor compressed chunks. - #8704 Fix direct
DELETEon compressed chunk. - #8728 Don't block dropping hypertables with other objects.
- #8735 Fix
ColumnarScanforUNIONqueries. - #8739 Fix cached utility statements.
- #8742 Potential internal program error when grouping by
boolcolumns of a compressed hypertable. - #8743 Modify schedule interval for job history pruning.
- #8746 Support show/drop chunks with UUIDv7 partitioning.
- #8753 Allow sorts over decompressed index scans for
ChunkAppend. - #8758 Improve error message on catalog version mismatch.
- #8774 Add GUC for WAL based invalidation of continuous aggregates.
- #8782 Stops sparse index from allowing multiple options.
- #8799 Set
next_startforWITHclause compression policy. - #8807 Only warn but not fail the compression if bloom filter indexes are configured but disabled with a GUC.
GUCs
cagg_processing_wal_batch_size: Batch size when processing WAL entries.enable_cagg_wal_based_invalidation: Enable experimental invalidations for continuous aggregates using WAL.enable_direct_compress_insert: Enable direct compression duringINSERT.enable_direct_compress_insert_client_sorted: Enable direct compressINSERTwith presorted data.enable_direct_compress_insert_sort_batches: Enable batch sorting during direct compressINSERT.
Thanks
- @brandonpurcell-dev For highlighting issues with
show_chunks()and UUIDv7 partitioning - @moodgorning for reporting an issue with the
timescaledb_information.job_statsview - @ruideyllot for reporting set-returning functions not working in continuous aggregates
- @t-aistleitner for reporting an issue with utility statements in plpgsql functions