Le module pageinspect fournit des fonctions qui vous permettent d'inspecter le contenu des pages de la base de données à un bas niveau, ce qui utile pour le débogage. Toutes ces fonctions ne sont utilisables que par les super-utilisateurs.
get_raw_page lit le bloc spécifié de la table nommée et renvoie une copie en tant que valeur de type bytea. Ceci permet la récupération de la copie cohérente à un instant t d'un bloc spécifique. fork devrait être 'main' pour les données, et 'fsm' pour la carte des espaces libres, ou 'vm' pour la carte de visibilité.
Une version raccourcie de get_raw_page, pour le lire que la partie des données. Équivalent à get_raw_page(relname, 'main', blkno).
page_header affiche les champs communs à toutes les pages des tables et index PostgreSQL™.
L'image d'une page obtenu avec get_raw_page doit être passé en argument. Par exemple :
test=# SELECT * FROM page_header(get_raw_page('pg_class', 0)); lsn | tli | flags | lower | upper | special | pagesize | version | prune_xid -----------+-----+-------+-------+-------+---------+----------+---------+----------- 0/24A1B50 | 1 | 1 | 232 | 368 | 8192 | 8192 | 4 | 0
Les colonnes renvoyées correspondent aux champs de la structure PageHeaderData. Voir src/include/storage/bufpage.h pour les détails.
heap_page_items affiche tous les pointeurs de ligne dans une page de table. Pour les pointeurs de ligne en utilisation, les en-têtes de ligne sont aussi affichées. Toutes les lignes sont affichées, qu'elles soient ou non visibles dans l'image MVCC au moment où la page brute a été copiée.
Une image d'une page de table obtenue avec get_raw_page doit être fournie en argument. Par exemple :
test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0));
Voir src/include/storage/itemid.h et src/include/access/htup.h pour des explications sur les champs renvoyés.
bt_metap renvoie des informations sur une méta-page d'un index btree. Par exemple :
test=# SELECT * FROM bt_metap('pg_cast_oid_index'); -[ RECORD 1 ]----- magic | 340322 version | 2 root | 1 level | 0 fastroot | 1 fastlevel | 0
bt_page_stats renvoie un résumé des informations sur les pages enfants des index btree. Par exemple :
test=# SELECT * FROM bt_page_stats('pg_cast_oid_index', 1); -[ RECORD 1 ]-+----- blkno | 1 type | l live_items | 256 dead_items | 0 avg_item_size | 12 page_size | 8192 free_size | 4056 btpo_prev | 0 btpo_next | 0 btpo | 0 btpo_flags | 3
bt_page_items renvoie des informations détaillées sur tous les éléments d'une page d'index btree. Par exemple :
test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); itemoffset | ctid | itemlen | nulls | vars | data ------------+---------+---------+-------+------+------------- 1 | (0,1) | 12 | f | f | 23 27 00 00 2 | (0,2) | 12 | f | f | 24 27 00 00 3 | (0,3) | 12 | f | f | 25 27 00 00 4 | (0,4) | 12 | f | f | 26 27 00 00 5 | (0,5) | 12 | f | f | 27 27 00 00 6 | (0,6) | 12 | f | f | 28 27 00 00 7 | (0,7) | 12 | f | f | 29 27 00 00 8 | (0,8) | 12 | f | f | 2a 27 00 00
fsm_page_contents affiche la structure interne d'une page FSM. La sortie est une chaîne multi-lignes, chaque ligne décrivant un nœud de l'arbre binaire d'une page. Seuls les nœuds différents de zéro sont affichés. Le pointeur appelé « next », qui pointe vers le prochain slot à renvoyer pour cette page, est aussi affiché.
Voir src/backend/storage/freespace/README pour plus d'informations sur la structure d'une page FSM.