| From: | Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com> |
|---|---|
| To: | Tomas Vondra <tomas(at)vondra(dot)me> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Tighten asserts on ParallelWorkerNumber a little bit |
| Date: | 2026-03-13 10:53:29 |
| Message-ID: | abPsqcdVKcaK3XNS@ip-10-97-1-34.eu-west-3.compute.internal |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
On Thu, Mar 12, 2026 at 07:59:43PM +0100, Tomas Vondra wrote:
> Hi,
>
> While hacking on something I happened to notice a couple asserts on
> ParallelWorkerNumber when collecting shared instrumentation:
>
> Assert(ParallelWorkerNumber <= node->shared_info->num_workers);
>
> This is not quire right, because num_workers is used to size arrays
> indexed by ParallelWorkerNumber. And the comment in parallel.c also
> claims (ParallelWorkerNumber < num_workers).
>
> So AFAICS the assert(s) should be
>
> Assert(ParallelWorkerNumber < node->shared_info->num_workers);
I think that you're right. It looks like the first one has been introduced
by bf11e7ee2e3 and then the others are probably copy/paste.
> I don't think we had issues with this not catching a bug. But it may be
> a bit misleading, so worth fixing and (probably) backpatching.
I do agree.
With that patch applied, the remaining one:
$ git grep "<=.*num_workers"
src/backend/executor/nodeGatherMerge.c: Assert(nreaders <= castNode(GatherMerge, gm_state->ps.plan)->num_workers);
does not need to be fixed, so I think that your patch does not miss any and
LGTM.
Regards,
--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Aleksander Alekseev | 2026-03-13 10:55:44 | Re: Define DatumGetInt8 function. |
| Previous Message | Peter Eisentraut | 2026-03-13 10:43:15 | Re: Change copyObject() to use typeof_unqual |