1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Modify sequence state storage to eliminate dangling-pointer problem

exemplified by bug #671.  Moving the storage to relcache turned out to
be a bad idea because relcache might decide to discard the info.  Instead,
open and close the relcache entry on each sequence operation, and use
a record of the current XID to discover whether we already hold
AccessShareLock on the sequence.
This commit is contained in:
Tom Lane
2002-05-22 21:40:55 +00:00
parent b8ffc99602
commit a2597ef179
5 changed files with 161 additions and 147 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.123 2002/05/21 22:05:53 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.124 2002/05/22 21:40:55 tgl Exp $
*
* NOTES
* Transaction aborts can now occur two ways:
@ -166,7 +166,6 @@
#include "catalog/index.h"
#include "catalog/namespace.h"
#include "commands/async.h"
#include "commands/sequence.h"
#include "commands/trigger.h"
#include "executor/spi.h"
#include "libpq/be-fsstubs.h"
@ -947,7 +946,6 @@ CommitTransaction(void)
/* NOTIFY commit must also come before lower-level cleanup */
AtCommit_Notify();
CloseSequences();
AtEOXact_portals();
/* Here is where we really truly commit. */
@ -1063,7 +1061,6 @@ AbortTransaction(void)
DeferredTriggerAbortXact();
lo_commit(false); /* 'false' means it's abort */
AtAbort_Notify();
CloseSequences();
AtEOXact_portals();
/* Advertise the fact that we aborted in pg_clog. */