diff options
author | Masahiko Sawada | 2024-10-15 00:22:02 +0000 |
---|---|---|
committer | Masahiko Sawada | 2024-10-15 00:22:02 +0000 |
commit | 7cdfeee320e72162b62dddddee638e713c2b8680 (patch) | |
tree | f96ad90afe907be7ec9191bc845f79628325bfc4 /doc/src | |
parent | e2fd615ecc177493b9a961a640ec0dcc4a25755c (diff) |
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
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/contrib.sgml | 1 | ||||
-rw-r--r-- | doc/src/sgml/filelist.sgml | 1 | ||||
-rw-r--r-- | doc/src/sgml/pglogicalinspect.sgml | 143 |
3 files changed, 145 insertions, 0 deletions
diff --git a/doc/src/sgml/contrib.sgml b/doc/src/sgml/contrib.sgml index 44639a8dcab..7c381949a53 100644 --- a/doc/src/sgml/contrib.sgml +++ b/doc/src/sgml/contrib.sgml @@ -154,6 +154,7 @@ CREATE EXTENSION <replaceable>extension_name</replaceable>; &pgbuffercache; &pgcrypto; &pgfreespacemap; + &pglogicalinspect; &pgprewarm; &pgrowlocks; &pgstatstatements; diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index a7ff5f82642..66e6dccd4c9 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -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"> diff --git a/doc/src/sgml/pglogicalinspect.sgml b/doc/src/sgml/pglogicalinspect.sgml new file mode 100644 index 00000000000..4b111f96113 --- /dev/null +++ b/doc/src/sgml/pglogicalinspect.sgml @@ -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>[email protected]</email> + </para> + </sect2> + +</sect1> |