You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ This release contains performance improvements and bug fixes since the 2.27.2 re
8
8
9
9
**Highlighted features in TimescaleDB v2.28.0**
10
10
***Faster `first()` and `last()` queries on compressed data.** TimescaleDB derives `first(value, time)` and `last(value, time)` aggregates straight from the columnstore's batch metadata, skipping batch decompression entirely. For the "latest reading per series" lookups that time-series workloads run constantly, that means meaningfully faster recency queries with no changes to your SQL queries.
11
-
***Lighter, less disruptive continuous aggregate refreshes.**`refresh_continuous_aggregate()` can now run incrementally in batches — the same behavior refresh policies already use — enabling breaking large manual refreshes into smaller chunks (tunable via `buckets_per_batch`, `max_batches_per_execution`, and `refresh_newest_first`) instead of one heavy operation. Refreshes also now take a lighter lock while processing the invalidation log, so they no longer block unrelated concurrent operations on the same continuous aggregate, resulting in improved behaviour for concurrent workloads.
11
+
***Lighter, less disruptive continuous aggregate refreshes.**`refresh_continuous_aggregate()` can now run incrementally in batches — the same behavior refresh policies already use — enabling breaking large manual refreshes into smaller chunks (tunable via `buckets_per_batch`, `max_batches_per_execution`, and `refresh_newest_first`) instead of one heavy operation. Refreshes also now take a lighter lock while processing the invalidation log, so they no longer block unrelated concurrent operations on the same continuous aggregate, improving behavior for concurrent workloads.
12
12
***Vectorized execution now covers `CASE` expressions.** TimescaleDB's columnar executor can now evaluate `CASE ... WHEN` expressions directly on compressed data, so queries using conditional logic stay on the fast vectorized path instead of falling back to slower row-by-row decompression. This speeds up a common pattern — conditional aggregations and computed columns over compressed history — with no query changes needed.
13
13
***Add new aggregations to a continuous aggregate without rebuilding it.** You can now run `ALTER MATERIALIZED VIEW <cagg> ADD COLUMN <name> <type> GENERATED ALWAYS AS (<aggregate>) STORED` to add a new computed aggregate to an existing continuous aggregate in place — no more dropping and recreating the whole aggregate just to track one more metric. New data populates the column going forward, letting your rollups evolve alongside your application. (Existing rows start as `NULL`; a forced refresh backfills them when you need historical values.)
14
14
@@ -52,9 +52,13 @@ Please note that the `_timescaledb_catalog.chunk_constraint` table has been drop
52
52
*[#9967](https://github.com/timescale/timescaledb/pull/9967) Block upgrade after downgrade with first/last indexes present
53
53
*[#9976](https://github.com/timescale/timescaledb/pull/9976) Fix wrong results when comparing a date column to a `timestamptz` value
54
54
*[#9977](https://github.com/timescale/timescaledb/pull/9977) Fix `COPY WHERE` into a hypertable with dropped columns
55
+
*[#9981](https://github.com/timescale/timescaledb/pull/9981) Fix set-returning functions in the sort key of `ColumnarScan`
55
56
*[#9982](https://github.com/timescale/timescaledb/pull/9982) Reject `ALTER TABLE ... INHERIT` when the parent is a hypertable
56
57
*[#9984](https://github.com/timescale/timescaledb/pull/9984) Fix handling of `NOT VALID NOT NULL` constraint for query optimization
58
+
*[#9986](https://github.com/timescale/timescaledb/pull/9986) Handle `MERGE WHEN NOT MATCHED BY SOURCE` on hypertables
57
59
*[#9988](https://github.com/timescale/timescaledb/pull/9988) Fix `time_bucket_gapfill` function detection
60
+
*[#10003](https://github.com/timescale/timescaledb/pull/10003) Block unsafe updates of unique columns on compressed chunks
61
+
*[#10025](https://github.com/timescale/timescaledb/pull/10025) Fix rename on compressed continuous aggregates
58
62
59
63
**New Settings**
60
64
*`skip_cagg_invalidation`: skip continuous aggregate invalidation tracking for DML and DDL in the current session/transaction. Off by default.
0 commit comments