Skip to main content
See GitHub release: v0.25.10

Performance Improvements ๐Ÿš€

  • Top-K searches over a common phrase, or over a regex combined with another filter, plan parallel workers again. Their estimated scan cost collapsed to near zero, so the planner read them as cheap enough for a single core.

Stability Improvements ๐Ÿ’ช

  • Fixed the join scan dropping rows after a HOT update and a VACUUM. The index keeps the HOT root, VACUUM prunes that root into a redirect line pointer, and the scanโ€™s final heap fetch stopped at the redirect instead of following the chain to the visible row (#6375).
  • A query that reads a JSON path now returns NULL for a segment whose documents never carry that key, instead of failing with `metadata.brand` is missing or is not configured as columnar. A segment writes a column for a JSON path only when one of its documents has the key, so a row inserted after CREATE INDEX without the key used to break the scan (#6363).
  • Fixed wrong results for SUM, AVG, MIN and MAX over COALESCE(field, default) when the column canโ€™t hold the default exactly, such as a fraction on an integer column, a negative value on a JSON sub-field, or NaN. Postgres now runs these aggregates, also as window aggregates in top K queries. COUNT(COALESCE(field, default)) now counts every row, also over string columns (#6353).