Skip to content

1.0-alpha: shared checklist of what is left, and who has it #367

Description

@ChronicallyJD

Opening this as a shared checklist for 1.0-alpha so we are not each holding a
different list. It is a proposal — correct it. I have put what I can see from the
tracker and the roadmap, marked what I am taking, and left the judgement calls to you.

VERSION is 1.0-dev and there are no milestones, so nothing here is inferred from
release metadata.

Open bugs

# what owner state
#362 the fetch penalty could not change a plan me #365 open, bench-validated, see below
#363 cost model sizes the decode from emitted columns, not the decoded prefix me not started, sequenced behind #365 (same function)
#364 #361's cache is not bounded by 4x the cap; 62 MB entry, 1.14x me fix built, clean on all five majors, measuring now
#349 grouped aggregates get none of the vectorized work you #366 open
#358 q5 1.73x slower with the vectorization GUCs on you open, unclaimed

#358 is the one I would not ship an alpha over. It is a 3.4x contradiction between
two runs of the same shape, the GUCs involved are mine, and the issue itself says the
plans were never captured. It is off by default so it blocks nothing functionally, but
"we have a measurement we cannot explain in the vectorized aggregate path" is an
uncomfortable thing to have open at a release. Happy to take it — it wants
EXPLAIN (ANALYZE) per arm with the three GUCs varied one at a time, which is a
morning's work on the bench, not a design question.

Benchmarks and docs

docs/benchmarks.md needs a full re-measure before alpha and I am taking it.
Everything under it moved today: #350 (grouped agg costing), #354 (scan-key pushdown),
#357 (decode scratch), #361 (partial fetch cache), and #365 pending. Numbers taken
before that wave do not describe current main.

Scope I am proposing for that pass:

One thing to check on whichever host produces the published table: make sure the
columnar table and its heap twin carry the same indexes.
On my box cpu_heap had
(hostname, time DESC) and cpu_pgc had none, which would quietly bias a
cross-engine comparison in the heap's favour on any indexed shape. I have rebuilt it
on mine. Not a claim about yours — just the check I wish I had run first.

What I think is left beyond that

Low confidence, and this is the part I most want your correction on:

  • Docs accuracy pass. docs/limitations.md and docs/configuration.md against
    what actually shipped in the last two weeks — the GUC list alone has grown a lot.
  • CHANGELOG and VERSION. Everything is under [Unreleased]; alpha presumably
    cuts that.
  • Anything in design/gaps/ you consider alpha-blocking rather than post-alpha. From
    the roadmap's "Remaining" section I cannot tell which of those you would hold a
    release for, and I would rather ask than guess.

Not proposing

I am not proposing we hold alpha for #363 or #364. Both are real, both are mine, and
both are narrow: #363 is a mis-costing that makes the planner under-penalize a shape
it already handles, and #364 is a memory bound on wide varlena tables that is better
than the pre-#361 behaviour on time. If you disagree on either, say so and I will
reorder.

#365, since it gates the rest

Bench-validated on the 100M fixture and it needed a second commit to be honest: the
first version flipped the plan off the index scan as designed, but onto the serial
columnar path (25.3 s) rather than the parallel one (4.6 s), because the partial
columnar path was conditional on a seqscan surviving add_path — which is exactly
what does not survive on a selective query. Same root cause as #362 one level up.
Fixed in the branch; re-measuring now and I will post the numbers there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions