Skip to content

Commit 41a090d

Browse files
committed
bring xact events back
1 parent b4da6f1 commit 41a090d

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

src/backend/access/transam/twophase.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1509,6 +1509,12 @@ FinishPreparedTransaction(const char *gid, bool isCommit)
15091509
LWLockAcquire(TwoPhaseStateLock, LW_EXCLUSIVE);
15101510
RemoveGXact(gxact);
15111511
LWLockRelease(TwoPhaseStateLock);
1512+
1513+
if (isCommit)
1514+
CallXactCallbacks(XACT_EVENT_COMMIT_PREPARED);
1515+
else
1516+
CallXactCallbacks(XACT_EVENT_ABORT_PREPARED);
1517+
15121518
MyLockedGxact = NULL;
15131519

15141520
pfree(buf);
@@ -2408,3 +2414,13 @@ PrepareRedoRemove(TransactionId xid, bool giveWarning)
24082414

24092415
return;
24102416
}
2417+
2418+
2419+
/*
2420+
* Return identified of current global transaction
2421+
*/
2422+
const char*
2423+
GetLockedGlobalTransactionId(void)
2424+
{
2425+
return MyLockedGxact ? MyLockedGxact->gid : NULL;
2426+
}

src/backend/access/transam/xact.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ static void AtCommit_Memory(void);
305305
static void AtStart_Cache(void);
306306
static void AtStart_Memory(void);
307307
static void AtStart_ResourceOwner(void);
308-
static void CallXactCallbacks(XactEvent event);
309308
static void CallSubXactCallbacks(SubXactEvent event,
310309
SubTransactionId mySubid,
311310
SubTransactionId parentSubid);
@@ -1928,6 +1927,7 @@ StartTransaction(void)
19281927
*/
19291928
s->state = TRANS_INPROGRESS;
19301929

1930+
CallXactCallbacks(XACT_EVENT_START);
19311931
ShowTransactionState("StartTransaction");
19321932
}
19331933

@@ -3339,7 +3339,7 @@ UnregisterXactCallback(XactCallback callback, void *arg)
33393339
}
33403340
}
33413341

3342-
static void
3342+
void
33433343
CallXactCallbacks(XactEvent event)
33443344
{
33453345
XactCallbackItem *item;

src/include/access/twophase.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,7 @@ extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,
5757
XLogRecPtr end_lsn);
5858
extern void PrepareRedoRemove(TransactionId xid, bool giveWarning);
5959
extern void restoreTwoPhaseData(void);
60+
61+
extern const char *GetLockedGlobalTransactionId(void);
62+
6063
#endif /* TWOPHASE_H */

src/include/access/xact.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,17 @@ extern int MyXactFlags;
9797
*/
9898
typedef enum
9999
{
100+
XACT_EVENT_START,
100101
XACT_EVENT_COMMIT,
101102
XACT_EVENT_PARALLEL_COMMIT,
102103
XACT_EVENT_ABORT,
103104
XACT_EVENT_PARALLEL_ABORT,
104105
XACT_EVENT_PREPARE,
105106
XACT_EVENT_PRE_COMMIT,
106107
XACT_EVENT_PARALLEL_PRE_COMMIT,
107-
XACT_EVENT_PRE_PREPARE
108+
XACT_EVENT_PRE_PREPARE,
109+
XACT_EVENT_COMMIT_PREPARED,
110+
XACT_EVENT_ABORT_PREPARED
108111
} XactEvent;
109112

110113
typedef void (*XactCallback) (XactEvent event, void *arg);
@@ -403,5 +406,6 @@ extern void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_ab
403406
extern void EnterParallelMode(void);
404407
extern void ExitParallelMode(void);
405408
extern bool IsInParallelMode(void);
409+
extern void CallXactCallbacks(XactEvent event);
406410

407411
#endif /* XACT_H */

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