You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
postgres/contrib/pageinspect
Tom Lane cc59049daf Improve handling of prune/no-prune decisions by storing a page's oldest 19 years ago
..
Makefile Fix PGXS conventions so that extensions can be built against Postgres 19 years ago
README.pageinspect Improve handling of prune/no-prune decisions by storing a page's oldest 19 years ago
btreefuncs.c Redefine the lp_flags field of item pointers as having four states, rather 19 years ago
heapfuncs.c Redefine the lp_flags field of item pointers as having four states, rather 19 years ago
pageinspect.sql.in Improve handling of prune/no-prune decisions by storing a page's oldest 19 years ago
rawpage.c Improve handling of prune/no-prune decisions by storing a page's oldest 19 years ago
uninstall_pageinspect.sql Code review for btreefuncs additions: restrict to superusers to avoid 19 years ago

README.pageinspect

The functions in this module allow you to inspect the contents of data pages
at a low level, for debugging purposes. All of these functions may be used
only by superusers.

1. Installation

$ make
$ make install
$ psql -e -f /usr/local/pgsql/share/contrib/pageinspect.sql test

2. Functions included:

get_raw_page
------------
get_raw_page reads one block of the named table and returns a copy as a
bytea field. This allows a single time-consistent copy of the block to be
made.

page_header
-----------
page_header shows fields which are common to all PostgreSQL heap and index
pages.

A page image obtained with get_raw_page should be passed as argument:

regression=# 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
(1 row)

The returned columns correspond to the fields in the PageHeaderData struct.
See src/include/storage/bufpage.h for details.

heap_page_items
---------------
heap_page_items shows all line pointers on a heap page. For those line
pointers that are in use, tuple headers are also shown. All tuples are
shown, whether or not the tuples were visible to an MVCC snapshot at the
time the raw page was copied.

A heap page image obtained with get_raw_page should be passed as argument:

test=# SELECT * FROM heap_page_items(get_raw_page('pg_class',0));

See src/include/storage/itemid.h and src/include/access/htup.h for
explanations of the fields returned.

bt_metap
--------
bt_metap() returns information about a btree index's metapage:

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
-------------
bt_page_stats() shows information about single btree pages:

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
-------------
bt_page_items() returns information about specific items on btree pages:

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