Fix GetNewTransactionId()'s interaction with xidVacLimit.
authorThomas Munro <tmunro@postgresql.org>
Fri, 12 Apr 2019 02:53:38 +0000 (14:53 +1200)
committerThomas Munro <tmunro@postgresql.org>
Fri, 12 Apr 2019 04:47:50 +0000 (16:47 +1200)
commitf7feb020c3d8d5aff24204af28359b99ee65bf8f
tree743cc3f8bccc8d48f309e593f1487c3ebcbc9e23
parentd87ab88686fb60ad5a34373de05bb20e632cf003
Fix GetNewTransactionId()'s interaction with xidVacLimit.

Commit ad308058 switched to returning a FullTransactionId, but
failed to load the potentially updated value in the case where
xidVacLimit is reached and we release and reacquire the lock.
Repair, closing bug #15727.

While reviewing that commit, also fix the size computation used
by EstimateTransactionStateSize() and switch to the mul_size()
macro traditionally used in such expressions.

Author: Thomas Munro
Reported-by: Roman Zharkov
Discussion: https://postgr.es/m/15727-0be246e7d852d229%40postgresql.org
src/backend/access/transam/varsup.c
src/backend/access/transam/xact.c