Attached documentation patch describes the purpose of bt_page_items()'s ctid field. This has come up enough times in disaster recovery or testing scenarios that I feel it's worth drawing particular attention to.
-- Peter Geoghegan
diff --git a/doc/src/sgml/pageinspect.sgml b/doc/src/sgml/pageinspect.sgml index 6f51dc6..433bcb2 100644 --- a/doc/src/sgml/pageinspect.sgml +++ b/doc/src/sgml/pageinspect.sgml @@ -192,6 +192,13 @@ test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); 7 | (0,7) | 12 | f | f | 29 27 00 00 8 | (0,8) | 12 | f | f | 2a 27 00 00 </screen> + Note that <structfield>ctid</> addresses a heap tuple if the + page under consideration is a B-Tree leaf page. Otherwise, for + internal B-Tree pages <structfield>ctid</> addresses a page in + the B-Tree itself (excluding the root page if and only if there + has not yet been a root page split, as in the example above). + These internally referenced pages are child pages, and may + themselves be leaf pages or internal pages. </para> </listitem> </varlistentry>
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers