From 3211410e7efe4ab5b623e31037b9d22f2d476f00 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Fri, 2 Aug 2019 22:17:56 +1200 Subject: [PATCH 3/3] Use xid8 in the pg_prepared_xacts view. Show full transaction IDs in the "transaction" column. This can be explicitly cast to xid to get the old behavior. --- src/backend/access/transam/twophase.c | 6 +++--- src/include/catalog/pg_proc.dat | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 89e98be7b4..07d480f734 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -107,6 +107,7 @@ #include "utils/builtins.h" #include "utils/memutils.h" #include "utils/timestamp.h" +#include "utils/xid8.h" /* @@ -737,7 +738,7 @@ pg_prepared_xact(PG_FUNCTION_ARGS) /* this had better match pg_prepared_xacts view in system_views.sql */ tupdesc = CreateTemplateTupleDesc(5); TupleDescInitEntry(tupdesc, (AttrNumber) 1, "transaction", - XIDOID, -1, 0); + XID8OID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 2, "gid", TEXTOID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 3, "prepared", @@ -769,7 +770,6 @@ pg_prepared_xact(PG_FUNCTION_ARGS) { GlobalTransaction gxact = &status->array[status->currIdx++]; PGPROC *proc = &ProcGlobal->allProcs[gxact->pgprocno]; - PGXACT *pgxact = &ProcGlobal->allPgXact[gxact->pgprocno]; Datum values[5]; bool nulls[5]; HeapTuple tuple; @@ -784,7 +784,7 @@ pg_prepared_xact(PG_FUNCTION_ARGS) MemSet(values, 0, sizeof(values)); MemSet(nulls, 0, sizeof(nulls)); - values[0] = TransactionIdGetDatum(pgxact->xid); + values[0] = FullTransactionIdGetDatum(gxact->full_xid); values[1] = CStringGetTextDatum(gxact->gid); values[2] = TimestampTzGetDatum(gxact->prepared_at); values[3] = ObjectIdGetDatum(gxact->owner); diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 7c9d434673..17e5eb4543 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -5859,7 +5859,7 @@ { oid => '1065', descr => 'view two-phase transactions', proname => 'pg_prepared_xact', prorows => '1000', proretset => 't', provolatile => 'v', prorettype => 'record', proargtypes => '', - proallargtypes => '{xid,text,timestamptz,oid,oid}', + proallargtypes => '{xid8,text,timestamptz,oid,oid}', proargmodes => '{o,o,o,o,o}', proargnames => '{transaction,gid,prepared,ownerid,dbid}', prosrc => 'pg_prepared_xact' }, -- 2.22.0