postgres.git / summary / log / commit / refs

commit    8d9d1286acf9f209243cbcddc53cc4c875a90e20
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Thu May 19 14:20:32 2022 +0000
First released in: 15.0, 13.8, 14.4

    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


src/backend/storage/ipc/procarray.c | 11 ++++++----- src/include/storage/proc.h | 7 +++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 127be9c017a..08053a7e8f1 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -2686,12 +2686,13 @@ ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc) TransactionIdIsNormal(xid) && TransactionIdPrecedesOrEquals(xid, xmin)) { - /* Install xmin */ + /* + * Install xmin and propagate the statusFlags that affect how the + * value is interpreted by vacuum. + */ MyProc->xmin = TransactionXmin = xmin; - - /* Flags being copied must be valid copy-able flags. */ - Assert((proc->statusFlags & (~PROC_COPYABLE_FLAGS)) == 0); - MyProc->statusFlags = proc->statusFlags; + MyProc->statusFlags = (MyProc->statusFlags & ~PROC_XMIN_FLAGS) | + (proc->statusFlags & PROC_XMIN_FLAGS); ProcGlobal->statusFlags[MyProc->pgxactoff] = MyProc->statusFlags; result = true; diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 11b514c9ae8..1464fad9b94 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -66,11 +66,10 @@ struct XidCache (PROC_IN_VACUUM | PROC_IN_SAFE_IC | PROC_VACUUM_FOR_WRAPAROUND) /* - * Flags that are valid to copy from another proc, the parallel leader - * process in practice. Currently, flags that are set during parallel - * vacuum and parallel index creation are 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 | PROC_IN_SAFE_IC) +#define PROC_XMIN_FLAGS (PROC_IN_VACUUM | PROC_IN_SAFE_IC) /* * We allow a small number of "weak" relation locks (AccessShareLock, [parent: 3f712ea6dc40]