postgres.git / summary / log / commit / refs

commit    a00c138b78521b9bc68b480490a8d601ecdeb816
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Wed Jul 28 16:30:02 2021 +0000
First released in: 15.0, 9.6.23, 10.18, 11.13, 12.8, 13.4, 14.0

    Update minimum recovery point on truncation during WAL replay of abort record.
    
    If a file is truncated, we must update minRecoveryPoint. Once a file is
    truncated, there's no going back; it would not be safe to stop recovery
    at a point earlier than that anymore.
    
    Commit 7bffc9b7bf changed xact_redo_commit() so that it updates
    minRecoveryPoint on truncation, but forgot to change xact_redo_abort().
    
    Back-patch to all supported versions.
    
    Reported-by: mengjuan.cmj@alibaba-inc.com
    Author: Fujii Masao
    Reviewed-by: Heikki Linnakangas
    Discussion: https://postgr.es/m/b029fce3-4fac-4265-968e-16f36ff4d075.mengjuan.cmj@alibaba-inc.com


src/backend/access/transam/xact.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 441445927e8..387f80419a5 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -5983,7 +5983,16 @@ xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid, } /* Make sure files supposed to be dropped are dropped */ - DropRelationFiles(parsed->xnodes, parsed->nrels, true); + if (parsed->nrels > 0) + { + /* + * See comments about update of minimum recovery point on truncation, + * in xact_redo_commit(). + */ + XLogFlush(lsn); + + DropRelationFiles(parsed->xnodes, parsed->nrels, true); + } } void [parent: 3ba70d4e1523]