Re: [Proposal] Expose internal MultiXact member count function for efficient monitoring

torikoshia <torikoshia@oss.nttdata.com>

From: torikoshia <torikoshia@oss.nttdata.com>
To: Naga Appani <nagnrik@gmail.com>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Michael Paquier <michael@paquier.xyz>, Kirill Reshke <reshkekirill@gmail.com>, pgsql-hackers@postgresql.org
Date: 2025-10-17T00:28:28Z
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 →
  1. Add pg_get_multixact_stats()

  2. Add MultiXactOffsetStorageSize() to multixact_internal.h

  3. Change GetMultiXactInfo() to return the next multixact offset

  4. Widen MultiXactOffset to 64 bits

  5. Refactor ReadMultiXactCounts() into GetMultiXactInfo()

  6. Move SQL-callable code related to multixacts into its own file

  7. Split func.sgml into more manageable pieces

On 2025-09-15 14:47, Naga Appani wrote:

> With these updates in v9, I believe the patch is now in good shape to
> be marked RFC. I’ll go ahead and update the CommitFest entry.

As shown in the commitfest app, v9 patch fails to build:

   multixactfuncs.c:129:28: error: call to undeclared function 
'heap_form_tuple'; ISO C99 and later do not support implicit function 
declarations [-Wimplicit-function-declaration]
   129 |                 return 
HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls));
       |                                          ^
   multixactfuncs.c:129:28: note: did you mean 'brin_form_tuple'?
../../../../src/include/access/brin_tuple.h:96:19: note: 
'brin_form_tuple' declared here
    96 | extern BrinTuple *brin_form_tuple(BrinDesc *brdesc, BlockNumber 
blkno,
       |                   ^
   multixactfuncs.c:129:28: error: incompatible integer to pointer 
conversion passing 'int' to parameter of type 'const HeapTupleData *' 
(aka 'const struct HeapTupleData *') [-Wint-conversion]
   129 |                 return 
HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls));
       |                                          
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ../../../../src/include/funcapi.h:230:40: note: passing argument to 
parameter 'tuple' here
   230 | HeapTupleGetDatum(const HeapTupleData *tuple)
       |                                        ^
   2 errors generated.

Could you please update the patch to fix this?


-- 
Regards,

--
Atsushi Torikoshi
Seconded from NTT DATA Japan Corporation to SRA OSS K.K.