| From: | Sami Imseih <samimseih(at)gmail(dot)com> |
|---|---|
| To: | Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru> |
| Cc: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Andres Freund <andres(at)anarazel(dot)de>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
| Subject: | Re: Fix bug in multixact Oldest*MXactId initialization and access |
| Date: | 2026-02-25 21:53:09 |
| Message-ID: | CAA5RZ0tdL=3FJu593ukrk-SyqSd_DGHaOZEWo5uciQFxv2mSEg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2026-02-25 22:32:11 | Fixing grouping expressions inside subqueries |
| Previous Message | Zsolt Parragi | 2026-02-25 21:39:05 | Re: Hash-based MCV matching for large IN-lists |