diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 3c0c30c939a0f517f03d6c3098f8caacb2884169..e70cee4506f2f01ebb678e6aab96f49805de2109 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -1,14 +1,11 @@ <!-- Documentation of the system catalogs, directed toward PostgreSQL developers - $Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.68 2003/03/25 16:15:35 petere Exp $ + $Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.69 2003/04/15 13:23:35 petere Exp $ --> <chapter id="catalogs"> <title>System Catalogs</title> - <sect1 id="catalogs-overview"> - <title>Overview</title> - <para> The system catalogs are the place where a relational database management system stores schema metadata, such as information about @@ -16,21 +13,30 @@ <productname>PostgreSQL</productname>'s system catalogs are regular tables. You can drop and recreate the tables, add columns, insert and update values, and severely mess up your system that way. - Normally one should not change the system catalogs by hand, there + Normally, one should not change the system catalogs by hand, there are always SQL commands to do that. (For example, <command>CREATE DATABASE</command> inserts a row into the - <structname>pg_database</structname> catalog -- and actually + <structname>pg_database</structname> catalog --- and actually creates the database on disk.) There are some exceptions for - especially esoteric operations, such as adding index access methods. + particularly esoteric operations, such as adding index access methods. + </para> + + <sect1 id="catalogs-overview"> + <title>Overview</title> + + <para> + <xref linkend="catalog-table"> lists the system catalogs. + More detailed documentation of each catalog follows below. </para> + <para> Most system catalogs are copied from the template database during - database creation, and are thereafter database-specific. A few - catalogs are physically shared across all databases in an installation; + database creation and are thereafter database-specific. A few + catalogs are physically shared across all databases in a cluster; these are marked in the descriptions of the individual catalogs. </para> - <table> + <table id="catalog-table"> <title>System Catalogs</title> <tgroup cols="2"> @@ -43,185 +49,159 @@ <tbody> <row> - <entry><link linkend="catalog-pg-aggregate"> - <database class="table">pg_aggregate</database></link></entry> + <entry><link linkend="catalog-pg-aggregate"><structname>pg_aggregate</structname></link></entry> <entry>aggregate functions</entry> </row> <row> - <entry>pg_am</entry> + <entry><link linkend="catalog-pg-am"><structname>pg_am</structname></link></entry> <entry>index access methods</entry> </row> <row> - <entry>pg_amop</entry> + <entry><link linkend="catalog-pg-amop"><structname>pg_amop</structname></link></entry> <entry>access method operators</entry> </row> <row> - <entry>pg_amproc</entry> + <entry><link linkend="catalog-pg-amproc"><structname>pg_amproc</structname></link></entry> <entry>access method support procedures</entry> </row> <row> - <entry><link linkend="catalog-pg-attrdef"> - <database class="table">pg_attrdef</database></link></entry> + <entry><link linkend="catalog-pg-attrdef"><structname>pg_attrdef</structname></link></entry> <entry>column default values</entry> </row> <row> - <entry><link linkend="catalog-pg-attribute"> - <database class="table">pg_attribute</database></link></entry> - <entry>table columns (<quote>attributes</quote>, <quote>fields</quote>)</entry> + <entry><link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link></entry> + <entry>table columns (<quote>attributes</quote>)</entry> </row> <row> - <entry><link linkend="catalog-pg-cast"> - <database class="table">pg_cast</database></link></entry> + <entry><link linkend="catalog-pg-cast"><structname>pg_cast</structname></link></entry> <entry>casts (data type conversions)</entry> </row> <row> - <entry><link linkend="catalog-pg-class"> - <database class="table">pg_class</database></link></entry> + <entry><link linkend="catalog-pg-class"><structname>pg_class</structname></link></entry> <entry>tables, indexes, sequences (<quote>relations</quote>)</entry> </row> <row> - <entry><link linkend="catalog-pg-constraint"> - <database class="table">pg_constraint</database></link></entry> - <entry>check constraints, unique / primary key constraints, foreign key constraints</entry> + <entry><link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link></entry> + <entry>check constraints, unique constraints, primary key constraints, foreign key constraints</entry> </row> <row> - <entry><link linkend="catalog-pg-conversion"> - <database class="table">pg_conversion</database></link></entry> + <entry><link linkend="catalog-pg-conversion"><structname>pg_conversion</structname></link></entry> <entry>encoding conversion information</entry> </row> <row> - <entry><link linkend="catalog-pg-database"> - <database class="table">pg_database</database></link></entry> + <entry><link linkend="catalog-pg-database"><structname>pg_database</structname></link></entry> <entry>databases within this database cluster</entry> </row> <row> - <entry><link linkend="catalog-pg-depend"> - <database class="table">pg_depend</database></link></entry> + <entry><link linkend="catalog-pg-depend"><structname>pg_depend</structname></link></entry> <entry>dependencies between database objects</entry> </row> <row> - <entry><link linkend="catalog-pg-description"> - <database class="table">pg_description</database></link></entry> + <entry><link linkend="catalog-pg-description"><structname>pg_description</structname></link></entry> <entry>descriptions or comments on database objects</entry> </row> <row> - <entry><link linkend="catalog-pg-group"> - <database class="table">pg_group</database></link></entry> + <entry><link linkend="catalog-pg-group"><structname>pg_group</structname></link></entry> <entry>groups of database users</entry> </row> <row> - <entry><link linkend="catalog-pg-index"> - <database class="table">pg_index</database></link></entry> + <entry><link linkend="catalog-pg-index"><structname>pg_index</structname></link></entry> <entry>additional index information</entry> </row> <row> - <entry><link linkend="catalog-pg-inherits"> - <database class="table">pg_inherits</database></link></entry> + <entry><link linkend="catalog-pg-inherits"><structname>pg_inherits</structname></link></entry> <entry>table inheritance hierarchy</entry> </row> <row> - <entry><link linkend="catalog-pg-language"> - <database class="table">pg_language</database></link></entry> + <entry><link linkend="catalog-pg-language"><structname>pg_language</structname></link></entry> <entry>languages for writing functions</entry> </row> <row> - <entry><link linkend="catalog-pg-largeobject"> - <database class="table">pg_largeobject</database></link></entry> + <entry><link linkend="catalog-pg-largeobject"><structname>pg_largeobject</structname></link></entry> <entry>large objects</entry> </row> <row> - <entry><link linkend="catalog-pg-listener"> - <database class="table">pg_listener</database></link></entry> - <entry>asynchronous notification</entry> + <entry><link linkend="catalog-pg-listener"><structname>pg_listener</structname></link></entry> + <entry>asynchronous notification support</entry> </row> <row> - <entry><link linkend="catalog-pg-namespace"> - <database class="table">pg_namespace</database></link></entry> - <entry>namespaces (schemas)</entry> + <entry><link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link></entry> + <entry>schemas</entry> </row> <row> - <entry><link linkend="catalog-pg-opclass"> - <database class="table">pg_opclass</database></link></entry> + <entry><link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link></entry> <entry>index access method operator classes</entry> </row> <row> - <entry><link linkend="catalog-pg-operator"> - <database class="table">pg_operator</database></link></entry> + <entry><link linkend="catalog-pg-operator"><structname>pg_operator</structname></link></entry> <entry>operators</entry> </row> <row> - <entry><link linkend="catalog-pg-proc"> - <database class="table">pg_proc</database></link></entry> + <entry><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link></entry> <entry>functions and procedures</entry> </row> <row> - <entry><link linkend="catalog-pg-rewrite"> - <database class="table">pg_rewrite</database></link></entry> - <entry>query rewriter rules</entry> + <entry><link linkend="catalog-pg-rewrite"><structname>pg_rewrite</structname></link></entry> + <entry>query rewrite rules</entry> </row> <row> - <entry><link linkend="catalog-pg-shadow"> - <database class="table">pg_shadow</database></link></entry> + <entry><link linkend="catalog-pg-shadow"><structname>pg_shadow</structname></link></entry> <entry>database users</entry> </row> <row> - <entry><link linkend="catalog-pg-statistic"> - <database class="table">pg_statistic</database></link></entry> - <entry>optimizer statistics</entry> + <entry><link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link></entry> + <entry>planner statistics</entry> </row> <row> - <entry><link linkend="catalog-pg-trigger"> - <database class="table">pg_trigger</database></link></entry> + <entry><link linkend="catalog-pg-trigger"><structname>pg_trigger</structname></link></entry> <entry>triggers</entry> </row> <row> - <entry><link linkend="catalog-pg-type"> - <database class="table">pg_type</database></link></entry> + <entry><link linkend="catalog-pg-type"><structname>pg_type</structname></link></entry> <entry>data types</entry> </row> </tbody> </tgroup> </table> - - <para> - More detailed documentation of each catalog follows below. - </para> - </sect1> <sect1 id="catalog-pg-aggregate"> - <title>pg_aggregate</title> + <title><structname>pg_aggregate</structname></title> + + <indexterm zone="catalog-pg-aggregate"> + <primary>pg_aggregate</primary> + </indexterm> <para> - <structname>pg_aggregate</structname> stores information about + The catalog <structname>pg_aggregate</structname> stores information about aggregate functions. An aggregate function is a function that operates on a set of values (typically one column from each row that matches a query condition) and returns a single value computed @@ -230,12 +210,12 @@ <function>max</function>. Each entry in <structname>pg_aggregate</structname> is an extension of an entry in <structname>pg_proc</structname>. The <structname>pg_proc</structname> - entry carries the aggregate's name, input and output datatypes, and + entry carries the aggregate's name, input and output data types, and other information that is similar to ordinary functions. </para> <table> - <title>pg_aggregate Columns</title> + <title><structname>pg_aggregate</> Columns</title> <tgroup cols=4> <thead> @@ -248,38 +228,38 @@ </thead> <tbody> <row> - <entry>aggfnoid</entry> + <entry><structfield>aggfnoid</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry>pg_proc OID of the aggregate function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><structname>pg_proc</structname> OID of the aggregate function</entry> </row> <row> - <entry>aggtransfn</entry> + <entry><structfield>aggtransfn</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Transition function</entry> </row> <row> - <entry>aggfinalfn</entry> + <entry><structfield>aggfinalfn</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Final function (zero if none)</entry> </row> <row> - <entry>aggtranstype</entry> + <entry><structfield>aggtranstype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>The type of the aggregate function's internal transition (state) data</entry> </row> <row> - <entry>agginitval</entry> + <entry><structfield>agginitval</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry> The initial value of the transition state. This is a text field containing the initial value in its external string - representation. If the field is NULL, the transition state - value starts out NULL. + representation. If the value is null, the transition state + value starts out null. </entry> </row> </tbody> @@ -297,16 +277,20 @@ <sect1 id="catalog-pg-am"> - <title>pg_am</title> + <title><structname>pg_am</structname></title> + + <indexterm zone="catalog-pg-am"> + <primary>pg_am</primary> + </indexterm> <para> - <structname>pg_am</structname> stores information about index access + The catalog <structname>pg_am</structname> stores information about index access methods. There is one row for each index access method supported by the system. </para> <table> - <title>pg_am Columns</title> + <title><structname>pg_am</> Columns</title> <tgroup cols=4> <thead> @@ -320,144 +304,144 @@ <tbody> <row> - <entry>amname</entry> + <entry><structfield>amname</structfield></entry> <entry><type>name</type></entry> <entry></entry> - <entry>name of the access method</entry> + <entry>Name of the access method</entry> </row> <row> - <entry>amowner</entry> + <entry><structfield>amowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>user ID of the owner (currently not used)</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>User ID of the owner (currently not used)</entry> </row> <row> - <entry>amstrategies</entry> + <entry><structfield>amstrategies</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>number of operator strategies for this access method</entry> + <entry>Number of operator strategies for this access method</entry> </row> <row> - <entry>amsupport</entry> + <entry><structfield>amsupport</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>number of support routines for this access method</entry> + <entry>Number of support routines for this access method</entry> </row> <row> - <entry>amorderstrategy</entry> + <entry><structfield>amorderstrategy</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>zero if the index offers no sort order, otherwise the strategy + <entry>Zero if the index offers no sort order, otherwise the strategy number of the strategy operator that describes the sort order</entry> </row> <row> - <entry>amcanunique</entry> + <entry><structfield>amcanunique</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>does AM support unique indexes?</entry> + <entry>Does the access method support unique indexes?</entry> </row> <row> - <entry>amcanmulticol</entry> + <entry><structfield>amcanmulticol</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>does AM support multicolumn indexes?</entry> + <entry>Does the access method support multicolumn indexes?</entry> </row> <row> - <entry>amindexnulls</entry> + <entry><structfield>amindexnulls</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>does AM support NULL index entries?</entry> + <entry>Does the access method support null index entries?</entry> </row> <row> - <entry>amconcurrent</entry> + <entry><structfield>amconcurrent</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>does AM support concurrent updates?</entry> + <entry>Does the access method support concurrent updates?</entry> </row> <row> - <entry>amgettuple</entry> + <entry><structfield>amgettuple</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>next valid tuple</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Next valid tuple</quote> function</entry> </row> <row> - <entry>aminsert</entry> + <entry><structfield>aminsert</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>insert this tuple</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Insert this tuple</quote> function</entry> </row> <row> - <entry>ambeginscan</entry> + <entry><structfield>ambeginscan</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>start new scan</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Start new scan</quote> function</entry> </row> <row> - <entry>amrescan</entry> + <entry><structfield>amrescan</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>restart this scan</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Restart this scan</quote> function</entry> </row> <row> - <entry>amendscan</entry> + <entry><structfield>amendscan</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>end this scan</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>End this scan</quote> function</entry> </row> <row> - <entry>ammarkpos</entry> + <entry><structfield>ammarkpos</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>mark current scan position</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Mark current scan position</quote> function</entry> </row> <row> - <entry>amrestrpos</entry> + <entry><structfield>amrestrpos</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>restore marked scan position</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Restore marked scan position</quote> function</entry> </row> <row> - <entry>ambuild</entry> + <entry><structfield>ambuild</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry><quote>build new index</quote> function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry><quote>Build new index</quote> function</entry> </row> <row> - <entry>ambulkdelete</entry> + <entry><structfield>ambulkdelete</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry>bulk-delete function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry>Bulk-delete function</entry> </row> <row> - <entry>amvacuumcleanup</entry> + <entry><structfield>amvacuumcleanup</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry>post-VACUUM cleanup function</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry>Post-<command>VACUUM</command> cleanup function</entry> </row> <row> - <entry>amcostestimate</entry> + <entry><structfield>amcostestimate</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry>estimate cost of an indexscan</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry>Function to estimate cost of an index scan</entry> </row> </tbody> @@ -465,33 +449,37 @@ </table> <para> - An index AM that supports multiple columns (has + An index access method that supports multiple columns (has <structfield>amcanmulticol</structfield> true) <emphasis>must</> - support indexing nulls in columns after the first, because the planner + support indexing null values in columns after the first, because the planner will assume the index can be used for queries on just the first - column(s). For example, consider an index on (a,b) and a query - WHERE a = 4. The system will assume the index can be used to scan for - rows with a = 4, which is wrong if the index omits rows where b is null. - However it is okay to omit rows where the first indexed column is null. + column(s). For example, consider an index on (a,b) and a query with + <literal>WHERE a = 4</literal>. The system will assume the index can be used to scan for + rows with <literal>a = 4</literal>, which is wrong if the index omits rows where <literal>b</> is null. + It is, however, OK to omit rows where the first indexed column is null. (GiST currently does so.) <structfield>amindexnulls</structfield> should be set true only if the - index AM indexes all rows, including arbitrary combinations of nulls. + index access method indexes all rows, including arbitrary combinations of null values. </para> </sect1> <sect1 id="catalog-pg-amop"> - <title>pg_amop</title> + <title><structname>pg_amop</structname></title> + + <indexterm zone="catalog-pg-amop"> + <primary>pg_amop</primary> + </indexterm> <para> - <structname>pg_amop</structname> stores information about operators + The catalog <structname>pg_amop</structname> stores information about operators associated with index access method operator classes. There is one row for each operator that is a member of an operator class. </para> <table> - <title>pg_amop Columns</title> + <title><structname>pg_amop</> Columns</title> <tgroup cols=4> <thead> @@ -505,31 +493,31 @@ <tbody> <row> - <entry>amopclaid</entry> + <entry><structfield>amopclaid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_opclass.oid</entry> - <entry>the index opclass this entry is for</entry> + <entry><literal>pg_opclass.oid</literal></entry> + <entry>The index operator class this entry is for</entry> </row> <row> - <entry>amopstrategy</entry> + <entry><structfield>amopstrategy</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>operator strategy number</entry> + <entry>Operator strategy number</entry> </row> <row> - <entry>amopreqcheck</entry> + <entry><structfield>amopreqcheck</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>index hit must be rechecked</entry> + <entry>Index hit must be rechecked</entry> </row> <row> - <entry>amopopr</entry> + <entry><structfield>amopopr</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> - <entry>the operator's pg_operator OID</entry> + <entry><literal>pg_operator.oid</literal></entry> + <entry>OID of the operator</entry> </row> </tbody> @@ -540,17 +528,21 @@ <sect1 id="catalog-pg-amproc"> - <title>pg_amproc</title> + <title><structname>pg_amproc</structname></title> + + <indexterm zone="catalog-pg-amproc"> + <primary>pg_amproc</primary> + </indexterm> <para> - <structname>pg_amproc</structname> stores information about support + The catalog <structname>pg_amproc</structname> stores information about support procedures associated with index access method operator classes. There is one row for each support procedure belonging to an operator class. </para> <table> - <title>pg_amproc Columns</title> + <title><structname>pg_amproc</structname> Columns</title> <tgroup cols=4> <thead> @@ -564,24 +556,24 @@ <tbody> <row> - <entry>amopclaid</entry> + <entry><structfield>amopclaid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_opclass.oid</entry> - <entry>the index opclass this entry is for</entry> + <entry><literal>pg_opclass.oid</literal></entry> + <entry>The index operator class this entry is for</entry> </row> <row> - <entry>amprocnum</entry> + <entry><structfield>amprocnum</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>support procedure index</entry> + <entry>Support procedure number</entry> </row> <row> - <entry>amproc</entry> + <entry><structfield>amproc</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> - <entry>OID of the proc</entry> + <entry><literal>pg_proc.oid</literal></entry> + <entry>OID of the procedure</entry> </row> </tbody> @@ -592,10 +584,14 @@ <sect1 id="catalog-pg-attrdef"> - <title>pg_attrdef</title> + <title><structname>pg_attrdef</structname></title> + + <indexterm zone="catalog-pg-attrdef"> + <primary>pg_attrdef</primary> + </indexterm> <para> - This catalog stores column default values. The main information + The catalog <structname>pg_attrdef</structname> stores column default values. The main information about columns is stored in <structname>pg_attribute</structname> (see below). Only columns that explicitly specify a default value (when the table is created or the column is added) will have an @@ -603,7 +599,7 @@ </para> <table> - <title>pg_attrdef Columns</title> + <title><structname>pg_attrdef</> Columns</title> <tgroup cols=4> <thead> @@ -617,28 +613,28 @@ <tbody> <row> - <entry>adrelid</entry> + <entry><structfield>adrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table this column belongs to</entry> </row> <row> - <entry>adnum</entry> + <entry><structfield>adnum</structfield></entry> <entry><type>int2</type></entry> - <entry>pg_attribute.attnum</entry> + <entry><literal>pg_attribute.attnum</literal></entry> <entry>The number of the column</entry> </row> <row> - <entry>adbin</entry> + <entry><structfield>adbin</structfield></entry> <entry><type>text</type></entry> <entry></entry> - <entry>An internal representation of the column default value</entry> + <entry>The internal representation of the column default value</entry> </row> <row> - <entry>adsrc</entry> + <entry><structfield>adsrc</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry>A human-readable representation of the default value</entry> @@ -651,10 +647,14 @@ <sect1 id="catalog-pg-attribute"> - <title>pg_attribute</title> + <title><structname>pg_attribute</structname></title> + + <indexterm zone="catalog-pg-attribute"> + <primary>pg_attribute</primary> + </indexterm> <para> - <structname>pg_attribute</structname> stores information about + The catalog <structname>pg_attribute</structname> stores information about table columns. There will be exactly one <structname>pg_attribute</structname> row for every column in every table in the database. (There will also be attribute entries for @@ -667,7 +667,7 @@ </para> <table> - <title>pg_attribute Columns</title> + <title><structname>pg_attribute</> Columns</title> <tgroup cols=4> <thead> @@ -681,28 +681,28 @@ <tbody> <row> - <entry>attrelid</entry> + <entry><structfield>attrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table this column belongs to</entry> </row> <row> - <entry>attname</entry> + <entry><structfield>attname</structfield></entry> <entry><type>name</type></entry> <entry></entry> - <entry>Column name</entry> + <entry>The column name</entry> </row> <row> - <entry>atttypid</entry> + <entry><structfield>atttypid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>The data type of this column</entry> </row> <row> - <entry>attstattarget</entry> + <entry><structfield>attstattarget</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -711,26 +711,25 @@ <command>ANALYZE</command>. A zero value indicates that no statistics should be collected. A negative value says to use the system default statistics target. - The exact meaning of positive values is datatype-dependent. - For scalar datatypes, <structfield>attstattarget</structfield> + The exact meaning of positive values is data type-dependent. + For scalar data types, <structfield>attstattarget</structfield> is both the target number of <quote>most common values</quote> to collect, and the target number of histogram bins to create. </entry> </row> <row> - <entry>attlen</entry> + <entry><structfield>attlen</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> - This is a copy of - <structname>pg_type</structname>.<structfield>typlen</structfield> - of this column's type. + A copy of <literal>pg_type.typlen</literal> of this column's + type </entry> </row> <row> - <entry>attnum</entry> + <entry><structfield>attnum</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> @@ -741,7 +740,7 @@ </row> <row> - <entry>attndims</entry> + <entry><structfield>attndims</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -752,7 +751,7 @@ </row> <row> - <entry>attcacheoff</entry> + <entry><structfield>attcacheoff</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -763,7 +762,7 @@ </row> <row> - <entry>atttypmod</entry> + <entry><structfield>atttypmod</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -771,35 +770,32 @@ supplied at table creation time (for example, the maximum length of a <type>varchar</type> column). It is passed to type-specific input functions and length coercion functions. - The value will generally be -1 for types that do not need typmod. + The value will generally be -1 for types that do not need <structfield>atttypmod</>. </entry> </row> <row> - <entry>attbyval</entry> + <entry><structfield>attbyval</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> - A copy of - <structname>pg_type</structname>.<structfield>typbyval</structfield> - of this column's type + A copy of <literal>pg_type.typbyval</> of this column's type </entry> </row> <row> - <entry>attstorage</entry> + <entry><structfield>attstorage</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - Normally a copy of - <structname>pg_type</structname>.<structfield>typstorage</structfield> - of this column's type. For TOASTable datatypes, this can be altered + Normally a copy of <literal>pg_type.typstorage</> of this + column's type. For TOAST-able data types, this can be altered after column creation to control storage policy. </entry> </row> <row> - <entry>attisset</entry> + <entry><structfield>attisset</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -807,7 +803,7 @@ stored in the attribute is the OID of a tuple in the <structname>pg_proc</structname> catalog. The <structname>pg_proc</structname> tuple contains the query - string that defines this set - i.e., the query to run to get + string that defines this set, i.e., the query to run to get the set. So the <structfield>atttypid</structfield> (see above) refers to the type returned by this query, but the actual length of this attribute is the length (size) of an @@ -817,28 +813,26 @@ </row> <row> - <entry>attalign</entry> + <entry><structfield>attalign</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - A copy of - <structname>pg_type</structname>.<structfield>typalign</structfield> - of this column's type + A copy of <literal>pg_type.typalign</> of this column's type </entry> </row> <row> - <entry>attnotnull</entry> + <entry><structfield>attnotnull</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> - This represents a NOT NULL constraint. It is possible to - change this field to enable or disable the constraint. + This represents a not-null constraint. It is possible to + change this column to enable or disable the constraint. </entry> </row> <row> - <entry>atthasdef</entry> + <entry><structfield>atthasdef</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -849,7 +843,7 @@ </row> <row> - <entry>attisdropped</entry> + <entry><structfield>attisdropped</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -860,7 +854,7 @@ </row> <row> - <entry>attislocal</entry> + <entry><structfield>attislocal</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -870,7 +864,7 @@ </row> <row> - <entry>attinhcount</entry> + <entry><structfield>attinhcount</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -886,15 +880,19 @@ <sect1 id="catalog-pg-cast"> - <title>pg_cast</title> + <title><structname>pg_cast</structname></title> + + <indexterm zone="catalog-pg-cast"> + <primary>pg_cast</primary> + </indexterm> <para> - <structname>pg_cast</structname> stores data type conversion paths, + The catalog <structname>pg_cast</structname> stores data type conversion paths, both built-in paths and those defined with <command>CREATE CAST</command>. </para> <table> - <title>pg_cast Columns</title> + <title><structfield>pg_cast</> Columns</title> <tgroup cols=4> <thead> @@ -908,32 +906,32 @@ <tbody> <row> - <entry>castsource</entry> + <entry><structfield>castsource</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>OID of the source data type</entry> </row> <row> - <entry>casttarget</entry> + <entry><structfield>casttarget</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>OID of the target data type</entry> </row> <row> - <entry>castfunc</entry> + <entry><structfield>castfunc</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry> The OID of the function to use to perform this cast. Zero is - stored if the data types are binary coercible (that is, no + stored if the data types are binary compatible (that is, no run-time operation is needed to perform the cast). </entry> </row> <row> - <entry>castcontext</entry> + <entry><structfield>castcontext</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> @@ -952,21 +950,25 @@ </sect1> <sect1 id="catalog-pg-class"> - <title>pg_class</title> + <title><structname>pg_class</structname></title> + + <indexterm zone="catalog-pg-class"> + <primary>pg_class</primary> + </indexterm> <para> - <structname>pg_class</structname> catalogs tables and most + The catalog <structname>pg_class</structname> catalogs tables and most everything else that has columns or is otherwise similar to a table. This includes indexes (but see also <structname>pg_index</structname>), sequences, views, and some kinds of special relation; see <structfield>relkind</>. Below, when we mean all of these kinds of objects we speak of <quote>relations</quote>. Not all - fields are meaningful for all relation types. + columns are meaningful for all relation types. </para> <table> - <title>pg_class Columns</title> + <title><structname>pg_class</> Columns</title> <tgroup cols=4> <thead> @@ -980,54 +982,54 @@ <tbody> <row> - <entry>relname</entry> + <entry><structfield>relname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the table, index, view, etc.</entry> </row> <row> - <entry>relnamespace</entry> + <entry><structfield>relnamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this relation </entry> </row> <row> - <entry>reltype</entry> + <entry><structfield>reltype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry> The OID of the data type that corresponds to this table, if any - (zero for indexes, which have no pg_type entry) + (zero for indexes, which have no <structname>pg_type</> entry) </entry> </row> <row> - <entry>relowner</entry> + <entry><structfield>relowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> <entry>Owner of the relation</entry> </row> <row> - <entry>relam</entry> + <entry><structfield>relam</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_am.oid</entry> + <entry><literal>pg_am.oid</literal></entry> <entry>If this is an index, the access method used (B-tree, hash, etc.)</entry> </row> <row> - <entry>relfilenode</entry> + <entry><structfield>relfilenode</structfield></entry> <entry><type>oid</type></entry> <entry></entry> <entry>Name of the on-disk file of this relation; 0 if none</entry> </row> <row> - <entry>relpages</entry> + <entry><structfield>relpages</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -1040,7 +1042,7 @@ </row> <row> - <entry>reltuples</entry> + <entry><structfield>reltuples</structfield></entry> <entry><type>float4</type></entry> <entry></entry> <entry> @@ -1052,9 +1054,9 @@ </row> <row> - <entry>reltoastrelid</entry> + <entry><structfield>reltoastrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry> OID of the TOAST table associated with this table, 0 if none. The TOAST table stores large attributes <quote>out of @@ -1063,29 +1065,29 @@ </row> <row> - <entry>reltoastidxid</entry> + <entry><structfield>reltoastidxid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry> For a TOAST table, the OID of its index. 0 if not a TOAST table. </entry> </row> <row> - <entry>relhasindex</entry> + <entry><structfield>relhasindex</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> True if this is a table and it has (or recently had) any indexes. This is set by <command>CREATE INDEX</command>, but not cleared immediately by <command>DROP INDEX</command>. - <command>VACUUM</command> clears relhasindex if it finds the + <command>VACUUM</command> clears <structfield>relhasindex</> if it finds the table has no indexes. </entry> </row> <row> - <entry>relisshared</entry> + <entry><structfield>relisshared</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>True if this table is shared across all databases in the @@ -1094,29 +1096,31 @@ </row> <row> - <entry>relkind</entry> + <entry><structfield>relkind</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - 'r' = ordinary table, 'i' = index, 'S' = sequence, 'v' = view, - 'c' = composite type, 's' = special, 't' = TOAST table + <literal>r</> = ordinary table, <literal>i</> = index, + <literal>S</> = sequence, <literal>v</> = view, <literal>c</> = + composite type, <literal>s</> = special, <literal>t</> = TOAST + table </entry> </row> <row> - <entry>relnatts</entry> + <entry><structfield>relnatts</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> - Number of user columns in the relation (system columns not counted). - There must be this many corresponding entries in + Number of user columns in the relation (system columns not + counted). There must be this many corresponding entries in <structname>pg_attribute</structname>. See also - <structname>pg_attribute</structname>.<structfield>attnum</structfield>. + <literal>pg_attribute.attnum</literal>. </entry> </row> <row> - <entry>relchecks</entry> + <entry><structfield>relchecks</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> @@ -1126,7 +1130,7 @@ </row> <row> - <entry>reltriggers</entry> + <entry><structfield>reltriggers</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> @@ -1136,28 +1140,28 @@ </row> <row> - <entry>relukeys</entry> + <entry><structfield>relukeys</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>unused (<emphasis>Not</emphasis> the number of unique keys)</entry> + <entry>unused (<emphasis>not</emphasis> the number of unique keys)</entry> </row> <row> - <entry>relfkeys</entry> + <entry><structfield>relfkeys</structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>unused (<emphasis>Not</emphasis> the number of foreign keys on the table)</entry> + <entry>unused (<emphasis>not</emphasis> the number of foreign keys on the table)</entry> </row> <row> - <entry>relrefs</entry> + <entry><structfield>relrefs</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry>unused</entry> </row> <row> - <entry>relhasoids</entry> + <entry><structfield>relhasoids</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -1166,7 +1170,7 @@ </row> <row> - <entry>relhaspkey</entry> + <entry><structfield>relhaspkey</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -1175,7 +1179,7 @@ </row> <row> - <entry>relhasrules</entry> + <entry><structfield>relhasrules</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>Table has rules; see @@ -1184,18 +1188,18 @@ </row> <row> - <entry>relhassubclass</entry> + <entry><structfield>relhassubclass</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>At least one table inherits from this one</entry> </row> <row> - <entry>relacl</entry> + <entry><structfield>relacl</structfield></entry> <entry><type>aclitem[]</type></entry> <entry></entry> <entry> - Access permissions. See the descriptions of + Access privileges; see the descriptions of <command>GRANT</command> and <command>REVOKE</command> for details. </entry> @@ -1206,30 +1210,26 @@ </sect1> <sect1 id="catalog-pg-constraint"> - <title>pg_constraint</title> + <title><structname>pg_constraint</structname></title> + + <indexterm zone="catalog-pg-constraint"> + <primary>pg_constraint</primary> + </indexterm> <para> - This system catalog stores CHECK, PRIMARY KEY, UNIQUE, and FOREIGN KEY - constraints on tables. (Column - constraints are not treated specially. Every column constraint is - equivalent to some table constraint.) See under <command>CREATE - TABLE</command> for more information. + The catalog <structname>pg_constraint</structname> stores check, primary key, unique, and foreign + key constraints on tables. (Column constraints are not treated + specially. Every column constraint is equivalent to some table + constraint.) Not-null constraints are represented in the + <structname>pg_attribute</> catalog. </para> - <note> - <para> - NOT NULL constraints are represented in the <structname>pg_attribute</> - catalog. - </para> - </note> - <para> - CHECK constraints on domains are stored here, too. Global ASSERTIONS - (a currently-unsupported SQL feature) may someday appear here as well. + Check constraints on domains are stored here, too. </para> <table> - <title>pg_constraint Columns</title> + <title><structname>pg_constraint</> Columns</title> <tgroup cols=4> <thead> @@ -1243,112 +1243,112 @@ <tbody> <row> - <entry>conname</entry> + <entry><structfield>conname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Constraint name (not necessarily unique!)</entry> </row> <row> - <entry>connamespace</entry> + <entry><structfield>connamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this constraint </entry> </row> <row> - <entry>contype</entry> + <entry><structfield>contype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - 'c' = check constraint, - 'f' = foreign key constraint, - 'p' = primary key constraint, - 'u' = unique constraint + <literal>c</> = check constraint, + <literal>f</> = foreign key constraint, + <literal>p</> = primary key constraint, + <literal>u</> = unique constraint </entry> </row> <row> - <entry>condeferrable</entry> - <entry><type>boolean</type></entry> + <entry><structfield>condeferrable</structfield></entry> + <entry><type>bool</type></entry> <entry></entry> <entry>Is the constraint deferrable?</entry> </row> <row> - <entry>condeferred</entry> - <entry><type>boolean</type></entry> + <entry><structfield>condeferred</structfield></entry> + <entry><type>bool</type></entry> <entry></entry> <entry>Is the constraint deferred by default?</entry> </row> <row> - <entry>conrelid</entry> + <entry><structfield>conrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table this constraint is on; 0 if not a table constraint</entry> </row> <row> - <entry>contypid</entry> + <entry><structfield>contypid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>The domain this constraint is on; 0 if not a domain constraint</entry> </row> <row> - <entry>confrelid</entry> + <entry><structfield>confrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>If a foreign key, the referenced table; else 0</entry> </row> <row> - <entry>confupdtype</entry> + <entry><structfield>confupdtype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry>Foreign key update action code</entry> </row> <row> - <entry>confdeltype</entry> + <entry><structfield>confdeltype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry>Foreign key deletion action code</entry> </row> <row> - <entry>confmatchtype</entry> + <entry><structfield>confmatchtype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry>Foreign key match type</entry> </row> <row> - <entry>conkey</entry> + <entry><structfield>conkey</structfield></entry> <entry><type>int2[]</type></entry> - <entry>pg_attribute.attnum</entry> + <entry><literal>pg_attribute.attnum</></entry> <entry>If a table constraint, list of columns which the constraint constrains</entry> </row> <row> - <entry>confkey</entry> + <entry><structfield>confkey</structfield></entry> <entry><type>int2[]</type></entry> - <entry>pg_attribute.attnum</entry> + <entry><literal>pg_attribute.attnum</></entry> <entry>If a foreign key, list of the referenced columns</entry> </row> <row> - <entry>conbin</entry> + <entry><structfield>conbin</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry>If a check constraint, an internal representation of the expression</entry> </row> <row> - <entry>consrc</entry> + <entry><structfield>consrc</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry>If a check constraint, a human-readable representation of the expression</entry> @@ -1359,24 +1359,28 @@ <note> <para> - <structname>pg_class</structname>.<structfield>relchecks</structfield> - needs to agree with the number of check-constraint entries found in this - table for the given relation. + <literal>pg_class.relchecks</literal> needs to agree with the + number of check-constraint entries found in this table for the + given relation. </para> </note> </sect1> <sect1 id="catalog-pg-conversion"> - <title>pg_conversion</title> + <title><structname>pg_conversion</structname></title> + + <indexterm zone="catalog-pg-conversion"> + <primary>pg_conversion</primary> + </indexterm> <para> - This system catalog stores encoding conversion information. See + The catalog <structname>pg_conversion</structname> stores encoding conversion information. See <command>CREATE CONVERSION</command> for more information. </para> <table> - <title>pg_conversion Columns</title> + <title><structname>pg_conversion</> Columns</title> <tgroup cols=4> <thead> @@ -1390,54 +1394,54 @@ <tbody> <row> - <entry>conname</entry> + <entry><structfield>conname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Conversion name (unique within a namespace)</entry> </row> <row> - <entry>connamespace</entry> + <entry><structfield>connamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this conversion </entry> </row> <row> - <entry>conowner</entry> + <entry><structfield>conowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>Owner (creator) of the namespace</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Owner of the conversion</entry> </row> <row> - <entry>conforencoding</entry> + <entry><structfield>conforencoding</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>Source(for) encoding ID</entry> + <entry>Source encoding ID</entry> </row> <row> - <entry>contoencoding</entry> + <entry><structfield>contoencoding</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>Destination(to) encoding ID</entry> + <entry>Destination encoding ID</entry> </row> <row> - <entry>conproc</entry> + <entry><structfield>conproc</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Conversion procedure</entry> </row> <row> - <entry>condefault</entry> - <entry><type>boolean</type></entry> + <entry><structfield>condefault</structfield></entry> + <entry><type>bool</type></entry> <entry></entry> - <entry>true if this is the default conversion</entry> + <entry>True if this is the default conversion</entry> </row> </tbody> @@ -1447,10 +1451,14 @@ </sect1> <sect1 id="catalog-pg-database"> - <title>pg_database</title> + <title><structname>pg_database</structname></title> + + <indexterm zone="catalog-pg-database"> + <primary>pg_database</primary> + </indexterm> <para> - The <structname>pg_database</structname> catalog stores information + The catalog <structname>pg_database</structname> stores information about the available databases. Databases are created with the <command>CREATE DATABASE</command> command. Consult <xref linkend="managing-databases"> for details about the meaning of some of the @@ -1465,7 +1473,7 @@ </para> <table> - <title>pg_database Columns</title> + <title><structname>pg_database</> Columns</title> <tgroup cols=4> <thead> @@ -1479,50 +1487,50 @@ <tbody> <row> - <entry>datname</entry> + <entry><structfield>datname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Database name</entry> </row> <row> - <entry>datdba</entry> + <entry><structfield>datdba</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> <entry>Owner of the database, usually the user who created it</entry> </row> <row> - <entry>encoding</entry> + <entry><structfield>encoding</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>Character/multibyte encoding for this database</entry> + <entry>Character encoding for this database</entry> </row> <row> - <entry>datistemplate</entry> + <entry><structfield>datistemplate</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> If true then this database can be used in the - <quote>TEMPLATE</quote> clause of <command>CREATE + <literal>TEMPLATE</literal> clause of <command>CREATE DATABASE</command> to create a new database as a clone of this one. </entry> </row> <row> - <entry>datallowconn</entry> + <entry><structfield>datallowconn</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> If false then no one can connect to this database. This is - used to protect the template0 database from being altered. + used to protect the <literal>template0</> database from being altered. </entry> </row> <row> - <entry>datlastsysoid</entry> + <entry><structfield>datlastsysoid</structfield></entry> <entry><type>oid</type></entry> <entry></entry> <entry> @@ -1532,7 +1540,7 @@ </row> <row> - <entry>datvacuumxid</entry> + <entry><structfield>datvacuumxid</structfield></entry> <entry><type>xid</type></entry> <entry></entry> <entry> @@ -1543,19 +1551,19 @@ </row> <row> - <entry>datfrozenxid</entry> + <entry><structfield>datfrozenxid</structfield></entry> <entry><type>xid</type></entry> <entry></entry> <entry> All tuples inserted by transaction IDs before this one have been relabeled with a permanent (<quote>frozen</>) transaction ID in this database. This is useful to check whether a database must be vacuumed - soon to avoid transaction ID wraparound problems. + soon to avoid transaction ID wrap-around problems. </entry> </row> <row> - <entry>datpath</entry> + <entry><structfield>datpath</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry> @@ -1566,17 +1574,17 @@ </row> <row> - <entry>datconfig</entry> + <entry><structfield>datconfig</structfield></entry> <entry><type>text[]</type></entry> <entry></entry> <entry>Session defaults for run-time configuration variables</entry> </row> <row> - <entry>datacl</entry> + <entry><structfield>datacl</structfield></entry> <entry><type>aclitem[]</type></entry> <entry></entry> - <entry>Access permissions</entry> + <entry>Access privileges</entry> </row> </tbody> </tgroup> @@ -1585,18 +1593,22 @@ <sect1 id="catalog-pg-depend"> - <title>pg_depend</title> + <title><structname>pg_depend</structname></title> + + <indexterm zone="catalog-pg-depend"> + <primary>pg_depend</primary> + </indexterm> <para> - The <structname>pg_depend</structname> table records the dependency + The catalog <structname>pg_depend</structname> records the dependency relationships between database objects. This information allows <command>DROP</> commands to find which other objects must be dropped - by <command>DROP CASCADE</>, or prevent dropping in the <command>DROP + by <command>DROP CASCADE</> or prevent dropping in the <command>DROP RESTRICT</> case. </para> <table> - <title>pg_depend Columns</title> + <title><structname>pg_depend</> Columns</title> <tgroup cols=4> <thead> @@ -1610,59 +1622,63 @@ <tbody> <row> - <entry>classid</entry> + <entry><structfield>classid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The oid of the system catalog the dependent object is in</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The OID of the system catalog the dependent object is in</entry> </row> <row> - <entry>objid</entry> + <entry><structfield>objid</structfield></entry> <entry><type>oid</type></entry> - <entry>any oid attribute</entry> - <entry>The oid of the specific dependent object</entry> + <entry>any OID column</entry> + <entry>The OID of the specific dependent object</entry> </row> <row> - <entry>objsubid</entry> + <entry><structfield>objsubid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>For a table attribute, this is the attribute's - column number (the objid and classid refer to the table itself). - For all other object types, this field is presently zero. + <entry> + For a table column, this is the column number (the + <structfield>objid</> and <structfield>classid</> refer to the + table itself). For all other object types, this column is + zero. </entry> </row> <row> - <entry>refclassid</entry> + <entry><structfield>refclassid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The oid of the system catalog the referenced object is in</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The OID of the system catalog the referenced object is in</entry> </row> <row> - <entry>refobjid</entry> + <entry><structfield>refobjid</structfield></entry> <entry><type>oid</type></entry> <entry>any oid attribute</entry> - <entry>The oid of the specific referenced object</entry> + <entry>The OID of the specific referenced object</entry> </row> <row> - <entry>refobjsubid</entry> + <entry><structfield>refobjsubid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>For a table attribute, this is the attribute's - column number (the refobjid and refclassid refer to the table itself). - For all other object types, this field is presently zero. + <entry> + For a table column, this is the column number (the + <structfield>refobjid</> and <structfield>refclassid</> refer + to the table itself). For all other object types, this column + is zero. </entry> </row> <row> - <entry>deptype</entry> + <entry><structfield>deptype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - A code defining the specific semantics of this dependency relationship. + A code defining the specific semantics of this dependency relationship; see text. </entry> </row> @@ -1676,52 +1692,67 @@ object. However, there are several subflavors identified by <structfield>deptype</>: - <itemizedlist> - <listitem> - <para> - DEPENDENCY_NORMAL ('n'): normal relationship between separately-created - objects. The dependent object may be dropped without affecting the - referenced object. The referenced object may only be dropped by - specifying CASCADE, in which case the dependent object is dropped too. - Example: a table column has a normal dependency on its datatype. - </para> - </listitem> - - <listitem> - <para> - DEPENDENCY_AUTO ('a'): the dependent object can be dropped separately - from the referenced object, and should be automatically dropped - (regardless of RESTRICT or CASCADE mode) if the referenced object - is dropped. - Example: a named constraint on a table is made auto-dependent on - the table, so that it will go away if the table is dropped. - </para> - </listitem> - - <listitem> - <para> - DEPENDENCY_INTERNAL ('i'): the dependent object was created as part - of creation of the referenced object, and is really just a part of - its internal implementation. A DROP of the dependent object will be - disallowed outright (we'll tell the user to issue a DROP against the - referenced object, instead). A DROP of the referenced object will be - propagated through to drop the dependent object whether CASCADE is - specified or not. - Example: a trigger that's created to enforce a foreign-key constraint - is made internally dependent on the constraint's pg_constraint entry. - </para> - </listitem> - - <listitem> - <para> - DEPENDENCY_PIN ('p'): there is no dependent object; this type of entry - is a signal that the system itself depends on the referenced object, - and so that object must never be deleted. Entries of this type are - created only during initdb. The fields for the dependent object - contain zeroes. - </para> - </listitem> - </itemizedlist> + <variablelist> + <varlistentry> + <term><symbol>DEPENDENCY_NORMAL</> (<literal>n</>)</term> + <listitem> + <para> + A normal relationship between separately-created objects. The + dependent object may be dropped without affecting the + referenced object. The referenced object may only be dropped + by specifying <literal>CASCADE</>, in which case the dependent + object is dropped, too. Example: a table column has a normal + dependency on its data type. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><symbol>DEPENDENCY_AUTO</> (<literal>a</>)</term> + <listitem> + <para> + The dependent object can be dropped separately from the + referenced object, and should be automatically dropped + (regardless of <literal>RESTRICT</> or <literal>CASCADE</> + mode) if the referenced object is dropped. Example: a named + constraint on a table is made autodependent on the table, so + that it will go away if the table is dropped. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><symbol>DEPENDENCY_INTERNAL</> (<literal>i</>)</term> + <listitem> + <para> + The dependent object was created as part of creation of the + referenced object, and is really just a part of its internal + implementation. A <command>DROP</> of the dependent object + will be disallowed outright (we'll tell the user to issue a + <command>DROP</> against the referenced object, instead). A + <command>DROP</> of the referenced object will be propagated + through to drop the dependent object whether + <command>CASCADE</> is specified or not. Example: a trigger + that's created to enforce a foreign-key constraint is made + internally dependent on the constraint's + <structname>pg_constraint</> entry. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><symbol>DEPENDENCY_PIN</> (<literal>p</>)</term> + <listitem> + <para> + There is no dependent object; this type of entry is a signal + that the system itself depends on the referenced object, and so + that object must never be deleted. Entries of this type are + created only by <command>initdb</command>. The columns for the + dependent object contain zeroes. + </para> + </listitem> + </varlistentry> + </variablelist> Other dependency flavors may be needed in future. </para> @@ -1730,19 +1761,23 @@ <sect1 id="catalog-pg-description"> - <title>pg_description</title> + <title><structname>pg_description</structname></title> + + <indexterm zone="catalog-pg-description"> + <primary>pg_description</primary> + </indexterm> <para> - The pg_description table can store an optional description or + The catalog <structname>pg_description</> can store an optional description or comment for each database object. Descriptions can be manipulated with the <command>COMMENT</command> command and viewed with <application>psql</application>'s <literal>\d</literal> commands. Descriptions of many built-in system objects are provided in the initial - contents of pg_description. + contents of <structname>pg_description</structname>. </para> <table> - <title>pg_description Columns</title> + <title><structname>pg_description</> Columns</title> <tgroup cols=4> <thead> @@ -1756,31 +1791,33 @@ <tbody> <row> - <entry>objoid</entry> + <entry><structfield>objoid</structfield></entry> <entry><type>oid</type></entry> - <entry>any oid attribute</entry> - <entry>The oid of the object this description pertains to</entry> + <entry>any OID column</entry> + <entry>The OID of the object this description pertains to</entry> </row> <row> - <entry>classoid</entry> + <entry><structfield>classoid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The oid of the system catalog this object appears in</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The OID of the system catalog this object appears in</entry> </row> <row> - <entry>objsubid</entry> + <entry><structfield>objsubid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>For a comment on a table attribute, this is the attribute's - column number (the objoid and classoid refer to the table itself). - For all other object types, this field is presently zero. + <entry> + For a comment on a table column, this is the column number (the + <structfield>objoid</> and <structfield>classoid</> refer to + the table itself). For all other object types, this column is + zero. </entry> </row> <row> - <entry>description</entry> + <entry><structfield>description</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry>Arbitrary text that serves as the description of this object.</entry> @@ -1793,13 +1830,17 @@ <sect1 id="catalog-pg-group"> - <title>pg_group</title> + <title><structname>pg_group</structname></title> + + <indexterm zone="catalog-pg-group"> + <primary>pg_group</primary> + </indexterm> <para> - This catalog defines groups and stores what users belong to what + The catalog <structname>pg_group</structname> defines groups and stores what users belong to what groups. Groups are created with the <command>CREATE GROUP</command> command. Consult <xref linkend="user-manag"> for information - about user permission management. + about user privilege management. </para> <para> @@ -1811,7 +1852,7 @@ </para> <table> - <title>pg_group Columns</title> + <title><structname>pg_group</> Columns</title> <tgroup cols=4> <thead> @@ -1825,24 +1866,24 @@ <tbody> <row> - <entry>groname</entry> + <entry><structfield>groname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the group</entry> </row> <row> - <entry>grosysid</entry> + <entry><structfield>grosysid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry>An arbitrary number to identify this group</entry> </row> <row> - <entry>grolist</entry> + <entry><structfield>grolist</structfield></entry> <entry><type>int4[]</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>An array containing the ids of the users in this group</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>An array containing the IDs of the users in this group</entry> </row> </tbody> </tgroup> @@ -1852,16 +1893,20 @@ <sect1 id="catalog-pg-index"> - <title>pg_index</title> + <title><structname>pg_index</structname></title> + + <indexterm zone="catalog-pg-index"> + <primary>pg_index</primary> + </indexterm> <para> - <structname>pg_index</structname> contains part of the information + The catalog <structname>pg_index</structname> contains part of the information about indexes. The rest is mostly in <structname>pg_class</structname>. </para> <table> - <title>pg_index Columns</title> + <title><structname>pg_index</> Columns</title> <tgroup cols=4> <thead> @@ -1875,33 +1920,33 @@ <tbody> <row> - <entry>indexrelid</entry> + <entry><structfield>indexrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The OID of the pg_class entry for this index</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The OID of the <structname>pg_class</> entry for this index</entry> </row> <row> - <entry>indrelid</entry> + <entry><structfield>indrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The OID of the pg_class entry for the table this index is for</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The OID of the <structname>pg_class</> entry for the table this index is for</entry> </row> <row> - <entry>indproc</entry> + <entry><structfield>indproc</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>The function's OID if this is a functional index, else zero</entry> </row> <row> - <entry>indkey</entry> + <entry><structfield>indkey</structfield></entry> <entry><type>int2vector</type></entry> <entry>pg_attribute.attnum</entry> <entry> - This is a vector (array) of up to + This is an array of up to <symbol>INDEX_MAX_KEYS</symbol> values that indicate which table columns this index pertains to. For example a value of <literal>1 3</literal> would mean that the first and the third @@ -1912,50 +1957,50 @@ </row> <row> - <entry>indclass</entry> + <entry><structfield>indclass</structfield></entry> <entry><type>oidvector</type></entry> <entry>pg_opclass.oid</entry> <entry> For each column in the index key this contains a reference to - the <quote>operator class</quote> to use. See + the operator class to use. See <structname>pg_opclass</structname> for details. </entry> </row> <row> - <entry>indisclustered</entry> + <entry><structfield>indisclustered</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>If true, the table was last clustered on this index.</entry> </row> <row> - <entry>indisunique</entry> + <entry><structfield>indisunique</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>If true, this is a unique index.</entry> </row> <row> - <entry>indisprimary</entry> + <entry><structfield>indisprimary</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>If true, this index represents the primary key of the table. - (indisunique should always be true when this is true.)</entry> + (<structfield>indisunique</> should always be true when this is true.)</entry> </row> <row> - <entry>indreference</entry> + <entry><structfield>indreference</structfield></entry> <entry><type>oid</type></entry> <entry></entry> <entry>unused</entry> </row> <row> - <entry>indpred</entry> + <entry><structfield>indpred</structfield></entry> <entry><type>text</type></entry> <entry></entry> - <entry>Expression tree (in the form of a nodeToString representation) + <entry>Expression tree (in the form of a <function>nodeToString()</function> representation) for partial index predicate. Empty string if not a partial index.</entry> </row> @@ -1967,14 +2012,19 @@ <sect1 id="catalog-pg-inherits"> - <title>pg_inherits</title> + <title><structname>pg_inherits</structname></title> + + <indexterm zone="catalog-pg-inherits"> + <primary>pg_inherits</primary> + </indexterm> <para> - This catalog records information about table inheritance hierarchies. + The catalog <structname>pg_inherits</> records information about + table inheritance hierarchies. </para> <table> - <title>pg_inherits Columns</title> + <title><structname>pg_inherits</> Columns</title> <tgroup cols=4> <thead> @@ -1988,25 +2038,25 @@ <tbody> <row> - <entry>inhrelid</entry> + <entry><structfield>inhrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry> The OID of the child table. </entry> </row> <row> - <entry>inhparent</entry> + <entry><structfield>inhparent</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry> The OID of the parent table. </entry> </row> <row> - <entry>inhseqno</entry> + <entry><structfield>inhseqno</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> @@ -2023,17 +2073,21 @@ <sect1 id="catalog-pg-language"> - <title>pg_language</title> + <title><structname>pg_language</structname></title> + + <indexterm zone="catalog-pg-language"> + <primary>pg_language</primary> + </indexterm> <para> - <structname>pg_language</structname> registers call interfaces or + The catalog <structname>pg_language</structname> registers call interfaces or languages in which you can write functions or stored procedures. See under <command>CREATE LANGUAGE</command> and in - <xref linkend="server-programming"> for more information about language handlers. + <xref linkend="xplang"> for more information about language handlers. </para> <table> - <title>pg_language Columns</title> + <title><structname>pg_language</> Columns</title> <tgroup cols=4> <thead> @@ -2047,14 +2101,14 @@ <tbody> <row> - <entry>lanname</entry> + <entry><structfield>lanname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the language (to be specified when creating a function)</entry> </row> <row> - <entry>lanispl</entry> + <entry><structfield>lanispl</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -2067,23 +2121,23 @@ </row> <row> - <entry>lanpltrusted</entry> + <entry><structfield>lanpltrusted</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> This is a trusted language. See under <command>CREATE LANGUAGE</command> what this means. If this is an internal language (<structfield>lanispl</structfield> is false) then - this field is meaningless. + this column is meaningless. </entry> </row> <row> - <entry>lanplcallfoid</entry> + <entry><structfield>lanplcallfoid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry> - For non-internal languages this references the language + For noninternal languages this references the language handler, which is a special function that is responsible for executing all functions that are written in the particular language. @@ -2091,9 +2145,9 @@ </row> <row> - <entry>lanvalidator</entry> + <entry><structfield>lanvalidator</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry> This references a language validator function that is responsible for checking the syntax and validity of new functions when they @@ -2103,10 +2157,10 @@ </row> <row> - <entry>lanacl</entry> + <entry><structfield>lanacl</structfield></entry> <entry><type>aclitem[]</type></entry> <entry></entry> - <entry>Access permissions</entry> + <entry>Access privileges</entry> </row> </tbody> </tgroup> @@ -2116,20 +2170,24 @@ <sect1 id="catalog-pg-largeobject"> - <title>pg_largeobject</title> + <title><structname>pg_largeobject</structname></title> + + <indexterm zone="catalog-pg-largeobject"> + <primary>pg_largeobject</primary> + </indexterm> <para> - <structname>pg_largeobject</structname> holds the data making up + The catalog <structname>pg_largeobject</structname> holds the data making up <quote>large objects</quote>. A large object is identified by an OID assigned when it is created. Each large object is broken into segments or <quote>pages</> small enough to be conveniently stored as rows in <structname>pg_largeobject</structname>. - The amount of data per page is defined to be LOBLKSIZE (which is currently - BLCKSZ/4, or typically 2Kbytes). + The amount of data per page is defined to be <literal>LOBLKSIZE</> (which is currently + <literal>BLCKSZ/4</>, or typically 2 kB). </para> <table> - <title>pg_largeobject Columns</title> + <title><structname>pg_largeobject</> Columns</title> <tgroup cols=4> <thead> @@ -2143,14 +2201,14 @@ <tbody> <row> - <entry>loid</entry> + <entry><structfield>loid</structfield></entry> <entry><type>oid</type></entry> <entry></entry> <entry>Identifier of the large object that includes this page</entry> </row> <row> - <entry>pageno</entry> + <entry><structfield>pageno</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry>Page number of this page within its large object @@ -2158,12 +2216,12 @@ </row> <row> - <entry>data</entry> + <entry><structfield>data</structfield></entry> <entry><type>bytea</type></entry> <entry></entry> <entry> Actual data stored in the large object. - This will never be more than LOBLKSIZE bytes, and may be less. + This will never be more than <symbol>LOBLKSIZE</> bytes and may be less. </entry> </row> </tbody> @@ -2173,9 +2231,9 @@ <para> Each row of <structname>pg_largeobject</structname> holds data for one page of a large object, beginning at - byte offset (pageno * LOBLKSIZE) within the object. The implementation + byte offset (<literal>pageno * LOBLKSIZE</>) within the object. The implementation allows sparse storage: pages may be missing, and may be shorter than - LOBLKSIZE bytes even if they are not the last page of the object. + <literal>LOBLKSIZE</> bytes even if they are not the last page of the object. Missing regions within a large object read as zeroes. </para> @@ -2183,10 +2241,14 @@ <sect1 id="catalog-pg-listener"> - <title>pg_listener</title> + <title><structname>pg_listener</structname></title> + + <indexterm zone="catalog-pg-listener"> + <primary>pg_listener</primary> + </indexterm> <para> - <structname>pg_listener</structname> supports the <command>LISTEN</> + The catalog <structname>pg_listener</structname> supports the <command>LISTEN</> and <command>NOTIFY</> commands. A listener creates an entry in <structname>pg_listener</structname> for each notification name it is listening for. A notifier scans <structname>pg_listener</structname> @@ -2196,7 +2258,7 @@ </para> <table> - <title>pg_listener Columns</title> + <title><structname>pg_listener</> Columns</title> <tgroup cols=4> <thead> @@ -2210,28 +2272,28 @@ <tbody> <row> - <entry>relname</entry> + <entry><structfield>relname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Notify condition name. (The name need not match any actual - relation in the database; the term <quote>relname</> is historical.) + relation in the database; the name <structfield>relname</> is historical.) </entry> </row> <row> - <entry>listenerpid</entry> + <entry><structfield>listenerpid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>PID of the backend process that created this entry.</entry> + <entry>PID of the server process that created this entry.</entry> </row> <row> - <entry>notification</entry> + <entry><structfield>notification</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry> Zero if no event is pending for this listener. If an event is - pending, the PID of the backend that sent the notification. + pending, the PID of the server process that sent the notification. </entry> </row> </tbody> @@ -2242,16 +2304,21 @@ <sect1 id="catalog-pg-namespace"> - <title>pg_namespace</title> + <title><structname>pg_namespace</structname></title> + + <indexterm zone="catalog-pg-namespace"> + <primary>pg_namespace</primary> + </indexterm> <para> - A namespace is the structure underlying SQL92 schemas: each namespace - can have a separate collection of relations, types, etc without name + The catalog <structname>pg_namespace</> stores namespaces. + A namespace is the structure underlying SQL schemas: each namespace + can have a separate collection of relations, types, etc. without name conflicts. </para> <table> - <title>pg_namespace Columns</title> + <title><structname>pg_namespace</> Columns</title> <tgroup cols=4> <thead> @@ -2265,24 +2332,24 @@ <tbody> <row> - <entry>nspname</entry> + <entry><structfield>nspname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the namespace</entry> </row> <row> - <entry>nspowner</entry> + <entry><structfield>nspowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>Owner (creator) of the namespace</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Owner of the namespace</entry> </row> <row> - <entry>nspacl</entry> + <entry><structfield>nspacl</structfield></entry> <entry><type>aclitem[]</type></entry> <entry></entry> - <entry>Access permissions</entry> + <entry>Access privileges</entry> </row> </tbody> </tgroup> @@ -2292,23 +2359,27 @@ <sect1 id="catalog-pg-opclass"> - <title>pg_opclass</title> + <title><structname>pg_opclass</structname></title> + + <indexterm zone="catalog-pg-opclass"> + <primary>pg_opclass</primary> + </indexterm> <para> - <structname>pg_opclass</structname> defines + The catalog <structname>pg_opclass</structname> defines index access method operator classes. Each operator class defines - semantics for index columns of a particular datatype and a particular + semantics for index columns of a particular data type and a particular index access method. Note that there can be multiple operator classes - for a given datatype/access method combination, thus supporting multiple + for a given data type/access method combination, thus supporting multiple behaviors. </para> <para> - Operator classes are described at length in <xref linkend="server-programming">. + Operator classes are described at length in <xref linkend="xindex">. </para> <table> - <title>pg_opclass Columns</title> + <title><structname>pg_opclass</> Columns</title> <tgroup cols=4> <thead> @@ -2322,52 +2393,52 @@ <tbody> <row> - <entry>opcamid</entry> + <entry><structfield>opcamid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_am.oid</entry> - <entry>index access method opclass is for</entry> + <entry><literal>pg_am.oid</literal></entry> + <entry>Index access method opclass is for</entry> </row> <row> - <entry>opcname</entry> + <entry><structfield>opcname</structfield></entry> <entry><type>name</type></entry> <entry></entry> - <entry>name of this opclass</entry> + <entry>Name of this operator class</entry> </row> <row> - <entry>opcnamespace</entry> + <entry><structfield>opcnamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> - <entry>namespace of this opclass</entry> + <entry><literal>pg_namespace.oid</literal></entry> + <entry>Namespace of this operator class</entry> </row> <row> - <entry>opcowner</entry> + <entry><structfield>opcowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>opclass owner</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Operator class owner</entry> </row> <row> - <entry>opcintype</entry> + <entry><structfield>opcintype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> - <entry>type of input data for opclass</entry> + <entry><literal>pg_type.oid</literal></entry> + <entry>Input data type of the operator class</entry> </row> <row> - <entry>opcdefault</entry> + <entry><structfield>opcdefault</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>true if opclass is default for opcintype</entry> + <entry>True if this operator class is the default for <structfield>opcintype</></entry> </row> <row> - <entry>opckeytype</entry> + <entry><structfield>opckeytype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> - <entry>type of index data, or zero if same as opcintype</entry> + <entry><literal>pg_type.oid</literal></entry> + <entry>Type of index data, or zero if same as <structfield>opcintype</></entry> </row> </tbody> @@ -2381,7 +2452,7 @@ <structname>pg_amproc</structname>. Those rows are considered to be part of the operator class definition --- this is not unlike the way that a relation is defined by a single <structname>pg_class</structname> - row, plus associated rows in <structname>pg_attribute</structname> and + row plus associated rows in <structname>pg_attribute</structname> and other tables. </para> @@ -2389,15 +2460,20 @@ <sect1 id="catalog-pg-operator"> - <title>pg_operator</title> + <title><structname>pg_operator</structname></title> + + <indexterm zone="catalog-pg-operator"> + <primary>pg_operator</primary> + </indexterm> <para> - See <command>CREATE OPERATOR</command> and <xref linkend="xoper"> - for details on these operator parameters. + The catalog <structname>pg_operator</> stores information about operators. See + <command>CREATE OPERATOR</command> and <xref linkend="xoper"> for + details on these operator parameters. </para> <table> - <title>pg_operator Columns</title> + <title><structname>pg_operator</> Columns</title> <tgroup cols=4> <thead> @@ -2411,84 +2487,84 @@ <tbody> <row> - <entry>oprname</entry> + <entry><structfield>oprname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the operator</entry> </row> <row> - <entry>oprnamespace</entry> + <entry><structfield>oprnamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this operator </entry> </row> <row> - <entry>oprowner</entry> + <entry><structfield>oprowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>Owner (creator) of the operator</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Owner of the operator</entry> </row> <row> - <entry>oprkind</entry> + <entry><structfield>oprkind</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> - 'b' = infix (<quote>both</quote>), 'l' = prefix - (<quote>left</quote>), 'r' = postfix (<quote>right</quote>) + <literal>b</> = infix (<quote>both</quote>), <literal>l</> = prefix + (<quote>left</quote>), <literal>r</> = postfix (<quote>right</quote>) </entry> </row> <row> - <entry>oprcanhash</entry> + <entry><structfield>oprcanhash</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>This operator supports hash joins.</entry> </row> <row> - <entry>oprleft</entry> + <entry><structfield>oprleft</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>Type of the left operand</entry> </row> <row> - <entry>oprright</entry> + <entry><structfield>oprright</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>Type of the right operand</entry> </row> <row> - <entry>oprresult</entry> + <entry><structfield>oprresult</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>Type of the result</entry> </row> <row> - <entry>oprcom</entry> + <entry><structfield>oprcom</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry>Commutator of this operator, if any</entry> </row> <row> - <entry>oprnegate</entry> + <entry><structfield>oprnegate</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry>Negator of this operator, if any</entry> </row> <row> - <entry>oprlsortop</entry> + <entry><structfield>oprlsortop</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry> If this operator supports merge joins, the operator that sorts the type of the left-hand operand (<literal>L<L</>) @@ -2496,9 +2572,9 @@ </row> <row> - <entry>oprrsortop</entry> + <entry><structfield>oprrsortop</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry> If this operator supports merge joins, the operator that sorts the type of the right-hand operand (<literal>R<R</>) @@ -2506,9 +2582,9 @@ </row> <row> - <entry>oprltcmpop</entry> + <entry><structfield>oprltcmpop</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry> If this operator supports merge joins, the less-than operator that compares the left and right operand types (<literal>L<R</>) @@ -2516,9 +2592,9 @@ </row> <row> - <entry>oprgtcmpop</entry> + <entry><structfield>oprgtcmpop</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> + <entry><literal>pg_operator.oid</literal></entry> <entry> If this operator supports merge joins, the greater-than operator that compares the left and right operand types (<literal>L>R</>) @@ -2526,23 +2602,23 @@ </row> <row> - <entry>oprcode</entry> + <entry><structfield>oprcode</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Function that implements this operator</entry> </row> <row> - <entry>oprrest</entry> + <entry><structfield>oprrest</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Restriction selectivity estimation function for this operator</entry> </row> <row> - <entry>oprjoin</entry> + <entry><structfield>oprjoin</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Join selectivity estimation function for this operator</entry> </row> </tbody> @@ -2550,7 +2626,7 @@ </table> <para> - Unused fields contain zeroes, for example oprleft is zero for a + Unused column contain zeroes, for example <structfield>oprleft</structfield> is zero for a prefix operator. </para> @@ -2558,23 +2634,27 @@ <sect1 id="catalog-pg-proc"> - <title>pg_proc</title> + <title><structname>pg_proc</structname></title> + + <indexterm zone="catalog-pg-proc"> + <primary>pg_proc</primary> + </indexterm> <para> - This catalog stores information about functions (or procedures). + The catalog <structname>pg_proc</> stores information about functions (or procedures). The description of <command>CREATE FUNCTION</command> and <xref linkend="xfunc"> contain more information about the meaning of - some fields. + some columns. </para> <para> The table contains data for aggregate functions as well as plain functions. If <structfield>proisagg</structfield> is true, there should be a matching - row in <structname>pg_aggregate</structname>. + row in <structfield>pg_aggregate</structfield>. </para> <table> - <title>pg_proc Columns</title> + <title><structname>pg_proc</> Columns</title> <tgroup cols=4> <thead> @@ -2588,44 +2668,44 @@ <tbody> <row> - <entry>proname</entry> + <entry><structfield>proname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Name of the function</entry> </row> <row> - <entry>pronamespace</entry> + <entry><structfield>pronamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this function </entry> </row> <row> - <entry>proowner</entry> + <entry><structfield>proowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>Owner (creator) of the function</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Owner of the function</entry> </row> <row> - <entry>prolang</entry> + <entry><structfield>prolang</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_language.oid</entry> + <entry><literal>pg_language.oid</literal></entry> <entry>Implementation language or call interface of this function</entry> </row> <row> - <entry>proisagg</entry> + <entry><structfield>proisagg</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>Function is an aggregate function</entry> </row> <row> - <entry>prosecdef</entry> + <entry><structfield>prosecdef</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>Function is a security definer (i.e., a <quote>setuid</> @@ -2633,7 +2713,7 @@ </row> <row> - <entry>proisstrict</entry> + <entry><structfield>proisstrict</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -2645,15 +2725,15 @@ </row> <row> - <entry>proretset</entry> + <entry><structfield>proretset</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>Function returns a set (ie, multiple values of the specified + <entry>Function returns a set (i.e., multiple values of the specified data type)</entry> </row> <row> - <entry>provolatile</entry> + <entry><structfield>provolatile</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> @@ -2672,28 +2752,28 @@ </row> <row> - <entry>pronargs</entry> + <entry><structfield>pronargs</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry>Number of arguments</entry> </row> <row> - <entry>prorettype</entry> + <entry><structfield>prorettype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry>Data type of the return value</entry> </row> <row> - <entry>proargtypes</entry> + <entry><structfield>proargtypes</structfield></entry> <entry><type>oidvector</type></entry> - <entry>pg_type.oid</entry> - <entry>A vector with the data types of the function arguments</entry> + <entry><literal>pg_type.oid</literal></entry> + <entry>An array with the data types of the function arguments</entry> </row> <row> - <entry>prosrc</entry> + <entry><structfield>prosrc</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry> @@ -2705,7 +2785,7 @@ </row> <row> - <entry>probin</entry> + <entry><structfield>probin</structfield></entry> <entry><type>bytea</type></entry> <entry></entry> <entry>Additional information about how to invoke the function. @@ -2714,38 +2794,40 @@ </row> <row> - <entry>proacl</entry> + <entry><structfield>proacl</structfield></entry> <entry><type>aclitem[]</type></entry> <entry></entry> - <entry>Access permissions</entry> + <entry>Access privileges</entry> </row> </tbody> </tgroup> </table> <para> - Currently, prosrc contains the function's C-language name (link symbol) - for compiled functions, both built-in and dynamically loaded. For all - other language types, prosrc contains the function's source text. - </para> - - <para> - Currently, probin is unused except for dynamically-loaded C functions, - for which it gives the name of the shared library file containing the - function. + <structfield>prosrc</structfield> contains the function's C-language + name (link symbol) for compiled functions, both built-in and + dynamically loaded. For all other language types, + <structfield>prosrc</structfield> contains the function's source + text. <structfield>probin</structfield> is unused except for + dynamically-loaded C functions, for which it gives the name of the + shared library file containing the function. </para> </sect1> <sect1 id="catalog-pg-rewrite"> - <title>pg_rewrite</title> + <title><structname>pg_rewrite</structname></title> + + <indexterm zone="catalog-pg-rewrite"> + <primary>pg_rewrite</primary> + </indexterm> <para> - This system catalog stores rewrite rules for tables and views. + The catalog <structname>pg_rewrite</structname> stores rewrite rules for tables and views. </para> <table> - <title>pg_rewrite Columns</title> + <title><structname>pg_rewrite</> Columns</title> <tgroup cols=4> <thead> @@ -2759,21 +2841,21 @@ <tbody> <row> - <entry>rulename</entry> + <entry><structfield>rulename</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Rule name</entry> </row> <row> - <entry>ev_class</entry> + <entry><structfield>ev_class</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table this rule is for</entry> </row> <row> - <entry>ev_attr</entry> + <entry><structfield>ev_attr</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry>The column this rule is for (currently, always zero to @@ -2781,34 +2863,43 @@ </row> <row> - <entry>ev_type</entry> + <entry><structfield>ev_type</structfield></entry> <entry><type>char</type></entry> <entry></entry> - <entry>Event type that the rule is for: '1' = SELECT, - '2' = UPDATE, '3' = INSERT, '4' = DELETE</entry> + <entry> + Event type that the rule is for: 1 = <command>SELECT</>, 2 = + <command>UPDATE</>, 3 = <command>INSERT</>, 4 = + <command>DELETE</> + </entry> </row> <row> - <entry>is_instead</entry> + <entry><structfield>is_instead</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>True if the rule is an INSTEAD rule</entry> + <entry>True if the rule is an <literal>INSTEAD</literal> rule</entry> </row> <row> - <entry>ev_qual</entry> + <entry><structfield>ev_qual</structfield></entry> <entry><type>text</type></entry> <entry></entry> - <entry>Expression tree (in the form of a nodeToString representation) - for the rule's qualifying condition</entry> + <entry> + Expression tree (in the form of a + <function>nodeToString()</function> representation) for the + rule's qualifying condition + </entry> </row> <row> - <entry>ev_action</entry> + <entry><structfield>ev_action</structfield></entry> <entry><type>text</type></entry> <entry></entry> - <entry>Query tree (in the form of a nodeToString representation) - for the rule's action</entry> + <entry> + Query tree (in the form of a + <function>nodeToString()</function> representation) for the + rule's action + </entry> </row> </tbody> </tgroup> @@ -2816,7 +2907,7 @@ <note> <para> - <structname>pg_class</structname>.<structfield>relhasrules</structfield> + <literal>pg_class.relhasrules</literal> must be true if a table has any rules in this catalog. </para> </note> @@ -2825,19 +2916,23 @@ <sect1 id="catalog-pg-shadow"> - <title>pg_shadow</title> + <title><structname>pg_shadow</structname></title> + + <indexterm zone="catalog-pg-shadow"> + <primary>pg_shadow</primary> + </indexterm> <para> - <structname>pg_shadow</structname> contains information about + The catalog <structname>pg_shadow</structname> contains information about database users. The name stems from the fact that this table should not be readable by the public since it contains passwords. - <structname>pg_user</structname> is a publicly readable view on - <structname>pg_shadow</structname> that blanks out the password field. + <structfield>pg_user</structfield> is a publicly readable view on + <structfield>pg_shadow</structfield> that blanks out the password field. </para> <para> <xref linkend="user-manag"> contains detailed information about user and - permission management. + privilege management. </para> <para> @@ -2849,7 +2944,7 @@ </para> <table> - <title>pg_shadow Columns</title> + <title><structname>pg_shadow</> Columns</title> <tgroup cols=4> <thead> @@ -2863,59 +2958,59 @@ <tbody> <row> - <entry>usename</entry> + <entry><structfield>usename</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>User name</entry> </row> <row> - <entry>usesysid</entry> + <entry><structfield>usesysid</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry>User id (arbitrary number used to reference this user)</entry> </row> <row> - <entry>usecreatedb</entry> + <entry><structfield>usecreatedb</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>User may create databases</entry> </row> <row> - <entry>usesuper</entry> + <entry><structfield>usesuper</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>User is a superuser</entry> </row> <row> - <entry>usecatupd</entry> + <entry><structfield>usecatupd</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> User may update system catalogs. (Even a superuser may not do - this unless this attribute is true.) + this unless this column is true.) </entry> </row> <row> - <entry>passwd</entry> + <entry><structfield>passwd</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry>Password</entry> </row> <row> - <entry>valuntil</entry> + <entry><structfield>valuntil</structfield></entry> <entry><type>abstime</type></entry> <entry></entry> <entry>Account expiry time (only used for password authentication)</entry> </row> <row> - <entry>useconfig</entry> + <entry><structfield>useconfig</structfield></entry> <entry><type>text[]</type></entry> <entry></entry> <entry>Session defaults for run-time configuration variables</entry> @@ -2928,10 +3023,14 @@ <sect1 id="catalog-pg-statistic"> - <title>pg_statistic</title> + <title><structname>pg_statistic</structname></title> + + <indexterm zone="catalog-pg-statistic"> + <primary>pg_statistic</primary> + </indexterm> <para> - <structname>pg_statistic</structname> stores statistical data about + The catalog <structname>pg_statistic</structname> stores statistical data about the contents of the database. Entries are created by <command>ANALYZE</command> and subsequently used by the query planner. There is one entry for each table column that has been analyzed. @@ -2943,7 +3042,7 @@ Since different kinds of statistics may be appropriate for different kinds of data, <structname>pg_statistic</structname> is designed not to assume very much about what sort of statistics it stores. Only - extremely general statistics (such as NULL-ness) are given dedicated + extremely general statistics (such as nullness) are given dedicated columns in <structname>pg_statistic</structname>. Everything else is stored in <quote>slots</quote>, which are groups of associated columns whose content is identified by a code number in one of the slot's columns. @@ -2966,7 +3065,7 @@ </para> <table> - <title>pg_statistic Columns</title> + <title><structname>pg_statistic</> Columns</title> <tgroup cols=4> <thead> @@ -2980,84 +3079,91 @@ <tbody> <row> - <entry>starelid</entry> + <entry><structfield>starelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table that the described column belongs to</entry> </row> <row> - <entry>staattnum</entry> + <entry><structfield>staattnum</structfield></entry> <entry><type>int2</type></entry> - <entry>pg_attribute.attnum</entry> + <entry><literal>pg_attribute.attnum</literal></entry> <entry>The number of the described column</entry> </row> <row> - <entry>stanullfrac</entry> + <entry><structfield>stanullfrac</structfield></entry> <entry><type>float4</type></entry> <entry></entry> - <entry>The fraction of the column's entries that are NULL</entry> + <entry>The fraction of the column's entries that are null</entry> </row> <row> - <entry>stawidth</entry> + <entry><structfield>stawidth</structfield></entry> <entry><type>int4</type></entry> <entry></entry> - <entry>The average stored width, in bytes, of non-NULL entries</entry> + <entry>The average stored width, in bytes, of nonnull entries</entry> </row> <row> - <entry>stadistinct</entry> + <entry><structfield>stadistinct</structfield></entry> <entry><type>float4</type></entry> <entry></entry> - <entry>The number of distinct non-NULL data values in the column. + <entry>The number of distinct nonnull data values in the column. A value greater than zero is the actual number of distinct values. A value less than zero is the negative of a fraction of the number of rows in the table (for example, a column in which values appear about - twice on the average could be represented by stadistinct = -0.5). + twice on the average could be represented by <structfield>stadistinct</> = -0.5). A zero value means the number of distinct values is unknown. </entry> </row> <row> - <entry>stakindN</entry> + <entry><structfield>stakind<replaceable>N</></structfield></entry> <entry><type>int2</type></entry> <entry></entry> - <entry>A code number indicating the kind of statistics stored in the Nth - <quote>slot</quote> of the <structname>pg_statistic</structname> row. + <entry> + A code number indicating the kind of statistics stored in the + <replaceable>N</>th <quote>slot</quote> of the + <structname>pg_statistic</structname> row. </entry> </row> <row> - <entry>staopN</entry> + <entry><structfield>staop<replaceable>N</></structfield></entry> <entry><type>oid</type></entry> - <entry>pg_operator.oid</entry> - <entry>An operator used to derive the statistics stored in the - Nth <quote>slot</quote>. For example, a histogram slot would show the <literal><</literal> - operator that defines the sort order of the data. + <entry><literal>pg_operator.oid</literal></entry> + <entry> + An operator used to derive the statistics stored in the + <replaceable>N</>th <quote>slot</quote>. For example, a + histogram slot would show the <literal><</literal> operator + that defines the sort order of the data. </entry> </row> <row> - <entry>stanumbersN</entry> + <entry><structfield>stanumbers<replaceable>N</></structfield></entry> <entry><type>float4[]</type></entry> <entry></entry> - <entry>Numerical statistics of the appropriate kind for the Nth - <quote>slot</quote>, or NULL if the slot kind does not involve numerical values. + <entry> + Numerical statistics of the appropriate kind for the + <replaceable>N</>th <quote>slot</quote>, or null if the slot + kind does not involve numerical values. </entry> </row> <row> - <entry>stavaluesN</entry> + <entry><structfield>stavalues<replaceable>N</></structfield></entry> <entry><type>anyarray</type></entry> <entry></entry> - <entry>Column data values of the appropriate kind for the Nth - <quote>slot</quote>, or NULL if the slot kind does not store any data - values. - Each array's element values are actually of the specific column's - datatype, so there is no way to define these columns' type more - specifically than <quote>anyarray</>. + <entry> + Column data values of the appropriate kind for the + <replaceable>N</>th <quote>slot</quote>, or null if the slot + kind does not store any data values. Each array's element + values are actually of the specific column's data type, so there + is no way to define these columns' type more specifically than + <type>anyarray</>. </entry> </row> </tbody> @@ -3068,15 +3174,19 @@ <sect1 id="catalog-pg-trigger"> - <title>pg_trigger</title> + <title><structname>pg_trigger</structname></title> + + <indexterm zone="catalog-pg-trigger"> + <primary>pg_trigger</primary> + </indexterm> <para> - This system catalog stores triggers on tables. See under + The catalog <structname>pg_trigger</structname> stores triggers on tables. See under <command>CREATE TRIGGER</command> for more information. </para> <table> - <title>pg_trigger Columns</title> + <title><structname>pg_trigger</> Columns</title> <tgroup cols=4> <thead> @@ -3090,35 +3200,35 @@ <tbody> <row> - <entry>tgrelid</entry> + <entry><structfield>tgrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry>The table this trigger is on</entry> </row> <row> - <entry>tgname</entry> + <entry><structfield>tgname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Trigger name (must be unique among triggers of same table)</entry> </row> <row> - <entry>tgfoid</entry> + <entry><structfield>tgfoid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>The function to be called</entry> </row> <row> - <entry>tgtype</entry> + <entry><structfield>tgtype</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry>Bitmask identifying trigger conditions</entry> </row> <row> - <entry>tgenabled</entry> + <entry><structfield>tgenabled</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>True if trigger is enabled (not presently checked everywhere @@ -3127,56 +3237,56 @@ </row> <row> - <entry>tgisconstraint</entry> + <entry><structfield>tgisconstraint</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>True if trigger implements an RI constraint</entry> + <entry>True if trigger implements a referential integrity constraint</entry> </row> <row> - <entry>tgconstrname</entry> + <entry><structfield>tgconstrname</structfield></entry> <entry><type>name</type></entry> <entry></entry> - <entry>RI constraint name</entry> + <entry>Referential integrity constraint name</entry> </row> <row> - <entry>tgconstrrelid</entry> + <entry><structfield>tgconstrrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> - <entry>The table referenced by an RI constraint</entry> + <entry><literal>pg_class.oid</literal></entry> + <entry>The table referenced by an referential integrity constraint</entry> </row> <row> - <entry>tgdeferrable</entry> + <entry><structfield>tgdeferrable</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>True if deferrable</entry> </row> <row> - <entry>tginitdeferred</entry> + <entry><structfield>tginitdeferred</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry>True if initially deferred</entry> </row> <row> - <entry>tgnargs</entry> + <entry><structfield>tgnargs</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry>Number of argument strings passed to trigger function</entry> </row> <row> - <entry>tgattr</entry> + <entry><structfield>tgattr</structfield></entry> <entry><type>int2vector</type></entry> <entry></entry> <entry>Currently unused</entry> </row> <row> - <entry>tgargs</entry> + <entry><structfield>tgargs</structfield></entry> <entry><type>bytea</type></entry> <entry></entry> <entry>Argument strings to pass to trigger, each null-terminated</entry> @@ -3187,8 +3297,8 @@ <note> <para> - <structname>pg_class</structname>.<structfield>reltriggers</structfield> - needs to match up with the entries in this table. + <literal>pg_class.reltriggers</literal> needs to match up with the + entries in this table. </para> </note> @@ -3196,19 +3306,23 @@ <sect1 id="catalog-pg-type"> - <title>pg_type</title> + <title><structname>pg_type</structname></title> + + <indexterm zone="catalog-pg-type"> + <primary>pg_type</primary> + </indexterm> <para> - This catalog stores information about data types. Scalar types - (<quote>base types</>) are created with <command>CREATE TYPE</command>. + The catalog <structname>pg_type</structname> stores information about data types. Base types + (scalar types) are created with <command>CREATE TYPE</command>. A complex type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create - complex types with <command>CREATE TYPE AS</command>, and + complex types with <command>CREATE TYPE AS</command> and derived types with <command>CREATE DOMAIN</command>. </para> <table> - <title>pg_type Columns</title> + <title><structname>pg_type</> Columns</title> <tgroup cols=4> <thead> @@ -3222,30 +3336,30 @@ <tbody> <row> - <entry>typname</entry> + <entry><structfield>typname</structfield></entry> <entry><type>name</type></entry> <entry></entry> <entry>Data type name</entry> </row> <row> - <entry>typnamespace</entry> + <entry><structfield>typnamespace</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_namespace.oid</entry> + <entry><literal>pg_namespace.oid</literal></entry> <entry> The OID of the namespace that contains this type </entry> </row> <row> - <entry>typowner</entry> + <entry><structfield>typowner</structfield></entry> <entry><type>int4</type></entry> - <entry>pg_shadow.usesysid</entry> - <entry>Owner (creator) of the type</entry> + <entry><literal>pg_shadow.usesysid</literal></entry> + <entry>Owner of the type</entry> </row> <row> - <entry>typlen</entry> + <entry><structfield>typlen</structfield></entry> <entry><type>int2</type></entry> <entry></entry> <entry> @@ -3258,7 +3372,7 @@ </row> <row> - <entry>typbyval</entry> + <entry><structfield>typbyval</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry> @@ -3278,7 +3392,7 @@ </row> <row> - <entry>typtype</entry> + <entry><structfield>typtype</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry> @@ -3292,17 +3406,19 @@ </row> <row> - <entry>typisdefined</entry> + <entry><structfield>typisdefined</structfield></entry> <entry><type>bool</type></entry> <entry></entry> - <entry>True if the type is defined, false if this is a placeholder - entry for a not-yet-defined type. When typisdefined is false, - nothing except the type name, namespace, and OID can be relied on. + <entry> + True if the type is defined, false if this is a placeholder + entry for a not-yet-defined type. When + <structfield>typisdefined</structfield> is false, nothing + except the type name, namespace, and OID can be relied on. </entry> </row> <row> - <entry>typdelim</entry> + <entry><structfield>typdelim</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry>Character that separates two values of this type when parsing @@ -3311,25 +3427,25 @@ </row> <row> - <entry>typrelid</entry> + <entry><structfield>typrelid</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_class.oid</entry> + <entry><literal>pg_class.oid</literal></entry> <entry> If this is a complex type (see - <structfield>typtype</structfield>), then this field points to + <structfield>typtype</structfield>), then this column points to the <structname>pg_class</structname> entry that defines the corresponding table. (For a free-standing composite type, the <structname>pg_class</structname> entry doesn't really represent a table, but it is needed anyway for the type's <structname>pg_attribute</structname> entries to link to.) - Zero for non-complex types. + Zero for base types. </entry> </row> <row> - <entry>typelem</entry> + <entry><structfield>typelem</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry> If <structfield>typelem</structfield> is not 0 then it identifies another row in <structname>pg_type</structname>. @@ -3341,7 +3457,7 @@ also have nonzero <structfield>typelem</structfield>, for example <type>name</type> and <type>oidvector</type>. If a fixed-length type has a <structfield>typelem</structfield> then - its internal representation must be N values of the + its internal representation must be some number of values of the <structfield>typelem</structfield> data type with no other data. Variable-length array types have a header defined by the array subroutines. @@ -3349,21 +3465,21 @@ </row> <row> - <entry>typinput</entry> + <entry><structfield>typinput</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Input conversion function</entry> </row> <row> - <entry>typoutput</entry> + <entry><structfield>typoutput</structfield></entry> <entry><type>regproc</type></entry> - <entry>pg_proc.oid</entry> + <entry><literal>pg_proc.oid</literal></entry> <entry>Output conversion function</entry> </row> <row> - <entry>typalign</entry> + <entry><structfield>typalign</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry><para> @@ -3381,30 +3497,30 @@ Possible values are: <itemizedlist> <listitem> - <para>'c' = CHAR alignment, i.e., no alignment needed.</para> + <para><literal>c</> = <type>char</type> alignment, i.e., no alignment needed.</para> </listitem> <listitem> - <para>'s' = SHORT alignment (2 bytes on most machines).</para> + <para><literal>s</> = <type>short</type> alignment (2 bytes on most machines).</para> </listitem> <listitem> - <para>'i' = INT alignment (4 bytes on most machines).</para> + <para><literal>i</> = <type>int</type> alignment (4 bytes on most machines).</para> </listitem> <listitem> - <para>'d' = DOUBLE alignment (8 bytes on many machines, but by no means all).</para> + <para><literal>d</> = <type>double</type> alignment (8 bytes on many machines, but by no means all).</para> </listitem> </itemizedlist> </para><note> <para> For types used in system tables, it is critical that the size and alignment defined in <structname>pg_type</structname> - agree with the way that the compiler will lay out the field in + agree with the way that the compiler will lay out the column in a struct representing a table row. </para> </note></entry> </row> <row> - <entry>typstorage</entry> + <entry><structfield>typstorage</structfield></entry> <entry><type>char</type></entry> <entry></entry> <entry><para> @@ -3415,42 +3531,42 @@ Possible values are <itemizedlist> <listitem> - <para>'p': Value must always be stored plain.</para> + <para><literal>p</>: Value must always be stored plain.</para> </listitem> <listitem> <para> - 'e': Value can be stored in a <quote>secondary</quote> + <literal>e</>: Value can be stored in a <quote>secondary</quote> relation (if relation has one, see - <structname>pg_class</structname>.<structfield>reltoastrelid</structfield>). + <literal>pg_class.reltoastrelid</literal>). </para> </listitem> <listitem> - <para>'m': Value can be stored compressed inline.</para> + <para><literal>m</>: Value can be stored compressed inline.</para> </listitem> <listitem> - <para>'x': Value can be stored compressed inline or in <quote>secondary</quote>.</para> + <para><literal>x</>: Value can be stored compressed inline or stored in <quote>secondary</quote> storage.</para> </listitem> </itemizedlist> - Note that 'm' fields can also be moved out to secondary - storage, but only as a last resort ('e' and 'x' fields are + Note that <literal>m</> columns can also be moved out to secondary + storage, but only as a last resort (<literal>e</> and <literal>x</> columns are moved first). </para></entry> </row> <row> - <entry>typnotnull</entry> + <entry><structfield>typnotnull</structfield></entry> <entry><type>bool</type></entry> <entry></entry> <entry><para> - <structfield>typnotnull</structfield> represents a NOT NULL - constraint on a type. Presently used for domains only. + <structfield>typnotnull</structfield> represents a not-null + constraint on a type. Used for domains only. </para></entry> </row> <row> - <entry>typbasetype</entry> + <entry><structfield>typbasetype</structfield></entry> <entry><type>oid</type></entry> - <entry>pg_type.oid</entry> + <entry><literal>pg_type.oid</literal></entry> <entry><para> If this is a derived type (see <structfield>typtype</structfield>), then <structfield>typbasetype</structfield> identifies @@ -3459,49 +3575,49 @@ </row> <row> - <entry>typtypmod</entry> + <entry><structfield>typtypmod</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry><para> - Domains use <structfield>typtypmod</structfield> to record the typmod + Domains use <structfield>typtypmod</structfield> to record the <literal>typmod</> to be applied to their base type (-1 if base type does not use a - typmod). -1 if this type is not a domain. + <literal>typmod</>). -1 if this type is not a domain. </para></entry> </row> <row> - <entry>typndims</entry> + <entry><structfield>typndims</structfield></entry> <entry><type>int4</type></entry> <entry></entry> <entry><para> <structfield>typndims</structfield> is the number of array dimensions for a domain that is an array (that is, typbasetype is an array type; the domain's typelem will match the base type's typelem). - Zero for non-domains and non-array domains. + Zero for types other than array domains. </para></entry> </row> <row> - <entry>typdefaultbin</entry> + <entry><structfield>typdefaultbin</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry><para> - If <structfield>typdefaultbin</> is not NULL, it is the nodeToString - representation of a default expression for the type. Currently this is + If <structfield>typdefaultbin</> is not null, it is the <function>nodeToString()</function> + representation of a default expression for the type. This is only used for domains. </para></entry> </row> <row> - <entry>typdefault</entry> + <entry><structfield>typdefault</structfield></entry> <entry><type>text</type></entry> <entry></entry> <entry><para> - <structfield>typdefault</> is NULL if the type has no associated - default value. If <structfield>typdefaultbin</> is not NULL, + <structfield>typdefault</> is null if the type has no associated + default value. If <structfield>typdefaultbin</> is not null, <structfield>typdefault</> must contain a human-readable version of the default expression represented by <structfield>typdefaultbin</>. If - <structfield>typdefaultbin</> is NULL and <structfield>typdefault</> is + <structfield>typdefaultbin</> is null and <structfield>typdefault</> is not, then <structfield>typdefault</> is the external representation of the type's default value, which may be fed to the type's input converter to produce a constant.