Re: pg_plan_advice
Dian Fay <di@nmfay.com>
From: "Dian Fay" <di@nmfay.com>
To: "Robert Haas" <robertmhaas@gmail.com>
Cc: "Matheus Alcantara" <matheusssilv97@gmail.com>, "Jakub Wartak"
<jakub.wartak@enterprisedb.com>, "PostgreSQL Hackers"
<pgsql-hackers@lists.postgresql.org>
Date: 2025-11-30T03:16:44Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add pg_plan_advice contrib module.
- 5883ff30b02c 19 (unreleased) landed
-
Store information about Append node consolidation in the final plan.
- 7358abcc6076 19 (unreleased) landed
-
Store information about elided nodes in the final plan.
- 0d4391b265f8 19 (unreleased) landed
-
Store information about range-table flattening in the final plan.
- adbad833f3d9 19 (unreleased) landed
-
Allow for plugin control over path generation strategies.
- 4020b370f214 19 (unreleased) landed
-
Allow passing a pointer to GetNamedDSMSegment()'s init callback.
- 48d4a1423d2e 19 (unreleased) cited
-
Don't reset the pathlist of partitioned joinrels.
- 014f9a831a32 19 (unreleased) cited
On Mon Nov 24, 2025 at 11:14 AM EST, Robert Haas wrote: > On Sat, Nov 22, 2025 at 7:43 PM Dian Fay <di@nmfay.com> wrote: >> Since the policies don't contain any execution boundaries, all the quals >> should be going into a single bucket for planning if I understand the >> process correctly. The bitmap heap scan should be a candidate given the >> `tags &&` predicate (and indeed if I switch to a privileged role, the >> advice matches successfully without any policies in the mix), but gdb >> shows the walker bouncing out of pgpa_walker_contains_scan without any >> candidate scans for the BITMAP_HEAP_SCAN strategy. > > In this particular case, I think the problem is that the user-supplied > qual item.tags @> ARRAY[id] is not leakproof and therefore must be > tested after the security qual. There's no way to use a Bitmap Heap > Scan without reversing the order of those tests. Right, I keep forgetting the functions underneath those array operators aren't leakproof. Thanks for digging. > And honestly, this is one of the things I'm worried about if we go > forward with this, that we'll get a ton of people who think it doesn't > work because it doesn't force the planner to do things which the > planner rejects on non-cost considerations. We're going to need really > good documentation to explain to people that if you use this to try to > force a plan and you can't, that's not a bug, that's the planner > telling you that that plan shape is not able to be considered for some > reason. Once we're closer to consensus on pg_plan_advice or something like it landing, I'm interested in helping out on this end of things!