| /*------------------------------------------------------------------------- |
| * |
| * xid8.h |
| * Header file for the "xid8" ADT. |
| * |
| * Copyright (c) 2020-2023, PostgreSQL Global Development Group |
| * |
| * src/include/utils/xid8.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| #ifndef XID8_H |
| #define XID8_H |
| |
| #include "access/transam.h" |
| |
| static inline FullTransactionId |
| DatumGetFullTransactionId(Datum X) |
| { |
| return FullTransactionIdFromU64(DatumGetUInt64(X)); |
| } |
| |
| static inline Datum |
| FullTransactionIdGetDatum(FullTransactionId X) |
| { |
| return UInt64GetDatum(U64FromFullTransactionId(X)); |
| } |
| |
| #define PG_GETARG_FULLTRANSACTIONID(X) DatumGetFullTransactionId(PG_GETARG_DATUM(X)) |
| #define PG_RETURN_FULLTRANSACTIONID(X) return FullTransactionIdGetDatum(X) |
| |
| /* |
| * Snapshot containing FullTransactionIds. |
| * Plugins like zombodb need the pg_snapshot structure, so move it to this header file. |
| */ |
| typedef struct |
| { |
| /* |
| * 4-byte length hdr, should not be touched directly. |
| * |
| * Explicit embedding is ok as we want always correct alignment anyway. |
| */ |
| int32 __varsz; |
| |
| uint32 nxip; /* number of fxids in xip array */ |
| FullTransactionId xmin; |
| FullTransactionId xmax; |
| /* in-progress fxids, xmin <= xip[i] < xmax: */ |
| FullTransactionId xip[FLEXIBLE_ARRAY_MEMBER]; |
| } pg_snapshot; |
| |
| /* |
| * deserialize for zombodb. |
| */ |
| extern pg_snapshot* deserialize_snapshot(const char *str); |
| |
| #endif /* XID8_H */ |