result = pg_lsn_in_internal(str, &have_error); if (have_error)
ereturn(fcinfo->context, (Datum) 0,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for type %s: \"%s\"", "pg_lsn", str)));
Datum
pg_lsn_mi(PG_FUNCTION_ARGS)
{
XLogRecPtr lsn1 = PG_GETARG_LSN(0);
XLogRecPtr lsn2 = PG_GETARG_LSN(1); char buf[256];
Datum result;
/* Output could be as large as plus or minus 2^63 - 1. */ if (lsn1 < lsn2)
snprintf(buf, sizeof buf, "-" UINT64_FORMAT, lsn2 - lsn1); else
snprintf(buf, sizeof buf, UINT64_FORMAT, lsn1 - lsn2);
/* Convert to numeric. */
result = DirectFunctionCall3(numeric_in,
CStringGetDatum(buf),
ObjectIdGetDatum(0),
Int32GetDatum(-1));
return result;
}
/* *Addthenumberofbytestopg_lsn,givinganewpg_lsn. *Musthandlebothpositiveandnegativenumbersofbytes.
*/
Datum
pg_lsn_pli(PG_FUNCTION_ARGS)
{
XLogRecPtr lsn = PG_GETARG_LSN(0);
Numeric nbytes = PG_GETARG_NUMERIC(1);
Datum num;
Datum res; char buf[32];
if (numeric_is_nan(nbytes))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot add NaN to pg_lsn")));
/* Convert to numeric */
snprintf(buf, sizeof(buf), UINT64_FORMAT, lsn);
num = DirectFunctionCall3(numeric_in,
CStringGetDatum(buf),
ObjectIdGetDatum(0),
Int32GetDatum(-1));
/* Add two numerics */
res = DirectFunctionCall2(numeric_add,
num,
NumericGetDatum(nbytes));
/* Convert to pg_lsn */ return DirectFunctionCall1(numeric_pg_lsn, res);
}
/* *Subtractthenumberofbytesfrompg_lsn,givinganewpg_lsn. *Musthandlebothpositiveandnegativenumbersofbytes.
*/
Datum
pg_lsn_mii(PG_FUNCTION_ARGS)
{
XLogRecPtr lsn = PG_GETARG_LSN(0);
Numeric nbytes = PG_GETARG_NUMERIC(1);
Datum num;
Datum res; char buf[32];
if (numeric_is_nan(nbytes))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot subtract NaN from pg_lsn")));
/* Convert to numeric */
snprintf(buf, sizeof(buf), UINT64_FORMAT, lsn);
num = DirectFunctionCall3(numeric_in,
CStringGetDatum(buf),
ObjectIdGetDatum(0),
Int32GetDatum(-1));
/* Subtract two numerics */
res = DirectFunctionCall2(numeric_sub,
num,
NumericGetDatum(nbytes));
/* Convert to pg_lsn */ return DirectFunctionCall1(numeric_pg_lsn, res);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.