mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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:
 | 
						|
 | 
						|
        test=# SELECT * FROM page_header(get_raw_page('pg_class',0));
 | 
						|
           lsn    | tli | flags | lower | upper | special | pagesize | version
 | 
						|
        ----------+-----+-------+-------+-------+---------+----------+---------
 | 
						|
         0/3C5614 |   1 |     1 |   216 |   256 |    8192 |     8192 |       4
 | 
						|
        (1 row)
 | 
						|
 | 
						|
    The returned columns correspond to the fields in the PageHeaderData-struct,
 | 
						|
    see src/include/storage/bufpage.h for more 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
 |