1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Include replication origins in SQL functions for commit timestamp

This includes two changes:
- Addition of a new function pg_xact_commit_timestamp_origin() able, for
a given transaction ID, to return the commit timestamp and replication
origin of this transaction.  An equivalent function existed in
pglogical.
- Addition of the replication origin to pg_last_committed_xact().

The commit timestamp manager includes already APIs able to return the
replication origin of a transaction on top of its commit timestamp, but
the code paths for replication origins were never stressed as those
functions have never looked for a replication origin, and the SQL
functions available have never included this information since their
introduction in 73c986a.

While on it, refactor a test of modules/commit_ts/ to use tstzrange() to
check that a transaction timestamp is within the wanted range, making
the test a bit easier to read.

Bump catalog version.

Author: Movead Li
Reviewed-by: Madan Kumar, Michael Paquier
Discussion: https://postgr.es/m/2020051116430836450630@highgo.ca
This commit is contained in:
Michael Paquier
2020-07-12 20:47:15 +09:00
parent cd22d3cdb9
commit b1e48bbe64
7 changed files with 295 additions and 18 deletions

View File

@ -23397,6 +23397,21 @@ SELECT collation for ('foo' COLLATE "de_DE");
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<indexterm>
<primary>pg_xact_commit_timestamp_origin</primary>
</indexterm>
<function>pg_xact_commit_timestamp_origin</function> ( <type>xid</type> )
<returnvalue>record</returnvalue>
( <parameter>timestamp</parameter> <type>timestamp with time zone</type>,
<parameter>roident</parameter> <type>oid</type>)
</para>
<para>
Returns the commit timestamp and replication origin of a transaction.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<indexterm>
@ -23405,11 +23420,12 @@ SELECT collation for ('foo' COLLATE "de_DE");
<function>pg_last_committed_xact</function> ()
<returnvalue>record</returnvalue>
( <parameter>xid</parameter> <type>xid</type>,
<parameter>timestamp</parameter> <type>timestamp with time zone</type> )
<parameter>timestamp</parameter> <type>timestamp with time zone</type>,
<parameter>roident</parameter> <type>oid</type> )
</para>
<para>
Returns the transaction ID and commit timestamp of the latest
committed transaction.
Returns the transaction ID, commit timestamp and replication origin
of the latest committed transaction.
</para></entry>
</row>
</tbody>