mirror of
https://github.com/postgres/postgres.git
synced 2026-04-28 09:38:27 -04:00
pg_lsn includes pg_lsn_in_internal() for the purpose of parsing a LSN position for the GUC recovery_target_lsn (21f428ebde). It relies on a boolean called "have_error" that would be set when the LSN parsing fails, then let its callers handle any errors.d9f7f5d32fhas added support for soft error reporting. This commit removes some boilerplate code and switches the routine to use soft error reporting directly, giving to the callers of pg_lsn_in_internal() the possibility to be fed the error message generated on failure. pg_lsn_in_internal() routine is renamed to pg_lsn_in_safe(), for consistency with other similar routines that are given an escontext. Author: Amul Sul <sulamul@gmail.com> Reviewed-by: Dean Rasheed <dean.a.rasheed@gmail.com> Discussion: https://postgr.es/m/CAAJ_b96No5h5tRuR+KhcC44YcYUCw8WAHuLoqqyyop8_k3+JDQ@mail.gmail.com
41 lines
979 B
C
41 lines
979 B
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* pg_lsn.h
|
|
* Declarations for operations on log sequence numbers (LSNs) of
|
|
* PostgreSQL.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/utils/pg_lsn.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PG_LSN_H
|
|
#define PG_LSN_H
|
|
|
|
#include "access/xlogdefs.h"
|
|
#include "fmgr.h"
|
|
|
|
/* forward declaration to avoid node.h include */
|
|
typedef struct Node Node;
|
|
|
|
static inline XLogRecPtr
|
|
DatumGetLSN(Datum X)
|
|
{
|
|
return (XLogRecPtr) DatumGetInt64(X);
|
|
}
|
|
|
|
static inline Datum
|
|
LSNGetDatum(XLogRecPtr X)
|
|
{
|
|
return Int64GetDatum((int64) X);
|
|
}
|
|
|
|
#define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n))
|
|
#define PG_RETURN_LSN(x) return LSNGetDatum(x)
|
|
|
|
extern XLogRecPtr pg_lsn_in_safe(const char *str, Node *escontext);
|
|
|
|
#endif /* PG_LSN_H */
|