diff options
| author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2014-07-29 10:33:15 +0300 |
|---|---|---|
| committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2014-07-29 11:59:22 +0300 |
| commit | e74e0906fad5fcdcc807d4655cdc69dded5d58f2 (patch) | |
| tree | 169ee9b2e572d20fda67922bdd41e84adc31913d /src/include/access | |
| parent | 61e48efba579682f75332688bdb89f9eee24fb63 (diff) | |
| download | postgresql-e74e0906fad5fcdcc807d4655cdc69dded5d58f2.tar.gz | |
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/access')
| -rw-r--r-- | src/include/access/xact.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/include/access/xact.h b/src/include/access/xact.h index 10ee943352..2168dc3cb5 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 |
