Re: Fix bug in multixact Oldest*MXactId initialization and access - Mailing list pgsql-hackers

From Sami Imseih
Subject Re: Fix bug in multixact Oldest*MXactId initialization and access
Date
Msg-id CAA5RZ0tdL=3FJu593ukrk-SyqSd_DGHaOZEWo5uciQFxv2mSEg@mail.gmail.com
Whole thread
In response to Re: Fix bug in multixact Oldest*MXactId initialization and access  (Yura Sokolov <y.sokolov@postgrespro.ru>)
List pgsql-hackers
Hi.

> All accesses are validated with asserts certainly.

Maybe I am missing something, but the extra asserts and wrapper
functions being proposed seem unnecessary for this purpose.
We know the total number of procs, so we just need to make this
available to all code paths that need to index by pgprocno.

If that calculation ever changes, code like multixact.c will not
need to care.

This can be done, as mentioned earlier, by defining the total
number of procs in proc.h, which can then be used by both
multixact.c and InitProcGlobal.

```
#define TOTAL_PROCS (MaxBackends + NUM_AUXILIARY_PROCS + max_prepared_xacts)
```

and to calculate where the prepared transaction procs start:

```
PreparedXactProcs = &procs[TOTAL_PROCS - max_prepared_xacts];
```

What do you think?

With regards to v3, I got a compilation warning that `GetOldestVisibleMXactId`
is an unused function.

--
Sami Imseih
Amazon Web Services (AWS)



pgsql-hackers by date:

Previous
From: Zsolt Parragi
Date:
Subject: Re: Hash-based MCV matching for large IN-lists
Next
From: Tom Lane
Date:
Subject: Fixing grouping expressions inside subqueries