Manual:Page props table

Contains properties about pages set by the parser via ParserOutput::setProperty, such as the display title and the default category sortkey. In particular, all double underscore magic words are automatically recorded here. Also, many extensions use this table to store their own data. Note that reparsing a page causes all of its properties to be purged from this table and replaced with the new ones, so this table is not suitable for storing data that can't be regenerated during a reparse.

pp_page
page_id by which the name/value pair is indexed

pp_propname
Page property name

pp_value
Page property value

pp_sortkey
This is so pages can be efficiently queried and sorted by property value (see ).

Schema
mysql> describe page_props; +-+---+--+-+-+---+ +-+---+--+-+-+---+ +-+---+--+-+-+---+
 * Field      | Type          | Null | Key | Default | Extra |
 * pp_page    | int(11)       | NO   | PRI | NULL    |       |
 * pp_propname | varbinary(60) | NO  | PRI | NULL    |       |
 * pp_value   | blob          | NO   |     | NULL    |       |

mysql> SELECT DISTINCT pp_propname FROM page_props; +--+ +--+ +--+ 13 rows in set (1.97 sec)
 * pp_propname     |
 * defaultsort     |
 * notoc           |
 * displaytitle    |
 * nonewsectionlink |
 * noindex         |
 * forcetoc        |
 * noeditsection   |
 * newsectionlink  |
 * notitleconvert  |
 * nogallery       |
 * index           |
 * hiddencat       |
 * staticredirect  |

Example of a simple extension that uses this table
Here is an example of an extension that uses the page_props table. It defines two parser tags (hooks) - &lt;getprop&gt; and &lt;setprop&gt;. A prop can be set by Property to set, and retrieved via (for the current page) or to get it for some other page.