F.28. pg_logicalinspect — inspección de componentes de decodificación lógica #

F.28.1. Funciones
F.28.2. Autor

El módulo pg_logicalinspect proporciona funciones SQL que permiten inspeccionar el contenido de los componentes de la decodificación lógica. Permite la inspección de instantáneas lógicas serializadas de un clúster de base de datos PostgreSQL en ejecución, lo que es útil para fines de depuración o educativos.

Por defecto, el uso de estas funciones está restringido a los superusuarios y a los miembros del rol pg_read_server_files. Los superusuarios pueden conceder acceso a otros usuarios utilizando GRANT.

F.28.1. Funciones #

pg_get_logical_snapshot_meta(filename text) returns record #

Obtiene los metadatos de la instantánea lógica sobre un archivo de instantánea que se encuentra en el directorio pg_logical/snapshots del servidor. El argumento filename representa el nombre del archivo de la instantánea. Por ejemplo:

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

Si filename no coincide con un archivo de instantánea, la función genera un error.

pg_get_logical_snapshot_info(filename text) returns record #

Obtiene información de la instantánea lógica sobre un archivo de instantánea que se encuentra en el directorio pg_logical/snapshots del servidor. El argumento filename representa el nombre del archivo de la instantánea. Por ejemplo:

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}

Si filename no coincide con un archivo de instantánea, la función genera un error.

F.28.2. Autor #

Bertrand Drouvot