diff options
| author | Tom Lane | 2004-07-17 03:32:14 +0000 |
|---|---|---|
| committer | Tom Lane | 2004-07-17 03:32:14 +0000 |
| commit | fe548629c50b753e96515ba2cfd8a85e8fba10de (patch) | |
| tree | e80b54f71cb7868db3f9f9c97bccf4c48859951a /src/include/access | |
| parent | f4c069ca8fc80640bd1bff510697371ffaf45267 (diff) | |
Invent ResourceOwner mechanism as per my recent proposal, and use it to
keep track of portal-related resources separately from transaction-related
resources. This allows cursors to work in a somewhat sane fashion with
nested transactions. For now, cursor behavior is non-subtransactional,
that is a cursor's state does not roll back if you abort a subtransaction
that fetched from the cursor. We might want to change that later.
Diffstat (limited to 'src/include/access')
| -rw-r--r-- | src/include/access/gistscan.h | 5 | ||||
| -rw-r--r-- | src/include/access/hash.h | 5 | ||||
| -rw-r--r-- | src/include/access/nbtree.h | 4 | ||||
| -rw-r--r-- | src/include/access/rtree.h | 5 | ||||
| -rw-r--r-- | src/include/access/xact.h | 59 |
5 files changed, 10 insertions, 68 deletions
diff --git a/src/include/access/gistscan.h b/src/include/access/gistscan.h index 4022f542752..d0afed75b71 100644 --- a/src/include/access/gistscan.h +++ b/src/include/access/gistscan.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/gistscan.h,v 1.23 2004/07/01 00:51:38 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/gistscan.h,v 1.24 2004/07/17 03:30:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -22,7 +22,6 @@ extern Datum gistmarkpos(PG_FUNCTION_ARGS); extern Datum gistrestrpos(PG_FUNCTION_ARGS); extern Datum gistendscan(PG_FUNCTION_ARGS); extern void gistadjscans(Relation r, int op, BlockNumber blkno, OffsetNumber offnum); -extern void AtEOXact_gist(void); -extern void AtEOSubXact_gist(TransactionId childXid); +extern void ReleaseResources_gist(void); #endif /* GISTSCAN_H */ diff --git a/src/include/access/hash.h b/src/include/access/hash.h index 2088cc2f5a6..41afe630296 100644 --- a/src/include/access/hash.h +++ b/src/include/access/hash.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/hash.h,v 1.55 2004/07/01 00:51:38 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/hash.h,v 1.56 2004/07/17 03:30:38 tgl Exp $ * * NOTES * modeled after Margo Seltzer's hash implementation for unix. @@ -292,8 +292,7 @@ extern void _hash_expandtable(Relation rel, Buffer metabuf); extern void _hash_regscan(IndexScanDesc scan); extern void _hash_dropscan(IndexScanDesc scan); extern bool _hash_has_active_scan(Relation rel, Bucket bucket); -extern void AtEOXact_hash(void); -extern void AtEOSubXact_hash(TransactionId childXid); +extern void ReleaseResources_hash(void); /* hashsearch.c */ extern bool _hash_next(IndexScanDesc scan, ScanDirection dir); diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h index 6e2491532ad..bf95d8ba23d 100644 --- a/src/include/access/nbtree.h +++ b/src/include/access/nbtree.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/nbtree.h,v 1.79 2004/07/11 18:01:45 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/nbtree.h,v 1.80 2004/07/17 03:30:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -402,8 +402,6 @@ typedef BTScanOpaqueData *BTScanOpaque; /* * prototypes for functions in nbtree.c (external entry points for btree) */ -extern void AtEOXact_nbtree(void); - extern Datum btbuild(PG_FUNCTION_ARGS); extern Datum btinsert(PG_FUNCTION_ARGS); extern Datum btgettuple(PG_FUNCTION_ARGS); diff --git a/src/include/access/rtree.h b/src/include/access/rtree.h index 5b5347e9a08..a23b00283fb 100644 --- a/src/include/access/rtree.h +++ b/src/include/access/rtree.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/rtree.h,v 1.33 2004/07/01 00:51:38 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/rtree.h,v 1.34 2004/07/17 03:30:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -129,8 +129,7 @@ extern void rtree_desc(char *buf, uint8 xl_info, char *rec); /* rtscan.c */ extern void rtadjscans(Relation r, int op, BlockNumber blkno, OffsetNumber offnum); -extern void AtEOXact_rtree(void); -extern void AtEOSubXact_rtree(TransactionId childXid); +extern void ReleaseResources_rtree(void); /* rtstrat.c */ extern StrategyNumber RTMapToInternalOperator(StrategyNumber strat); diff --git a/src/include/access/xact.h b/src/include/access/xact.h index c5b66afd0df..714518d308c 100644 --- a/src/include/access/xact.h +++ b/src/include/access/xact.h @@ -7,17 +7,16 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/xact.h,v 1.64 2004/07/01 00:51:38 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/xact.h,v 1.65 2004/07/17 03:30:38 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef XACT_H #define XACT_H -#include "access/transam.h" #include "access/xlog.h" #include "utils/nabstime.h" -#include "utils/timestamp.h" + /* * Xact isolation levels @@ -41,62 +40,10 @@ extern bool DefaultXactReadOnly; extern bool XactReadOnly; /* - * transaction states - transaction state from server perspective - */ -typedef enum TransState -{ - TRANS_DEFAULT, - TRANS_START, - TRANS_INPROGRESS, - TRANS_COMMIT, - TRANS_ABORT -} TransState; - -/* - * transaction block states - transaction state of client queries - */ -typedef enum TBlockState -{ - TBLOCK_DEFAULT, - TBLOCK_STARTED, - TBLOCK_BEGIN, - TBLOCK_INPROGRESS, - TBLOCK_END, - TBLOCK_ABORT, - TBLOCK_ENDABORT, - - TBLOCK_SUBBEGIN, - TBLOCK_SUBBEGINABORT, - TBLOCK_SUBINPROGRESS, - TBLOCK_SUBEND, - TBLOCK_SUBABORT, - TBLOCK_SUBENDABORT_OK, - TBLOCK_SUBENDABORT_ERROR -} TBlockState; - -/* * end-of-transaction cleanup callbacks for dynamically loaded modules */ typedef void (*EOXactCallback) (bool isCommit, void *arg); -/* - * transaction state structure - */ -typedef struct TransactionStateData -{ - TransactionId transactionIdData; /* my XID */ - CommandId commandId; /* current CID */ - TransState state; /* low-level state */ - TBlockState blockState; /* high-level state */ - int nestingLevel; /* nest depth */ - MemoryContext curTransactionContext; /* my xact-lifetime context */ - List *childXids; /* subcommitted child XIDs */ - AclId currentUser; /* subxact start current_user */ - struct TransactionStateData *parent; /* back link to parent */ -} TransactionStateData; - -typedef TransactionStateData *TransactionState; - /* ---------------- * transaction-related XLOG entries @@ -168,7 +115,7 @@ extern void UnregisterEOXactCallback(EOXactCallback callback, void *arg); extern void RecordTransactionCommit(void); -extern int xactGetCommittedChildren(TransactionId **ptr, bool metoo); +extern int xactGetCommittedChildren(TransactionId **ptr); extern void XactPushRollback(void (*func) (void *), void *data); extern void XactPopRollback(void); |
