From 7ba6e4f0e08bd7bdf4d12974ac1e37fb0459c97c Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Tue, 9 Nov 2010 22:39:43 -0500 Subject: [PATCH] Add monitoring function pg_last_xact_replay_timestamp. Fujii Masao, with a little wordsmithing by me. --- doc/src/sgml/func.sgml | 19 +++++++++++++++++++ src/backend/access/transam/xlog.c | 18 ++++++++++++++++++ src/include/access/xlog_internal.h | 1 + src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_proc.h | 2 ++ 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 183b72cda4..1be9f90fe5 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -13551,6 +13551,9 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); pg_last_xlog_replay_location + + pg_last_xact_replay_timestamp + The functions shown in + + + pg_last_xact_replay_timestamp() + + timestamp with time zone + Get timestamp of last transaction replayed during recovery. + This is the time at which the commit or abort WAL record for that + transaction was generated. + If no transactions have been replayed during recovery, this function + returns NULL. Otherwise, if recovery is still in progress this will + increase monotonically. If recovery has completed then this value will + remain static at the value of the last transaction applied during that + recovery. When the server has been started normally without recovery + the function returns NULL. + + diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 786d0c696d..7708b93fff 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5604,6 +5604,24 @@ GetLatestXTime(void) return xtime; } +/* + * Returns timestamp of latest processed commit/abort record. + * + * When the server has been started normally without recovery the function + * returns NULL. + */ +Datum +pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS) +{ + TimestampTz xtime; + + xtime = GetLatestXTime(); + if (xtime == 0) + PG_RETURN_NULL(); + + PG_RETURN_TIMESTAMPTZ(xtime); +} + /* * Returns bool with current recovery mode, a global state. */ diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h index 370c989ac0..29a50838fa 100644 --- a/src/include/access/xlog_internal.h +++ b/src/include/access/xlog_internal.h @@ -271,6 +271,7 @@ extern Datum pg_current_xlog_location(PG_FUNCTION_ARGS); extern Datum pg_current_xlog_insert_location(PG_FUNCTION_ARGS); extern Datum pg_last_xlog_receive_location(PG_FUNCTION_ARGS); extern Datum pg_last_xlog_replay_location(PG_FUNCTION_ARGS); +extern Datum pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS); extern Datum pg_xlogfile_name_offset(PG_FUNCTION_ARGS); extern Datum pg_xlogfile_name(PG_FUNCTION_ARGS); extern Datum pg_is_in_recovery(PG_FUNCTION_ARGS); diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 0c1abdbe89..703cbea7d8 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 201010301 +#define CATALOG_VERSION_NO 201011091 #endif diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 12c640c3d0..4f444aef83 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -3383,6 +3383,8 @@ DATA(insert OID = 3820 ( pg_last_xlog_receive_location PGNSP PGUID 12 1 0 0 f f DESCR("current xlog flush location"); DATA(insert OID = 3821 ( pg_last_xlog_replay_location PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_last_xlog_replay_location _null_ _null_ _null_ )); DESCR("last xlog replay location"); +DATA(insert OID = 3830 ( pg_last_xact_replay_timestamp PGNSP PGUID 12 1 0 0 f f f t f v 0 0 1184 "" _null_ _null_ _null_ _null_ pg_last_xact_replay_timestamp _null_ _null_ _null_ )); +DESCR("timestamp of last replay xact"); DATA(insert OID = 2621 ( pg_reload_conf PGNSP PGUID 12 1 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_reload_conf _null_ _null_ _null_ )); DESCR("reload configuration files"); -- 2.40.0