PostgreSQL Source Code  git master
pg_lsn.h File Reference
#include "fmgr.h"
#include "access/xlogdefs.h"
Include dependency graph for pg_lsn.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define DatumGetLSN(X)   ((XLogRecPtr) DatumGetInt64(X))
 
#define LSNGetDatum(X)   (Int64GetDatum((int64) (X)))
 
#define PG_GETARG_LSN(n)   DatumGetLSN(PG_GETARG_DATUM(n))
 
#define PG_RETURN_LSN(x)   return LSNGetDatum(x)
 

Functions

XLogRecPtr pg_lsn_in_internal (const char *str, bool *have_error)
 

Macro Definition Documentation

◆ DatumGetLSN

#define DatumGetLSN (   X)    ((XLogRecPtr) DatumGetInt64(X))

Definition at line 21 of file pg_lsn.h.

Referenced by GetSubscriptionRelState(), and libpqrcv_create_slot().

◆ LSNGetDatum

◆ PG_GETARG_LSN

◆ PG_RETURN_LSN

Function Documentation

◆ pg_lsn_in_internal()

XLogRecPtr pg_lsn_in_internal ( const char *  str,
bool have_error 
)

Definition at line 29 of file pg_lsn.c.

References Assert, InvalidXLogRecPtr, and MAXPG_LSNCOMPONENT.

Referenced by check_recovery_target_lsn(), and pg_lsn_in().

30 {
31  int len1,
32  len2;
33  uint32 id,
34  off;
35  XLogRecPtr result;
36 
37  Assert(have_error != NULL);
38  *have_error = false;
39 
40  /* Sanity check input format. */
41  len1 = strspn(str, "0123456789abcdefABCDEF");
42  if (len1 < 1 || len1 > MAXPG_LSNCOMPONENT || str[len1] != '/')
43  {
44  *have_error = true;
45  return InvalidXLogRecPtr;
46  }
47  len2 = strspn(str + len1 + 1, "0123456789abcdefABCDEF");
48  if (len2 < 1 || len2 > MAXPG_LSNCOMPONENT || str[len1 + 1 + len2] != '\0')
49  {
50  *have_error = true;
51  return InvalidXLogRecPtr;
52  }
53 
54  /* Decode result. */
55  id = (uint32) strtoul(str, NULL, 16);
56  off = (uint32) strtoul(str + len1 + 1, NULL, 16);
57  result = ((uint64) id << 32) | off;
58 
59  return result;
60 }
#define InvalidXLogRecPtr
Definition: xlogdefs.h:28
unsigned int uint32
Definition: c.h:359
uint64 XLogRecPtr
Definition: xlogdefs.h:21
#define Assert(condition)
Definition: c.h:733
#define MAXPG_LSNCOMPONENT
Definition: pg_lsn.c:22