Dept. of second thoughts: regular COMMIT deletes deletable files before

releasing locks, so COMMIT PREPARED should too.
This commit is contained in:
Tom Lane 2005-06-18 05:21:09 +00:00
parent 25f8916137
commit 66b098492e
1 changed files with 11 additions and 7 deletions

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.1 2005/06/17 22:32:42 tgl Exp $
* $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.2 2005/06/18 05:21:09 tgl Exp $
*
* NOTES
* Each global transaction is associated with a global transaction
@ -1114,13 +1114,11 @@ FinishPreparedTransaction(char *gid, bool isCommit)
*/
gxact->valid = false;
if (isCommit)
ProcessRecords(bufptr, xid, twophase_postcommit_callbacks);
else
ProcessRecords(bufptr, xid, twophase_postabort_callbacks);
/*
* We also have to remove any files that were supposed to be dropped.
* We have to remove any files that were supposed to be dropped.
* For consistency with the regular xact.c code paths, must do this
* before releasing locks, so do it before running the callbacks.
*
* NB: this code knows that we couldn't be dropping any temp rels ...
*/
if (isCommit)
@ -1134,6 +1132,12 @@ FinishPreparedTransaction(char *gid, bool isCommit)
smgrdounlink(smgropen(abortrels[i]), false, false);
}
/* And now do the callbacks */
if (isCommit)
ProcessRecords(bufptr, xid, twophase_postcommit_callbacks);
else
ProcessRecords(bufptr, xid, twophase_postabort_callbacks);
pgstat_count_xact_commit();
/*