mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Add contrib/pg_logicalinspect.
This module provides SQL functions that allow to inspect logical decoding components. It currently allows to inspect the contents of serialized logical snapshots of a running database cluster, which is useful for debugging or educational purposes. Author: Bertrand Drouvot Reviewed-by: Amit Kapila, Shveta Malik, Peter Smith, Peter Eisentraut Reviewed-by: David G. Johnston Discussion: https://postgr.es/m/ZscuZ92uGh3wm4tW%40ip-10-97-1-34.eu-west-3.compute.internal
This commit is contained in:
@@ -154,6 +154,7 @@ CREATE EXTENSION <replaceable>extension_name</replaceable>;
|
||||
&pgbuffercache;
|
||||
&pgcrypto;
|
||||
&pgfreespacemap;
|
||||
&pglogicalinspect;
|
||||
&pgprewarm;
|
||||
&pgrowlocks;
|
||||
&pgstatstatements;
|
||||
|
@@ -143,6 +143,7 @@
|
||||
<!ENTITY pgbuffercache SYSTEM "pgbuffercache.sgml">
|
||||
<!ENTITY pgcrypto SYSTEM "pgcrypto.sgml">
|
||||
<!ENTITY pgfreespacemap SYSTEM "pgfreespacemap.sgml">
|
||||
<!ENTITY pglogicalinspect SYSTEM "pglogicalinspect.sgml">
|
||||
<!ENTITY pgprewarm SYSTEM "pgprewarm.sgml">
|
||||
<!ENTITY pgrowlocks SYSTEM "pgrowlocks.sgml">
|
||||
<!ENTITY pgstatstatements SYSTEM "pgstatstatements.sgml">
|
||||
|
143
doc/src/sgml/pglogicalinspect.sgml
Normal file
143
doc/src/sgml/pglogicalinspect.sgml
Normal file
@@ -0,0 +1,143 @@
|
||||
<!-- doc/src/sgml/pglogicalinspect.sgml -->
|
||||
|
||||
<sect1 id="pglogicalinspect" xreflabel="pg_logicalinspect">
|
||||
<title>pg_logicalinspect — logical decoding components inspection</title>
|
||||
|
||||
<indexterm zone="pglogicalinspect">
|
||||
<primary>pg_logicalinspect</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
The <filename>pg_logicalinspect</filename> module provides SQL functions
|
||||
that allow you to inspect the contents of logical decoding components. It
|
||||
allows the inspection of serialized logical snapshots of a running
|
||||
<productname>PostgreSQL</productname> database cluster, which is useful
|
||||
for debugging or educational purposes.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
By default, use of these functions is restricted to superusers and members of
|
||||
the <literal>pg_read_server_files</literal> role. Access may be granted by
|
||||
superusers to others using <command>GRANT</command>.
|
||||
</para>
|
||||
|
||||
<sect2 id="pglogicalinspect-funcs">
|
||||
<title>Functions</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry id="pglogicalinspect-funcs-pg-get-logical-snapshot-meta">
|
||||
<term>
|
||||
<function>pg_get_logical_snapshot_meta(filename text) returns record</function>
|
||||
</term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Gets logical snapshot metadata about a snapshot file that is located in
|
||||
the server's <filename>pg_logical/snapshots</filename> directory.
|
||||
The <replaceable>filename</replaceable> argument represents the snapshot
|
||||
file name.
|
||||
For example:
|
||||
<screen>
|
||||
postgres=# SELECT * FROM pg_ls_logicalsnapdir();
|
||||
-[ RECORD 1 ]+-----------------------
|
||||
name | 0-40796E18.snap
|
||||
size | 152
|
||||
modification | 2024-08-14 16:36:32+00
|
||||
|
||||
postgres=# SELECT * FROM pg_get_logical_snapshot_meta('0-40796E18.snap');
|
||||
-[ RECORD 1 ]--------
|
||||
magic | 1369563137
|
||||
checksum | 1028045905
|
||||
version | 6
|
||||
|
||||
postgres=# SELECT ss.name, meta.* FROM pg_ls_logicalsnapdir() AS ss,
|
||||
pg_get_logical_snapshot_meta(ss.name) AS meta;
|
||||
-[ RECORD 1 ]-------------
|
||||
name | 0-40796E18.snap
|
||||
magic | 1369563137
|
||||
checksum | 1028045905
|
||||
version | 6
|
||||
</screen>
|
||||
</para>
|
||||
<para>
|
||||
If <replaceable>filename</replaceable> does not match a snapshot file, the
|
||||
function raises an error.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="pglogicalinspect-funcs-pg-get-logical-snapshot-info">
|
||||
<term>
|
||||
<function>pg_get_logical_snapshot_info(filename text) returns record</function>
|
||||
</term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Gets logical snapshot information about a snapshot file that is located in
|
||||
the server's <filename>pg_logical/snapshots</filename> directory.
|
||||
The <replaceable>filename</replaceable> argument represents the snapshot
|
||||
file name.
|
||||
For example:
|
||||
<screen>
|
||||
postgres=# SELECT * FROM pg_ls_logicalsnapdir();
|
||||
-[ RECORD 1 ]+-----------------------
|
||||
name | 0-40796E18.snap
|
||||
size | 152
|
||||
modification | 2024-08-14 16:36:32+00
|
||||
|
||||
postgres=# SELECT * FROM pg_get_logical_snapshot_info('0-40796E18.snap');
|
||||
-[ RECORD 1 ]------------+-----------
|
||||
state | consistent
|
||||
xmin | 751
|
||||
xmax | 751
|
||||
start_decoding_at | 0/40796AF8
|
||||
two_phase_at | 0/40796AF8
|
||||
initial_xmin_horizon | 0
|
||||
building_full_snapshot | f
|
||||
in_slot_creation | f
|
||||
last_serialized_snapshot | 0/0
|
||||
next_phase_at | 0
|
||||
committed_count | 0
|
||||
committed_xip |
|
||||
catchange_count | 2
|
||||
catchange_xip | {751,752}
|
||||
|
||||
postgres=# SELECT ss.name, info.* FROM pg_ls_logicalsnapdir() AS ss,
|
||||
pg_get_logical_snapshot_info(ss.name) AS info;
|
||||
-[ RECORD 1 ]------------+----------------
|
||||
name | 0-40796E18.snap
|
||||
state | consistent
|
||||
xmin | 751
|
||||
xmax | 751
|
||||
start_decoding_at | 0/40796AF8
|
||||
two_phase_at | 0/40796AF8
|
||||
initial_xmin_horizon | 0
|
||||
building_full_snapshot | f
|
||||
in_slot_creation | f
|
||||
last_serialized_snapshot | 0/0
|
||||
next_phase_at | 0
|
||||
committed_count | 0
|
||||
committed_xip |
|
||||
catchange_count | 2
|
||||
catchange_xip | {751,752}
|
||||
</screen>
|
||||
</para>
|
||||
<para>
|
||||
If <replaceable>filename</replaceable> does not match a snapshot file, the
|
||||
function raises an error.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="pglogicalinspect-author">
|
||||
<title>Author</title>
|
||||
|
||||
<para>
|
||||
Bertrand Drouvot <email>bertranddrouvot.pg@gmail.com</email>
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
Reference in New Issue
Block a user