mirror of
https://github.com/postgres/postgres.git
synced 2025-08-12 15:23:02 +03:00
Back-patch BTScan abort fix into REL6_5.
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtscan.c,v 1.23.2.1 1999/08/02 05:24:41 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtscan.c,v 1.23.2.2 1999/08/08 20:24:10 tgl Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
@@ -43,6 +43,28 @@ static BTScanList BTScans = (BTScanList) NULL;
|
|||||||
|
|
||||||
static void _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno);
|
static void _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AtEOXact_nbtree() --- clean up nbtree subsystem at xact abort or commit.
|
||||||
|
*
|
||||||
|
* This is here because it needs to touch this module's static var BTScans.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
AtEOXact_nbtree(void)
|
||||||
|
{
|
||||||
|
/* Note: these actions should only be necessary during xact abort;
|
||||||
|
* but they can't hurt during a commit.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Reset the active-scans list to empty.
|
||||||
|
* We do not need to free the list elements, because they're all
|
||||||
|
* palloc()'d, so they'll go away at end of transaction anyway.
|
||||||
|
*/
|
||||||
|
BTScans = NULL;
|
||||||
|
|
||||||
|
/* If we were building a btree, we ain't anymore. */
|
||||||
|
BuildingBtree = false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* _bt_regscan() -- register a new scan.
|
* _bt_regscan() -- register a new scan.
|
||||||
*/
|
*/
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.27.2.1 1999/08/02 05:56:46 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.27.2.2 1999/08/08 20:24:12 tgl Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* This file contains the high level access-method interface to the
|
* This file contains the high level access-method interface to the
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
#include "access/heapam.h"
|
#include "access/heapam.h"
|
||||||
#include "catalog/catname.h"
|
#include "catalog/catname.h"
|
||||||
#include "commands/vacuum.h"
|
|
||||||
|
|
||||||
static int RecoveryCheckingEnabled(void);
|
static int RecoveryCheckingEnabled(void);
|
||||||
static void TransRecover(Relation logRelation);
|
static void TransRecover(Relation logRelation);
|
||||||
@@ -83,12 +82,6 @@ int RecoveryCheckingEnableState = 0;
|
|||||||
*/
|
*/
|
||||||
extern int OidGenLockId;
|
extern int OidGenLockId;
|
||||||
|
|
||||||
/* ----------------
|
|
||||||
* globals that must be reset at abort
|
|
||||||
* ----------------
|
|
||||||
*/
|
|
||||||
extern bool BuildingBtree;
|
|
||||||
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* recovery checking accessors
|
* recovery checking accessors
|
||||||
@@ -568,11 +561,6 @@ TransactionIdCommit(TransactionId transactionId)
|
|||||||
void
|
void
|
||||||
TransactionIdAbort(TransactionId transactionId)
|
TransactionIdAbort(TransactionId transactionId)
|
||||||
{
|
{
|
||||||
BuildingBtree = false;
|
|
||||||
|
|
||||||
if (VacuumRunning)
|
|
||||||
vc_abort();
|
|
||||||
|
|
||||||
if (AMI_OVERRIDE)
|
if (AMI_OVERRIDE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.42.2.1 1999/08/02 05:56:48 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.42.2.2 1999/08/08 20:24:12 tgl Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Transaction aborts can now occur two ways:
|
* Transaction aborts can now occur two ways:
|
||||||
@@ -144,9 +144,11 @@
|
|||||||
*/
|
*/
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
|
|
||||||
|
#include "access/nbtree.h"
|
||||||
#include "catalog/heap.h"
|
#include "catalog/heap.h"
|
||||||
#include "commands/async.h"
|
#include "commands/async.h"
|
||||||
#include "commands/sequence.h"
|
#include "commands/sequence.h"
|
||||||
|
#include "commands/vacuum.h"
|
||||||
#include "libpq/be-fsstubs.h"
|
#include "libpq/be-fsstubs.h"
|
||||||
#include "storage/proc.h"
|
#include "storage/proc.h"
|
||||||
#include "utils/inval.h"
|
#include "utils/inval.h"
|
||||||
@@ -952,6 +954,7 @@ CommitTransaction()
|
|||||||
}
|
}
|
||||||
|
|
||||||
RelationPurgeLocalRelation(true);
|
RelationPurgeLocalRelation(true);
|
||||||
|
AtEOXact_nbtree();
|
||||||
AtCommit_Cache();
|
AtCommit_Cache();
|
||||||
AtCommit_Locks();
|
AtCommit_Locks();
|
||||||
AtCommit_Memory();
|
AtCommit_Memory();
|
||||||
@@ -1013,9 +1016,12 @@ AbortTransaction()
|
|||||||
AtAbort_Notify();
|
AtAbort_Notify();
|
||||||
CloseSequences();
|
CloseSequences();
|
||||||
AtEOXact_portals();
|
AtEOXact_portals();
|
||||||
|
if (VacuumRunning)
|
||||||
|
vc_abort();
|
||||||
RecordTransactionAbort();
|
RecordTransactionAbort();
|
||||||
RelationPurgeLocalRelation(false);
|
RelationPurgeLocalRelation(false);
|
||||||
DestroyNoNameRels();
|
DestroyNoNameRels();
|
||||||
|
AtEOXact_nbtree();
|
||||||
AtAbort_Cache();
|
AtAbort_Cache();
|
||||||
AtAbort_Locks();
|
AtAbort_Locks();
|
||||||
AtAbort_Memory();
|
AtAbort_Memory();
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: nbtree.h,v 1.27 1999/05/25 22:04:55 momjian Exp $
|
* $Id: nbtree.h,v 1.27.2.1 1999/08/08 20:24:09 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@@ -255,6 +255,7 @@ extern void btdelete(Relation rel, ItemPointer tid);
|
|||||||
extern void _bt_regscan(IndexScanDesc scan);
|
extern void _bt_regscan(IndexScanDesc scan);
|
||||||
extern void _bt_dropscan(IndexScanDesc scan);
|
extern void _bt_dropscan(IndexScanDesc scan);
|
||||||
extern void _bt_adjscans(Relation rel, ItemPointer tid);
|
extern void _bt_adjscans(Relation rel, ItemPointer tid);
|
||||||
|
extern void AtEOXact_nbtree(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prototypes for functions in nbtsearch.c
|
* prototypes for functions in nbtsearch.c
|
||||||
|
Reference in New Issue
Block a user