Re: Refactor function pg_get_multixact_stats (src/backend/utils/adt/multixactfuncs.c) - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: Refactor function pg_get_multixact_stats (src/backend/utils/adt/multixactfuncs.c)
Date
Msg-id CAEudQAotZH5xiFQ_iW9Op4T8BT=J+DEb+JOhBN9hoRMKFo2A-Q@mail.gmail.com
Whole thread
In response to Re: Refactor function pg_get_multixact_stats (src/backend/utils/adt/multixactfuncs.c)  (Michael Paquier <michael@paquier.xyz>)
Responses Re: Refactor function pg_get_multixact_stats (src/backend/utils/adt/multixactfuncs.c)
List pgsql-hackers
Hi Michael.

Em qua., 1 de jul. de 2026 às 00:18, Michael Paquier <michael@paquier.xyz> escreveu:
On Tue, Jun 30, 2026 at 09:23:20AM -0300, Ranier Vilela wrote:
> Move the GetMultiXactInfo() call and the resulting computations
> into the branch where the values are actually consumed, narrowing
> the scope of the related local variables to that branch.  This
> matches the usual pattern for privileged stats functions, which
> skip the underlying work entirely for callers who can't see the
> result, and avoids touching shared MultiXact state when there is no
> caller around to observe it.

That's indeed wasteful, so applied as it is my business.
Thanks for the commit. 

> While here, size the memset() that NULLs the output row off
> sizeof(nulls) rather than *sizeof(bool) * tupdesc->natts*.
> The two are equivalent today, since nulls is a fixed 4-element array
> matching the function's declared return type, but relying the
> memset() with *natts* is an unnecessary dependency.
> If a column were ever added to the function's SQL definition without a
> matching update to this array, the old code would silently write
> past the end of nulls.

But I left this one out.  It's really impossible to miss.
I can send a separate patch.
What do you think?

best regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Andrei Lepikhov
Date:
Subject: Re: RFC: Logging plan of the running query
Next
From: Michael Paquier
Date:
Subject: Re: Refactor function pg_get_multixact_stats (src/backend/utils/adt/multixactfuncs.c)