diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index ad1c2bad013..b8c5e2a44ec 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -182,9 +182,10 @@ typedef struct ReorderBufferDiskChange ( \ ((action) == REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT) \ ) -#define IsSpecConfirm(action) \ +#define IsSpecConfirmOrAbort(action) \ ( \ - ((action) == REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM) \ + (((action) == REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM) || \ + ((action) == REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT)) \ ) #define IsInsertOrUpdate(action) \ ( \ @@ -731,12 +732,13 @@ ReorderBufferProcessPartialChange(ReorderBuffer *rb, ReorderBufferTXN *txn, /* * Indicate a partial change for speculative inserts. The change will be - * considered as complete once we get the speculative confirm token. + * considered as complete once we get the speculative confirm or abort + * token. */ if (IsSpecInsert(change->action)) toptxn->txn_flags |= RBTXN_HAS_PARTIAL_CHANGE; else if (rbtxn_has_partial_change(toptxn) && - IsSpecConfirm(change->action)) + IsSpecConfirmOrAbort(change->action)) toptxn->txn_flags &= ~RBTXN_HAS_PARTIAL_CHANGE; /*