Skip to content

Commit 1896708

Browse files
committed
POST_PREPARE xact event and expose gid during PRE_PREPARE.
1 parent c5c69c1 commit 1896708

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/backend/access/transam/xact.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,6 +2463,8 @@ PrepareTransaction(void)
24632463
s->state = TRANS_DEFAULT;
24642464

24652465
RESUME_INTERRUPTS();
2466+
2467+
CallXactCallbacks(XACT_EVENT_POST_PREPARE);
24662468
}
24672469

24682470

@@ -5848,3 +5850,10 @@ xact_redo(XLogReaderState *record)
58485850
else
58495851
elog(PANIC, "xact_redo: unknown op code %u", info);
58505852
}
5853+
5854+
/* Get gid for ongoing PREPARE */
5855+
const char *
5856+
GetPrepareGid(void)
5857+
{
5858+
return prepareGID;
5859+
}

src/include/access/xact.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ typedef enum
111111
XACT_EVENT_PREPARE,
112112
XACT_EVENT_PRE_COMMIT,
113113
XACT_EVENT_PARALLEL_PRE_COMMIT,
114-
XACT_EVENT_PRE_PREPARE
114+
XACT_EVENT_PRE_PREPARE,
115+
XACT_EVENT_POST_PREPARE
115116
} XactEvent;
116117

117118
typedef void (*XactCallback) (XactEvent event, void *arg);
@@ -399,6 +400,7 @@ extern void RegisterXactCallback(XactCallback callback, void *arg);
399400
extern void UnregisterXactCallback(XactCallback callback, void *arg);
400401
extern void RegisterSubXactCallback(SubXactCallback callback, void *arg);
401402
extern void UnregisterSubXactCallback(SubXactCallback callback, void *arg);
403+
extern const char *GetPrepareGid(void);
402404

403405
extern int xactGetCommittedChildren(TransactionId **ptr);
404406

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy