Skip to content

Record the projection, vectorized aggregate and planner wave in the changelog (#367) - #372

Merged
jdatcmd merged 1 commit into
mainfrom
docs/changelog-alpha-wave
Aug 4, 2026
Merged

Record the projection, vectorized aggregate and planner wave in the changelog (#367)#372
jdatcmd merged 1 commit into
mainfrom
docs/changelog-alpha-wave

Conversation

@jdatcmd

@jdatcmd jdatcmd commented Aug 4, 2026

Copy link
Copy Markdown
Owner

What

Part of the 1.0-alpha checklist (#367), the CHANGELOG item I took.

The changelog stopped at #330. Everything from #321 onward was unrecorded:

unrecorded user-visible?
column projection (#339) yes, on by default
enable_index_fetch_penalty (#355) yes, on by default
enable_ungrouped_vector_agg (#337) yes, off by default
enable_parallel_vector_agg (#343, #346, #366) yes, off by default
enable_group_vectorization (#321), groupagg_max_groups yes, off by default
fetch cache cliff to proportional overflow (#353, #359) no, performance
penalty ordering and the two defects with it (#362) no, plan choice
grouped aggregate costing (#349), fold scan-key pushdown (#349) no, plan choice

Two of those are on by default, so an alpha shipping without them documented
would change behaviour for every install with no record of it.

What the entries say

Written in the existing style: prose, issue references, measured numbers rather
than adjectives.

The projection entry gives the 6.9x headline and the grouped-shape numbers
(1.24x, 1.13x, 3.13x), because the 6.9x does not generalise and #349's thread is
the record of someone generalising it.

The vectorized aggregate entry says plainly why they are still off by default:
plan selection is not settled, and an expression grouping key can decline the
parallel path on a group estimate that is 25-42x wrong (#369). That is a known
limitation a reader should get from the changelog rather than the tracker.

Not included

VERSION still reads 1.0-dev and [Unreleased] is still [Unreleased]. I am
not cutting the version while the checklist has open items (benchmarks re-measure,
docs accuracy pass, #363, #364). That is a separate commit once #367 clears.

Verification

test/docs_style.sh checks CHANGELOG.md for em and en dashes; the file has zero.
No code changes, so no matrix run is implied by this PR. The full five-major
matrix is running separately against 488a2c0 and will be reported on #367.

🤖 Generated with Claude Code

)

The changelog stopped at #330. Everything from #321 onward was unrecorded:
column projection, all four vectorized aggregate settings, the index-fetch
cost model, and the fetch cache work. For an alpha that is the wrong gap to
have, since three of those are user-visible settings and one of them
(#339 column projection, and #355 index-fetch penalty) is on by default.

Added: column projection with its measured gains and the honest note that
grouped shapes gain far less than the headline 6.9x; the three vectorized
aggregate GUCs with why they remain off by default, pointing at #369; and
enable_index_fetch_penalty with what it prices and how to turn it off.

Changed: the fetch cache going from a cliff to a proportional overflow
(#353, #359), the penalty ordering fix and the two defects found with it
(#362), the grouped aggregate costing (#349), and the fold's scan-key
pushdown (#349).

No em or en dashes, per test/docs_style.sh.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@ChronicallyJD ChronicallyJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed. The entries are accurate, the style matches, and putting the two
default-on changes at the top is the right call — an alpha that changed behaviour for
every install without a record would be the worst kind of quiet.

Two corrections, both on numbers I produced, so the error is mine to flag.

1. The 224-second figure attributes #361's improvement to #362

The planner chose an index scan it priced at 13,954,742 over a columnar path it
priced at 589,348, running 224 seconds where the columnar path runs 4.7.

Those are my numbers and they are real, but 224 s was measured before #361 merged.
#361 is in this same release, and it cut that plan by 12x on its own. Measured on the
100M fixture:

build plan chosen time
1d90693 (pre-#361) Index Scan 224,055 ms
cd06471 (with #361, without #362's fix) Index Scan 18,439 ms
with the #362 fix Parallel Custom Scan 4,903 ms

A reader of the 1.0-alpha changelog is on a build that has both. What they get from
the penalty-ordering fix is 18.4 s → 4.9 s, 3.8x — not 224 s → 4.7 s. Quoting the
pre-#361 number in an entry for a release containing #361 credits one fix with the
other's win.

Suggested: "running 18.4 seconds where the columnar path runs 4.9" and, if you want
the drama, a clause noting the same plan cost 224 s before #359's cache fix landed in
this release. Both numbers are honest; the pairing is what misleads.

I made the same mistake on #365's PR body and corrected it there, so this is me
catching my own framing a second time rather than yours.

2. "costs the overflow fraction rather than everything" has a measured limit

True on the shapes #359 targets. It does not hold on wide varlena tables, and #364 has
the numbers: 150,000 rows x 60 text columns gives 1.14x (127,699 ms against
145,132 ms), because the retained position indexes alone exceed the cap and nearly
every column overflows anyway.

That is not an argument against the entry — the change is a clear improvement — but
"rather than everything" reads as a general property and it is a property of the
common case. You gave #369 exactly this treatment in the vectorization entry ("these
remain off by default because plan selection is not settled"), and this deserves the
same sentence: something like "on tables of many wide varlena columns the retained
position indexes can exceed the cap on their own, and the gain is much smaller
(#364)."

#370 corrects the design doc and the code comment for the same claim; the changelog is
the third place it appears.

Nothing else

The #349 costing entry, the scan-key pushdown entry and the #369 caveat all match what
I measured independently. The projection entry giving the grouped numbers next to the
6.9x headline is the right instinct — the 6.9x is the number that would otherwise get
quoted alone.

Happy to approve once the 224 s pairing is addressed. I am not blocking on point 2 if
you would rather keep the entry short, though I think it is worth the sentence.

@jdatcmd
jdatcmd merged commit 0e22165 into main Aug 4, 2026
11 checks passed
@jdatcmd
jdatcmd deleted the docs/changelog-alpha-wave branch August 4, 2026 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants