Skip to content

Commit 444c1a3

Browse files
committed
pg_rollback_prepared_xacts() function
1 parent b43b2e3 commit 444c1a3

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

src/backend/access/transam/twophase.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2267,3 +2267,30 @@ GetLockedGlobalTransactionId(void)
22672267
{
22682268
return MyLockedGxact ? MyLockedGxact->gid : NULL;
22692269
}
2270+
2271+
int
2272+
FinishAllPreparedTransactions(bool isCommit)
2273+
{
2274+
int i, count = 0;
2275+
2276+
for (i = 0; i < TwoPhaseState->numPrepXacts; i++)
2277+
{
2278+
GlobalTransaction gxact = TwoPhaseState->prepXacts[i];
2279+
2280+
if (gxact->valid)
2281+
{
2282+
FinishPreparedTransaction(gxact->gid, isCommit);
2283+
count++;
2284+
}
2285+
}
2286+
2287+
return count;
2288+
}
2289+
2290+
Datum
2291+
pg_rollback_prepared_xacts(PG_FUNCTION_ARGS)
2292+
{
2293+
int count;
2294+
count = FinishAllPreparedTransactions(0);
2295+
PG_RETURN_INT32(count);
2296+
}

src/include/access/twophase.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ extern void FinishPreparedTransaction(const char *gid, bool isCommit);
6161

6262
extern const char *GetLockedGlobalTransactionId(void);
6363

64+
extern int FinishAllPreparedTransactions(bool isCommit);
65+
6466
#endif /* TWOPHASE_H */

src/include/catalog/pg_proc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,6 +3052,8 @@ DATA(insert OID = 2561 ( pg_blocking_pids PGNSP PGUID 12 1 0 0 0 f f f f t f v
30523052
DESCR("get array of PIDs of sessions blocking specified backend PID");
30533053
DATA(insert OID = 1065 ( pg_prepared_xact PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 0 0 2249 "" "{28,25,1184,26,26}" "{o,o,o,o,o}" "{transaction,gid,prepared,ownerid,dbid}" _null_ _null_ pg_prepared_xact _null_ _null_ _null_ ));
30543054
DESCR("view two-phase transactions");
3055+
DATA(insert OID = 4014 ( pg_rollback_prepared_xacts PGNSP PGUID 12 1 0 0 0 f f f f t f s u 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_rollback_prepared_xacts _null_ _null_ _null_ ));
3056+
DESCR("rollback all two-phase transactions");
30553057
DATA(insert OID = 3819 ( pg_get_multixact_members PGNSP PGUID 12 1 1000 0 0 f f f f t t v s 1 0 2249 "28" "{28,28,25}" "{i,o,o}" "{multixid,xid,mode}" _null_ _null_ pg_get_multixact_members _null_ _null_ _null_ ));
30563058
DESCR("view members of a multixactid");
30573059

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