summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane2003-09-28 23:26:20 +0000
committerTom Lane2003-09-28 23:26:20 +0000
commit89347900527af6881efbf681b4e330d8074d35dd (patch)
tree28e5ea22ba95ec0afb9d6e046f01c085cc090d73 /src/include
parenta15207f8d69cd7650e1a6fd962f7e3e8c543ce78 (diff)
Add a mechanism to let dynamically loaded modules register post-commit/
post-abort cleanup hooks. I'm surprised that we have not needed this already, but I need it now to fix a plpgsql problem, and the usefulness for other dynamically loaded modules seems obvious.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/access/xact.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index cbd1f3e449a..466249fedad 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: xact.h,v 1.55 2003/08/08 21:42:32 momjian Exp $
+ * $Id: xact.h,v 1.56 2003/09/28 23:26:20 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -59,9 +59,13 @@ typedef enum TBlockState
TBLOCK_ENDABORT
} TBlockState;
-/* ----------------
- * transaction state structure
- * ----------------
+/*
+ * end-of-transaction cleanup callbacks for dynamically loaded modules
+ */
+typedef void (*EOXactCallback) (bool isCommit, void *arg);
+
+/*
+ * transaction state structure
*/
typedef struct TransactionStateData
{
@@ -130,6 +134,8 @@ extern void UserAbortTransactionBlock(void);
extern void AbortOutOfAnyTransaction(void);
extern void PreventTransactionChain(void *stmtNode, const char *stmtType);
extern void RequireTransactionChain(void *stmtNode, const char *stmtType);
+extern void RegisterEOXactCallback(EOXactCallback callback, void *arg);
+extern void UnregisterEOXactCallback(EOXactCallback callback, void *arg);
extern void RecordTransactionCommit(void);