Pre-PG18 parallel scan estimation: accessing planned worker count from amestimateparallelscan() - Mailing list pgsql-general

From Sivaprasad
Subject Pre-PG18 parallel scan estimation: accessing planned worker count from amestimateparallelscan()
Date
Msg-id CAHi-N2Fqs=7vUfNzDopsNnxB145kOz7FAOXofxw=gFSqaG_vrw@mail.gmail.com
Whole thread
Responses Re: Pre-PG18 parallel scan estimation: accessing planned worker count from amestimateparallelscan()
List pgsql-general

Hello,

While adding parallel scan support to the Biscuit index access method, I ran into a question about the pre-PG18 parallel scan API.

Biscuit partitions scan work into a fixed number of segments at estimation time and assigns those segments to parallel participants via a shared-memory descriptor in the DSM segment. Because the segment layout depends on the number of participants, we need the planned worker count during amestimateparallelscan() — the only callback that both sizes the DSM allocation and runs in the same process immediately before aminitparallelscan().

The callback signatures across versions are:

    • PG16: Size (*)(void)

    • PG17: Size (*)(int nkeys, int norderbys)

    • PG18+: Size (*)(Relation, int nworkers, int nchunks)


    In PG18+, nworkers is available directly. In PG16 and PG17 it is not.

    My question: prior to PG18, was there any supported mechanism by which an index AM could determine the planner's intended parallel worker count during scan estimation? 

    Thanks,
    Sivaprasad Murali
    Biscuit index access method

pgsql-general by date:

Previous
From: Joan Frey
Date:
Subject: Re: PostgreSQL server with SSL
Next
From: Peter Geoghegan
Date:
Subject: Re: Pre-PG18 parallel scan estimation: accessing planned worker count from amestimateparallelscan()