Repurpose PROC_COPYABLE_FLAGS as PROC_XMIN_FLAGS

This is a slight, convenient semantics change from what commit
0f0cfb4940 ("Fix parallel operations that prevent oldest xmin from
advancing") introduced that lets us simplify the coding in the one place
where it is used.

Backpatch to 13.  This is related to commit 6fea65508a ("Tighten
ComputeXidHorizons' handling of walsenders") rewriting the code site
where this is used, which has not yet been backpatched, but it may well
be in the future.

Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
Discussion: https://postgr.es/m/202204191637.eldwa2exvguw@alvherre.pgsql
pull/106/head
Alvaro Herrera 3 years ago
parent 5139db5563
commit 5fd0cccc11
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
  1. 11
      src/backend/storage/ipc/procarray.c
  2. 7
      src/include/storage/proc.h

@ -1916,12 +1916,13 @@ ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc)
TransactionIdIsNormal(xid) &&
TransactionIdPrecedesOrEquals(xid, xmin))
{
/* Install xmin */
/*
* Install xmin and propagate the vacuumFlags that affect how the
* value is interpreted by vacuum.
*/
MyPgXact->xmin = TransactionXmin = xmin;
/* Flags being copied must be valid copy-able flags. */
Assert((pgxact->vacuumFlags & (~PROC_COPYABLE_FLAGS)) == 0);
MyPgXact->vacuumFlags = pgxact->vacuumFlags;
MyPgXact->vacuumFlags = (MyPgXact->vacuumFlags & ~PROC_XMIN_FLAGS) |
(pgxact->vacuumFlags & PROC_XMIN_FLAGS);
result = true;
}

@ -63,11 +63,10 @@ struct XidCache
(PROC_IN_VACUUM | PROC_IN_ANALYZE | PROC_VACUUM_FOR_WRAPAROUND)
/*
* Flags that are valid to copy from another proc, the parallel leader
* process in practice. Currently, a flag that is set during parallel
* vacuum is allowed.
* Xmin-related flags. Make sure any flags that affect how the process' Xmin
* value is interpreted by VACUUM are included here.
*/
#define PROC_COPYABLE_FLAGS (PROC_IN_VACUUM)
#define PROC_XMIN_FLAGS (PROC_IN_VACUUM)
/*
* We allow a small number of "weak" relation locks (AccessShareLock,

Loading…
Cancel
Save