Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * pg_lsn.h 4 : * Declarations for operations on log sequence numbers (LSNs) of 5 : * PostgreSQL. 6 : * 7 : * 8 : * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group 9 : * Portions Copyright (c) 1994, Regents of the University of California 10 : * 11 : * src/include/utils/pg_lsn.h 12 : * 13 : *------------------------------------------------------------------------- 14 : */ 15 : #ifndef PG_LSN_H 16 : #define PG_LSN_H 17 : 18 : #include "access/xlogdefs.h" 19 : #include "fmgr.h" 20 : 21 : /* forward declaration to avoid node.h include */ 22 : typedef struct Node Node; 23 : 24 : static inline XLogRecPtr 25 112304 : DatumGetLSN(Datum X) 26 : { 27 112304 : return (XLogRecPtr) DatumGetInt64(X); 28 : } 29 : 30 : static inline Datum 31 533600 : LSNGetDatum(XLogRecPtr X) 32 : { 33 533600 : return Int64GetDatum((int64) X); 34 : } 35 : 36 : #define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n)) 37 : #define PG_RETURN_LSN(x) return LSNGetDatum(x) 38 : 39 : extern XLogRecPtr pg_lsn_in_safe(const char *str, Node *escontext); 40 : 41 : #endif /* PG_LSN_H */