timescaledb
2.32.0A time-series database for high-performance real-time analytics packaged as a Postgres extension
- Maintenance
- ActiveBased on the last push: commit history is not collected yet
- License
- OtherUnknown
- Security
- 4 advisories4 high · Scorecard 4.5/10
- Supported versions
- No scheduleendoflife.date does not track this project
23.9k stars · 1.2k forks · 482 open issues · last release 3 days ago · data checked 5 hours ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- 2.31.0Oct 20, 2026
- 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_constrainttable 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
int2columns could lead toSELECTqueries not returning the rows that actually match theWHEREcondition. 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
- The next release of TimescaleDB will remove the deprecated partial continuous aggregates format. The new format was introduced in
2.7.0and provides significant improvements in terms of performance and storage efficiency. Please usecagg_migrate()to migrate to the new format. Tiger Cloud users are migrated automatically. - In future releases the deprecated view
timescaledb_information.compression_settingswill be removed. Please usetimescaledb_information.hypertable_columnstore_settingsas a replacement. - The experimental view
timescaledb_experimental.policiesand the adjacent experimental functionsadd_policies,alter_policies,show_policies,remove_policies, andremove_all_policiesto manage continuous aggregates will be removed in an upcoming release. For replacements, please use the Jobs API.
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.
- The next release of TimescaleDB will remove the deprecated partial continuous aggregates format. The new format was introduced in
Release history
All releases on GitHub2.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_ERRORignore - #10855 Enforce
REJECT_LIMITduringCOPY FROMon 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/DELETEon hypertables silently skipping rows underREAD COMMITTED - #10919 Check schema
CREATEprivilege when creating a continuous aggregate - #10925 Create chunk constraints without switching to the catalog owner
- #10961 Fix crash in
decompress_chunkwhen 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_chunkwhen a concurrent decompress or compression change commits - #10962 Reset
search_pathafter everyCOMMITin the columnstore policy - #10964 Fix crash in
cagg_validate_querywhen called with aSELECT INTOstatement - #10964 Fix crash in
cagg_validate_querywhen the user lacksSELECTpermission on the hypertable - #10965 Verify the server certificate on telemetry SSL connections
- #10967 Fix crash in
show_policieswhen called more than once in the same query - #10968 Fix crash in
add_policiesandalter_policieswhen adrop_created_beforeretention policy exists on the hypertable or the continuous aggregate - #10970 Fix
ORDER BYpushdown for realtime continuous aggregates with anORDER BYin 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_functioncompression_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/DELETEregression and bisecting it to2.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