summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2022-05-19 16:20:32 +0200
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2022-05-19 16:20:32 +0200
commit5fd0cccc116b248be615f5a7cd35b5d46c0589d1 (patch)
tree8a3e0be2b512fc5eedbee31057cb27af32917f09
parent5139db55636bc39c06232ada1b195f7d5d6950e0 (diff)
Repurpose PROC_COPYABLE_FLAGS as PROC_XMIN_FLAGS
This is a slight, convenient semantics change from what commit 0f0cfb494004 ("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 6fea65508a1a ("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
-rw-r--r--src/backend/storage/ipc/procarray.c11
-rw-r--r--src/include/storage/proc.h7
2 files changed, 9 insertions, 9 deletions
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 6ff8d8699b3..447b6e3de7f 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -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;
}
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h
index 9cf9684b41c..7c85b5645b7 100644
--- a/src/include/storage/proc.h
+++ b/src/include/storage/proc.h
@@ -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,