Product1 distinct publisher3 min readPublished
The new DeferredChunkAppend node leaves a hypertable unexpanded until execution, so planning time no longer grows with chunk count. The same release drops PostgreSQL 15, which puts that payoff behind a database upgrade.
The Product Desk · Product desk

Compiled by The Product DeskSomething wrong?How this is made
The query is the one sitting behind every "current status" tile: latest reading for one device, `ORDER BY time DESC LIMIT 1`, one index scan against the newest chunk, which already has an index on device and time [3]. On a hypertable with a few thousand chunks, TimescaleDB says that query can take tens or hundreds of milliseconds to hand back that single row, and nearly all of it is planning rather than execution [4].
The `LIMIT` does not rescue the planner because the planner cannot trust it. The newest chunk might be empty, or every row in it might fail a filter on a column that is not a dimension, in which case the answer sits in an older chunk and a correct plan has to be able to reach it [10]. Only plan-time pruning takes a chunk out of the plan, and pruning needs a dimension constraint that folds to a constant while planning happens [12]. A predicate on `device` is not one of those.
This is also why `EXPLAIN ANALYZE` has been reassuring in a misleading way. ChunkAppend already visited chunks newest-first, stopped after the first, and printed "never executed" against the rest [11]. What it skipped was the scanning. The executor still set up every chunk's slice of the plan at startup, so chunk count was charged twice, once in planning and once in executor startup [13].
The vendor's fleet number is worth doing the arithmetic on. 1,000 CPU hours a day, divided by 24, is roughly 42 cores doing nothing but planning these queries around the clock [16], or more than 365,000 CPU hours a year [17]. The fix is DeferredChunkAppend, which pulls chunks lazily at execution in the order the query requires, in time order when there is an `ORDER BY` on the time dimension and newest-first when there is not, stopping once the `LIMIT` is met [15]. The post is headlined 14,000x faster planning [2]; the portion explaining the mechanism does not publish the chunk count or workload behind that multiple [19], so it is a best case, not a forecast for your cluster.
Two things decide whether this is urgent. The first is whether the slow query can carry a time predicate at all: `WHERE time > now() - interval '1 hour'` expands only the matching chunks, on whatever version you are running today [7]. The second is the PostgreSQL major version, because 2.28 ends PostgreSQL 15 support [1], and a PG15 cluster therefore cannot get DeferredChunkAppend until the database itself is upgraded [18].
That gives four boxes. Predicate possible, PG16 or later: rewrite the query and treat 2.28 as ordinary maintenance. Predicate possible, PG15: same rewrite, and the version upgrade can be planned at a human pace. Predicate impossible, PG16 or later: this release is the whole point, and it costs a minor bump. Predicate impossible, PG15: the awkward corner, and the honest way in is to run `EXPLAIN ANALYZE` on the offending query first and read planning time against execution time [4]. If planning is a small share of the wall clock, chunk count is not what is hurting you, and 2.28 becomes a deadline to manage rather than a fix to chase.
Ranked by verification strength, evidence, and original report placement.
TimescaleDB 2.28 adds schema evolution for continuous aggregates, lighter refreshes, faster compressed queries, and ends PostgreSQL 15 support.
The example query is SELECT * FROM metrics WHERE device = 'D001' ORDER BY time DESC LIMIT 1; the row lives in the newest chunk, that chunk has an index on device and time, and reading it is one index scan.
On a hypertable with a few thousand chunks the query can take tens or hundreds of milliseconds before it returns anything, and nearly all of that time is spent planning rather than executing.
Planning time scales linearly with the number of chunks, and gets worse as the table grows, even though the query still only reads a single row.
TimescaleDB says that across the Tiger Cloud fleet it spends over 1,000 CPU hours every day planning ORDER BY time LIMIT-style queries.
TimescaleDB prunes chunks before expanding them, using dimension metadata in its catalog to determine which chunks the WHERE clause can touch; a query like WHERE time > now() - interval '1 hour' only expands the chunks matching the constraint.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 27, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
product
One dashboard, two answers: 41,900 units, then 43,100, with no code change1 distinct publisher
build
RLS Is a Planner Problem: One VOLATILE Function Turns a 3ms Index Scan Into 1.8 Seconds1 distinct publisher
build
Notion's agent stack is live, not slideware, and it only changes one of your decisions1 distinct publisher
build
The 680 MB database that was really a 17 GB disk: self-hosted support platforms fail at month six1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed mechanism, unmeasured outcome
The causal account is specific and internally checkable: per-chunk open/lock/statistics cost, plan-time versus run-time exclusion, executor-startup duplication, the flattened plan shape, and explicit eligibility limits. But the supplied text contains no benchmark table, chunk count, workload description, or after-state measurement, and the only quantified outcome is the headline multiple that the body never substantiates. Everything comes from one self-published source with no independent corroboration.
Shipped release, vendor-fleet evidence only
Adoption evidence is limited to the release itself plus the vendor's own fleet usage disclosure, which shows the problem is widespread across hosted workloads but says nothing about uptake of the new node. No third-party deployments, user reports, or version-adoption figures appear, and the simultaneous end of PostgreSQL 15 support adds a prerequisite that slows uptake for part of the installed base.
Headline outruns supplied proof
The mechanism claim — planning no longer grows with chunk count — is well argued and plausibly understated in importance, but the framing attaches a precise 14,000x multiple that nothing in the supplied text measures, and the post does not foreground that the improvement is gated behind a PostgreSQL major-version upgrade. That asymmetry between a specific advertised number and absent measurement puts the story moderately on the overstated side.
Vendor promoting its own release and cloud
The single source is the product vendor's own blog, announcing its own release, citing its own managed-cloud fleet as the cost evidence, and headlining a speedup figure it does not substantiate in the supplied text. There is no independent verification, adversarial review, or competing account in the cluster to offset that alignment of interest.
Mechanism credible, magnitude and uptake unknown
High confidence that the described planning cost and the new node's plan shape are real, because the account is specific, falsifiable with EXPLAIN, and consistent with PostgreSQL inheritance-expansion behavior. Low confidence in the advertised magnitude, in real-world latency and CPU gains, and in adoption, given one self-interested source, no measurement, and no external corroboration.