Fujii Masao, with a little wordsmithing by me.
<indexterm>
<primary>pg_last_xlog_replay_location</primary>
</indexterm>
+ <indexterm>
+ <primary>pg_last_xact_replay_timestamp</primary>
+ </indexterm>
<para>
The functions shown in <xref
the function returns NULL.
</entry>
</row>
+ <row>
+ <entry>
+ <literal><function>pg_last_xact_replay_timestamp()</function></literal>
+ </entry>
+ <entry><type>timestamp with time zone</type></entry>
+ <entry>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.
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
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.
*/
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);
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 201010301
+#define CATALOG_VERSION_NO 201011091
#endif
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");