summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-07-29 10:33:15 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-07-29 11:57:39 +0300
commit3b558ac830b2c30b50b9993c505e3061cbda036c (patch)
tree0b24e12a5fcd84c249a1e1388624ebc793e008e1 /src/include
parent850ebf2db574a0c28a4f34eceae3c77dbc6320c8 (diff)
Treat 2PC commit/abort the same as regular xacts in recovery.
There were several oversights in recovery code where COMMIT/ABORT PREPARED records were ignored: * pg_last_xact_replay_timestamp() (wasn't updated for 2PC commits) * recovery_min_apply_delay (2PC commits were applied immediately) * recovery_target_xid (recovery would not stop if the XID used 2PC) The first of those was reported by Sergiy Zuban in bug #11032, analyzed by Tom Lane and Andres Freund. The bug was always there, but was masked before commit d19bd29f07aef9e508ff047d128a4046cc8bc1e2, because COMMIT PREPARED always created an extra regular transaction that was WAL-logged. Backpatch to all supported versions (older versions didn't have all the features and therefore didn't have all of the above bugs).
Diffstat (limited to 'src/include')
-rw-r--r--src/include/access/xact.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index 634f5b2480c..9c2420265ce 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -180,8 +180,7 @@ typedef struct xl_xact_abort
/*
* COMMIT_PREPARED and ABORT_PREPARED are identical to COMMIT/ABORT records
* except that we have to store the XID of the prepared transaction explicitly
- * --- the XID in the record header will be for the transaction doing the
- * COMMIT PREPARED or ABORT PREPARED command.
+ * --- the XID in the record header will be invalid.
*/
typedef struct xl_xact_commit_prepared