Skip to content

timescaledb

2.32.0
timescale/timescaledb

A time-series database for high-performance real-time analytics packaged as a Postgres extension

Version of timescale/timescaledb you run

CompareView on GitHub

Breaking changes

What to check before upgrading, taken from the notes of the last 30 releases.

  • 2.31.0Oct 20, 2026

    Backward-Incompatible Changes

    • #10666 Rename timescaledb.enable_columnarscan to timescaledb.debug_enable_columnarscan to make its debugging-only purpose explicit
    • #10772 Make the direct-compress batch sorting GUCs available only in debug builds
  • 2.29.0Jul 28, 2026

    Important: PostgreSQL 15 Support Removed

    TimescaleDB 2.29.0 removes support for PostgreSQL 15. This release supports PostgreSQL 16, 17, and 18. If you are still running PostgreSQL 15, upgrade PostgreSQL before upgrading to TimescaleDB 2.29.0.

    Backward-Incompatible Changes

    • #10041 Remove support for PostgreSQL 15
  • 2.28.0Jun 16, 2026

    Deprecation Notice: PostgreSQL 15 Support

    This release marks the final minor version of TimescaleDB that will support PostgreSQL 15. Starting with our next release, version 2.29.0, we will officially drop support for Postgres 15, and only support Postgres 16, 17, and 18; however, all future patch releases within the current 2.28 version cycle will continue to fully support it. We recommend planning your PostgreSQL upgrades accordingly to ensure a smooth transition.

    Deprecation Notice: chunkconstraint Catalog Table

    Please note that the _timescaledb_catalog.chunk_constraint table has been dropped and temporarily replaced by a view, which introduces a change to the underlying objects while maintaining current query behavior. However, this compatibility view will be completely removed in a future release. To ensure your queries remain compatible moving forward, we strongly advise transitioning to the stable contracts provided by our informational views.

    Backward-Incompatible Changes

    • #9934 Remove adaptive chunking
  • 2.27.0May 12, 2026
    • ⚠️ Due to a problem during release process the Window's releases artifacts attached to this release are not valid.

    Backward-Incompatible Changes

    • #9579 The bloom filter sparse indexes on compressed int2 columns could lead to SELECT queries not returning the rows that actually match the WHERE condition. The upgrade is blocked for the affected databases, and the incorrect indexes have to be dropped manually before the upgrade.
    • This release introduces a new naming convention for composite bloom filter metadata. While this change will not disrupt query processing, v2.27 cannot automatically utilize composite bloom filters generated in v2.26. To convert your existing v2.26 composite bloom filters, the legacy metadata columns must be renamed. This is a lightweight, catalog-only operation requiring zero data recompression, which can be done with this migration script.
  • 2.24.0Dec 3, 2025

    Deprecations

    Backward-Incompatible Changes

    • #8761 Fix matching rows in queries using the bloom filter sparse indexes potentially not returned after extension upgrade. The version of the bloom filter sparse indexes is changed. The existing indexes will stop working and will require action to re-enable. See the section above for details.

Release history

All releases on GitHub
BadgeLatest version of timescale/timescaledb[![version](/badge/timescale/timescaledb)](/p/timescale/timescaledb)

2.32.0 (2026-11-12)

This release includes security fixes, performance improvements, and bug fixes since 2.31.0. As part of our ongoing proactive security reviews, this release includes a larger set of security fixes than usual. We recommend that you upgrade as soon as possible.

PostgresSQL Compatibility

This TimescaleDB version is compatible only with PostgreSQL versions up to 18.6, 17.11, and 16.15, so before upgrading PostgreSQL beyond these, first upgrade TimescaleDB to version 2.32.1, then upgrade PostgreSQL.

Loader Changes

For the loader changes take effect a PostgreSQL restart is required.

  • #10966 Check database ownership before stopping or restarting background workers on database commands
  • #10983 Run the background worker scheduler as the database owner instead of as superuser

Features

  • #10864 Improve continuous aggregate refresh performance by updating the watermark once per batch
  • #10878 Enable Adaptive Integer Compression (AIC) by default
  • #10927 Remove user switching when allocating ids from the internal catalog sequences
  • #10953 Allow database owners to start, stop, and restart background workers without superuser
  • #10960 Run the telemetry job as the database owner instead of the role that installed the extension

Bugfixes

  • #10075 Removing the bloom1_contains function and rejecting anonymous record arrays in bloom1_contains_any
  • #10296, #10745 Fix continuous aggregate refresh skipping the last invalidated bucket for variable-sized buckets
  • #10854 Correctly skip rows with conversion errors during COPY FROM ON_ERROR ignore
  • #10855 Enforce REJECT_LIMIT during COPY FROM on PostgreSQL 18 and later
  • #10887 Fix "repalloc called with invalid pointer" when compressing batches of more than 992 rows for certain data patterns
  • #10893 Fix typo in the columnar README example
  • #10902 Fix concurrent UPDATE/DELETE on hypertables silently skipping rows under READ COMMITTED
  • #10919 Check schema CREATE privilege when creating a continuous aggregate
  • #10925 Create chunk constraints without switching to the catalog owner
  • #10961 Fix crash in decompress_chunk when the hypertable is dropped concurrently
  • #10961 Fix null dereference in in-memory recompression when the compression settings are missing
  • #10961 Fix stale chunk and hypertable state in compress_chunk when a concurrent decompress or compression change commits
  • #10962 Reset search_path after every COMMIT in the columnstore policy
  • #10964 Fix crash in cagg_validate_query when called with a SELECT INTO statement
  • #10964 Fix crash in cagg_validate_query when the user lacks SELECT permission on the hypertable
  • #10965 Verify the server certificate on telemetry SSL connections
  • #10967 Fix crash in show_policies when called more than once in the same query
  • #10968 Fix crash in add_policies and alter_policies when a drop_created_before retention policy exists on the hypertable or the continuous aggregate
  • #10970 Fix ORDER BY pushdown for realtime continuous aggregates with an ORDER BY in their definition
  • #10988 Report a missing policy config key as a user error instead of an internal error
  • #10988 Restrict changing the config check function of a job to the job ownerwhat
  • #10989 Match job procedures by OID in DDL hooks
  • #10991 Fix function overload in approximate_row_count
  • #10993 Require ownership of the chunk, not just of the hypertable, to do chunk operations on them

GUCs

  • compression_orderby_default_function: Function to use for calculating default order_by setting for compression. Default: timescaledb.compression_orderby_default_function
  • compression_segmentby_default_function: Function to use for calculating default segment_by setting for compression. Default: timescaledb.compression_segmentby_default_function

Thanks

  • @JoongHyuk-Shin for fixing continuous aggregate refresh skipping the last invalidated bucket for variable-width buckets, 10419
  • @manishnithinreddy for reporting the concurrent UPDATE/DELETE regression and bisecting it to 2.28.1, 10902
  • @martin-omacht for reporting missing and stale buckets in a continuous aggregate with a timezone, #10296
  • @owhiterabbito for reporting the compression error and analyzing the selector buffer size, #10887
  • @pei711 for fixing a typo in the README, #10893
  • @salmanazmat666 for reporting the continuous aggregate refresh skipping the last bucket on a variable-width bucket boundary, #10745

Full release notesCompare with previous