Re: Adding skip scan (including MDAM style range skip scan) to nbtree
Tomas Vondra <tomas@vondra.me>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
nbtree: Always set skipScan flag on rescan.
- 454c046094ab 19 (unreleased) landed
- bee763aea13f 18.0 landed
-
meson: Build numeric.c with -ftree-vectorize.
- 9016fa7e3bcd 19 (unreleased) cited
-
Fix "variable not found in subplan target lists" in semijoin de-duplication.
- b8a1bdc458e3 19 (unreleased) cited
-
Revert "nbtree: Remove useless row compare arg."
- dd2ce3792754 18.0 landed
-
nbtree: Remove useless row compare arg.
- 54c6ea8c81db 18.0 cited
-
Prevent premature nbtree array advancement.
- 5f4d98d4f371 18.0 landed
-
nbtree: tighten up array recheck rules.
- 7e25c9363a82 18.0 landed
-
Avoid treating nonrequired nbtree keys as required.
- 0f08df406822 18.0 landed
-
Adjust overstrong nbtree skip array assertion.
- 9d924dbb3710 18.0 landed
-
Make NULL tuple values always advance skip arrays.
- b75fedcab791 18.0 cited
-
Avoid extra index searches through preprocessing.
- b3f1a13f22f9 18.0 landed
-
Improve nbtree skip scan primitive scan scheduling.
- 21a152b37f36 18.0 landed
-
Further optimize nbtree search scan key comparisons.
- 8a510275dd6b 18.0 landed
-
Add nbtree skip scan optimization.
- 92fe23d93aa3 18.0 landed
-
Improve nbtree array primitive scan scheduling.
- 9a2e2a285a14 18.0 landed
-
nbtree: Make BTMaxItemSize into object-like macro.
- 426ea611171d 18.0 landed
-
Show index search count in EXPLAIN ANALYZE, take 2.
- 0fbceae841cb 18.0 landed
-
Make parallel nbtree index scans use an LWLock.
- 67fc4c9fd7fa 18.0 landed
-
Show index search count in EXPLAIN ANALYZE.
- 5ead85fbc811 18.0 landed
-
Avoid nbtree parallel scan currPos confusion.
- b5ee4e52026b 18.0 cited
-
nbtree: Remove useless 'strat' local variable.
- b6558e4f837e 18.0 landed
-
Normalize nbtree truncated high key array behavior.
- 79fa7b3b1a44 18.0 landed
-
Refactor handling of nbtree array redundancies.
- b524974106ac 18.0 landed
-
Fix nbtree pgstats accounting with parallel scans.
- c00c54a9ac1e 18.0 landed
- fb4f5e58af97 17.0 landed
-
Avoid parallel nbtree index scan hangs with SAOPs.
- d8adfc18bebf 18.0 landed
- a24bffc021d9 17.0 landed
-
Show Parallel Bitmap Heap Scan worker stats in EXPLAIN ANALYZE
- 5a1e6df3b84c 18.0 cited
-
Enhance nbtree ScalarArrayOp execution.
- 5bf748b86bc6 17.0 cited
-
Skip checking of scan keys required for directional scan in B-tree
- e0b1ee17dc3a 17.0 cited
-
Instead of using a numberOfRequiredKeys count to distinguish required
- 7ccaf13a06b8 8.2.0 cited
On 8/29/25 10:38, Matthias van de Meent wrote: > Hi, > > On Thu, 22 May 2025 at 19:57, Matthias van de Meent > <boekewurm+postgres@gmail.com> wrote: >> >> On Tue, 20 May 2025, 22:14 Peter Geoghegan, <pg@bowt.ie> wrote: >>> >>> On Mon, May 12, 2025 at 8:58 AM Peter Geoghegan <pg@bowt.ie> wrote: >>>> I wonder if we can fix this problem by getting rid of the old support >>>> routine #5, "options". It currently doesn't do anything, and I always >>>> thought it was strange that it was added "for uniformity" with other >>>> index AMs. >>> >>> Attached patch completely removes the nbtree "options" support >>> function, while changing the support function number of skip support: >>> it becomes support function #5 (the number previously used by >>> "options"). This patch should fix the regression that Tomas complained >>> about in an expedient way. >>> >>> It's likely that somebody else will run into the same problem in the >>> future, the next time that a new support function is needed. But I >>> think that it makes sense to do this much now -- we need a short term >>> solution for Postgres 18. > > I just realized I hadn't checked in on this in a while, and I haven't > seen Peter's patch get committed, nor my 0001. Do we consider this an > Open Item and should this be improved in PG18, or is this something > the user is expected to figure out and configure their systems for? > > If we want to fix it let's make a decision before RC1, so we don't > have further breaking catalog changes between RC1 and 18.0. > The thing is that if we want to make this to RC1, it needs to go in *today*. The RC1 is planned for next week, and there's a freeze starting tomorrow. > cc-ed RMT as this might be Open Item-worthy, and the patches up for > debate both change catalog behaviour. > I agree with this, personally. Maybe the other RMT members will see it differently, but it's probably to add an open item and then remove it than miss an issue. > Peter's patch at [0] changes opclass procedure numbers to reuse an > existing but unused options regproc number. > My 0001 at [1] changes the memory residence status of index access > methods' handler_function output to const static, from dynamic in > memctx. > IIRC both approaches address the issue. I'd go with Peter's patch for 18. The other patch is much more invasive / bigger, and we're right before RC1 freeze. Maybe it's a good idea, but I'd say it's for 19. Peter, any thoughts on this. Do you think it's reasonable / feasible to push the fix? regards -- Tomas Vondra