mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-02 18:21:17 +02:00
713a431c78
pg_statistic_ext_data.stxdexpr was listed under the wrong catalog,
as was pg_stats_ext.exprs. Also there was a bogus entry for
pg_statistic_ext_data.stxexprs. Apparently a merge failure in
commit a4d75c86b
.
Guillaume Lelarge and Tom Lane
Discussion: https://postgr.es/m/CAECtzeUHw+w64eUFVeV_2FJviAw6oZ0wNLkmU843ZH4hAQfiWg@mail.gmail.com
13888 lines
461 KiB
Plaintext
13888 lines
461 KiB
Plaintext
<!-- doc/src/sgml/catalogs.sgml -->
|
|
<!--
|
|
Documentation of the system catalogs, directed toward PostgreSQL developers
|
|
-->
|
|
|
|
<chapter id="catalogs">
|
|
<title>System Catalogs</title>
|
|
|
|
<para>
|
|
The system catalogs are the place where a relational database
|
|
management system stores schema metadata, such as information about
|
|
tables and columns, and internal bookkeeping information.
|
|
<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
|
|
are normally SQL commands to do that. (For example, <command>CREATE
|
|
DATABASE</command> inserts a row into the
|
|
<structname>pg_database</structname> catalog — and actually
|
|
creates the database on disk.) There are some exceptions for
|
|
particularly esoteric operations, but many of those have been made
|
|
available as SQL commands over time, and so the need for direct manipulation
|
|
of the system catalogs is ever decreasing.
|
|
</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 a cluster;
|
|
these are noted in the descriptions of the individual catalogs.
|
|
</para>
|
|
|
|
<table id="catalog-table">
|
|
<title>System Catalogs</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Catalog Name</entry>
|
|
<entry>Purpose</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><link linkend="catalog-pg-aggregate"><structname>pg_aggregate</structname></link></entry>
|
|
<entry>aggregate functions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-am"><structname>pg_am</structname></link></entry>
|
|
<entry>relation access methods</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-amop"><structname>pg_amop</structname></link></entry>
|
|
<entry>access method operators</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-amproc"><structname>pg_amproc</structname></link></entry>
|
|
<entry>access method support functions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_attribute</structname></link></entry>
|
|
<entry>table columns (<quote>attributes</quote>)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link></entry>
|
|
<entry>authorization identifiers (roles)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-auth-members"><structname>pg_auth_members</structname></link></entry>
|
|
<entry>authorization identifier membership relationships</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_class</structname></link></entry>
|
|
<entry>tables, indexes, sequences, views (<quote>relations</quote>)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-collation"><structname>pg_collation</structname></link></entry>
|
|
<entry>collations (locale information)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_conversion</structname></link></entry>
|
|
<entry>encoding conversion information</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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-db-role-setting"><structname>pg_db_role_setting</structname></link></entry>
|
|
<entry>per-role and per-database settings</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-default-acl"><structname>pg_default_acl</structname></link></entry>
|
|
<entry>default privileges for object types</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_description</structname></link></entry>
|
|
<entry>descriptions or comments on database objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-enum"><structname>pg_enum</structname></link></entry>
|
|
<entry>enum label and value definitions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-event-trigger"><structname>pg_event_trigger</structname></link></entry>
|
|
<entry>event triggers</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-extension"><structname>pg_extension</structname></link></entry>
|
|
<entry>installed extensions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-foreign-data-wrapper"><structname>pg_foreign_data_wrapper</structname></link></entry>
|
|
<entry>foreign-data wrapper definitions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-foreign-server"><structname>pg_foreign_server</structname></link></entry>
|
|
<entry>foreign server definitions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-foreign-table"><structname>pg_foreign_table</structname></link></entry>
|
|
<entry>additional foreign table information</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_inherits</structname></link></entry>
|
|
<entry>table inheritance hierarchy</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-init-privs"><structname>pg_init_privs</structname></link></entry>
|
|
<entry>object initial privileges</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<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"><structname>pg_largeobject</structname></link></entry>
|
|
<entry>data pages for large objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</structname></link></entry>
|
|
<entry>metadata for large objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link></entry>
|
|
<entry>schemas</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link></entry>
|
|
<entry>access method operator classes</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-operator"><structname>pg_operator</structname></link></entry>
|
|
<entry>operators</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link></entry>
|
|
<entry>access method operator families</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-partitioned-table"><structname>pg_partitioned_table</structname></link></entry>
|
|
<entry>information about partition key of tables</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-policy"><structname>pg_policy</structname></link></entry>
|
|
<entry>row-security policies</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link></entry>
|
|
<entry>functions and procedures</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-publication"><structname>pg_publication</structname></link></entry>
|
|
<entry>publications for logical replication</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-publication-rel"><structname>pg_publication_rel</structname></link></entry>
|
|
<entry>relation to publication mapping</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-range"><structname>pg_range</structname></link></entry>
|
|
<entry>information about range types</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-replication-origin"><structname>pg_replication_origin</structname></link></entry>
|
|
<entry>registered replication origins</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-rewrite"><structname>pg_rewrite</structname></link></entry>
|
|
<entry>query rewrite rules</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link></entry>
|
|
<entry>security labels on database objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-sequence"><structname>pg_sequence</structname></link></entry>
|
|
<entry>information about sequences</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-shdepend"><structname>pg_shdepend</structname></link></entry>
|
|
<entry>dependencies on shared objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link></entry>
|
|
<entry>comments on shared objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</structname></link></entry>
|
|
<entry>security labels on shared database objects</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link></entry>
|
|
<entry>planner statistics</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link></entry>
|
|
<entry>extended planner statistics (definition)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link></entry>
|
|
<entry>extended planner statistics (built statistics)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-subscription"><structname>pg_subscription</structname></link></entry>
|
|
<entry>logical replication subscriptions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-subscription-rel"><structname>pg_subscription_rel</structname></link></entry>
|
|
<entry>relation state for subscriptions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link></entry>
|
|
<entry>tablespaces within this database cluster</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-transform"><structname>pg_transform</structname></link></entry>
|
|
<entry>transforms (data type to procedural language conversions)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-trigger"><structname>pg_trigger</structname></link></entry>
|
|
<entry>triggers</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-ts-config"><structname>pg_ts_config</structname></link></entry>
|
|
<entry>text search configurations</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-ts-config-map"><structname>pg_ts_config_map</structname></link></entry>
|
|
<entry>text search configurations' token mappings</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-ts-dict"><structname>pg_ts_dict</structname></link></entry>
|
|
<entry>text search dictionaries</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-ts-parser"><structname>pg_ts_parser</structname></link></entry>
|
|
<entry>text search parsers</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-ts-template"><structname>pg_ts_template</structname></link></entry>
|
|
<entry>text search templates</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-type"><structname>pg_type</structname></link></entry>
|
|
<entry>data types</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="catalog-pg-user-mapping"><structname>pg_user_mapping</structname></link></entry>
|
|
<entry>mappings of users to foreign servers</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-aggregate">
|
|
<title><structname>pg_aggregate</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-aggregate">
|
|
<primary>pg_aggregate</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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
|
|
from all these values. Typical aggregate functions are
|
|
<function>sum</function>, <function>count</function>, and
|
|
<function>max</function>. Each entry in
|
|
<structname>pg_aggregate</structname> is an extension of an entry
|
|
in <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.
|
|
The <structname>pg_proc</structname> entry carries the aggregate's name,
|
|
input and output data types, and other information that is similar to
|
|
ordinary functions.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_aggregate</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggfnoid</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
<structname>pg_proc</structname> OID of the aggregate function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggkind</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Aggregate kind:
|
|
<literal>n</literal> for <quote>normal</quote> aggregates,
|
|
<literal>o</literal> for <quote>ordered-set</quote> aggregates, or
|
|
<literal>h</literal> for <quote>hypothetical-set</quote> aggregates
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggnumdirectargs</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of direct (non-aggregated) arguments of an ordered-set or
|
|
hypothetical-set aggregate, counting a variadic array as one argument.
|
|
If equal to <structfield>pronargs</structfield>, the aggregate must be variadic
|
|
and the variadic array describes the aggregated arguments as well as
|
|
the final direct arguments.
|
|
Always zero for normal aggregates.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggtransfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Transition function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggfinalfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Final function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggcombinefn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Combine function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggserialfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Serialization function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggdeserialfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Deserialization function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmtransfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Forward transition function for moving-aggregate mode (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggminvtransfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Inverse transition function for moving-aggregate mode (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmfinalfn</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Final function for moving-aggregate mode (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggfinalextra</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True to pass extra dummy arguments to <structfield>aggfinalfn</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmfinalextra</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True to pass extra dummy arguments to <structfield>aggmfinalfn</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggfinalmodify</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Whether <structfield>aggfinalfn</structfield> modifies the
|
|
transition state value:
|
|
<literal>r</literal> if it is read-only,
|
|
<literal>s</literal> if the <structfield>aggtransfn</structfield>
|
|
cannot be applied after the <structfield>aggfinalfn</structfield>, or
|
|
<literal>w</literal> if it writes on the value
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmfinalmodify</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Like <structfield>aggfinalmodify</structfield>, but for
|
|
the <structfield>aggmfinalfn</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggsortop</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Associated sort operator (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggtranstype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the aggregate function's internal transition (state) data
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggtransspace</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Approximate average size (in bytes) of the transition state
|
|
data, or zero to use a default estimate
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmtranstype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the aggregate function's internal transition (state)
|
|
data for moving-aggregate mode (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggmtransspace</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Approximate average size (in bytes) of the transition state data
|
|
for moving-aggregate mode, or zero to use a default estimate
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>agginitval</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The initial value of the transition state. This is a text
|
|
field containing the initial value in its external string
|
|
representation. If this field is null, the transition state
|
|
value starts out null.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>aggminitval</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The initial value of the transition state for moving-aggregate mode.
|
|
This is a text field containing the initial value in its external
|
|
string representation. If this field is null, the transition state
|
|
value starts out null.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
New aggregate functions are registered with the <link
|
|
linkend="sql-createaggregate"><command>CREATE AGGREGATE</command></link>
|
|
command. See <xref linkend="xaggr"/> for more information about
|
|
writing aggregate functions and the meaning of the transition
|
|
functions, etc.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-am">
|
|
<title><structname>pg_am</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-am">
|
|
<primary>pg_am</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_am</structname> stores information about
|
|
relation access methods. There is one row for each access method supported
|
|
by the system.
|
|
Currently, only tables and indexes have access methods. The requirements for table
|
|
and index access methods are discussed in detail in <xref linkend="tableam"/> and
|
|
<xref linkend="indexam"/> respectively.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_am</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the access method
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amhandler</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of a handler function that is responsible for supplying information
|
|
about the access method
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>t</literal> = table (including materialized views),
|
|
<literal>i</literal> = index.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<note>
|
|
<para>
|
|
Before <productname>PostgreSQL</productname> 9.6, <structname>pg_am</structname>
|
|
contained many additional columns representing properties of index access
|
|
methods. That data is now only directly visible at the C code level.
|
|
However, <function>pg_index_column_has_property()</function> and related
|
|
functions have been added to allow SQL queries to inspect index access
|
|
method properties; see <xref linkend="functions-info-catalog-table"/>.
|
|
</para>
|
|
</note>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-amop">
|
|
<title><structname>pg_amop</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-amop">
|
|
<primary>pg_amop</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_amop</structname> stores information about
|
|
operators associated with access method operator families. There is one
|
|
row for each operator that is a member of an operator family. A family
|
|
member can be either a <firstterm>search</firstterm> operator or an
|
|
<firstterm>ordering</firstterm> operator. An operator
|
|
can appear in more than one family, but cannot appear in more than one
|
|
search position nor more than one ordering position within a family.
|
|
(It is allowed, though unlikely, for an operator to be used for both
|
|
search and ordering purposes.)
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_amop</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amopfamily</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The operator family this entry is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amoplefttype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Left-hand input data type of operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amoprighttype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Right-hand input data type of operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amopstrategy</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Operator strategy number
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amoppurpose</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Operator purpose, either <literal>s</literal> for search or
|
|
<literal>o</literal> for ordering
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amopopr</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amopmethod</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-am"><structname>pg_am</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Index access method operator family is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amopsortfamily</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The B-tree operator family this entry sorts according to, if an
|
|
ordering operator; zero if a search operator
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
A <quote>search</quote> operator entry indicates that an index of this operator
|
|
family can be searched to find all rows satisfying
|
|
<literal>WHERE</literal>
|
|
<replaceable>indexed_column</replaceable>
|
|
<replaceable>operator</replaceable>
|
|
<replaceable>constant</replaceable>.
|
|
Obviously, such an operator must return <type>boolean</type>, and its left-hand input
|
|
type must match the index's column data type.
|
|
</para>
|
|
|
|
<para>
|
|
An <quote>ordering</quote> operator entry indicates that an index of this
|
|
operator family can be scanned to return rows in the order represented by
|
|
<literal>ORDER BY</literal>
|
|
<replaceable>indexed_column</replaceable>
|
|
<replaceable>operator</replaceable>
|
|
<replaceable>constant</replaceable>.
|
|
Such an operator could return any sortable data type, though again
|
|
its left-hand input type must match the index's column data type.
|
|
The exact semantics of the <literal>ORDER BY</literal> are specified by the
|
|
<structfield>amopsortfamily</structfield> column, which must reference
|
|
a B-tree operator family for the operator's result type.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
At present, it's assumed that the sort order for an ordering operator
|
|
is the default for the referenced operator family, i.e., <literal>ASC NULLS
|
|
LAST</literal>. This might someday be relaxed by adding additional columns
|
|
to specify sort options explicitly.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
An entry's <structfield>amopmethod</structfield> must match the
|
|
<structfield>opfmethod</structfield> of its containing operator family (including
|
|
<structfield>amopmethod</structfield> here is an intentional denormalization of the
|
|
catalog structure for performance reasons). Also,
|
|
<structfield>amoplefttype</structfield> and <structfield>amoprighttype</structfield> must match
|
|
the <structfield>oprleft</structfield> and <structfield>oprright</structfield> fields of the
|
|
referenced <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link> entry.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-amproc">
|
|
<title><structname>pg_amproc</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-amproc">
|
|
<primary>pg_amproc</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_amproc</structname> stores information about
|
|
support functions associated with access method operator families. There
|
|
is one row for each support function belonging to an operator family.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_amproc</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amprocfamily</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The operator family this entry is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amproclefttype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Left-hand input data type of associated operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amprocrighttype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Right-hand input data type of associated operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amprocnum</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Support function number
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>amproc</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the function
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The usual interpretation of the
|
|
<structfield>amproclefttype</structfield> and <structfield>amprocrighttype</structfield> fields
|
|
is that they identify the left and right input types of the operator(s)
|
|
that a particular support function supports. For some access methods
|
|
these match the input data type(s) of the support function itself, for
|
|
others not. There is a notion of <quote>default</quote> support functions for
|
|
an index, which are those with <structfield>amproclefttype</structfield> and
|
|
<structfield>amprocrighttype</structfield> both equal to the index operator class's
|
|
<structfield>opcintype</structfield>.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-attrdef">
|
|
<title><structname>pg_attrdef</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-attrdef">
|
|
<primary>pg_attrdef</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_attrdef</structname> stores column default
|
|
values. The main information about columns is stored in
|
|
<link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.
|
|
Only columns for which a default value has been explicitly set will have
|
|
an entry here.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_attrdef</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>adrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table this column belongs to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>adnum</structfield> <type>int2</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
The number of the column
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>adbin</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
The column default value, in <function>nodeToString()</function>
|
|
representation. Use <literal>pg_get_expr(adbin, adrelid)</literal> to
|
|
convert it to an SQL expression.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-attribute">
|
|
<title><structname>pg_attribute</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-attribute">
|
|
<primary>pg_attribute</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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
|
|
indexes, and indeed all objects that have
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>
|
|
entries.)
|
|
</para>
|
|
|
|
<para>
|
|
The term attribute is equivalent to column and is used for
|
|
historical reasons.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_attribute</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table this column belongs to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
The column name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>atttypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The data type of this column (zero for a dropped column)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attstattarget</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
<structfield>attstattarget</structfield> controls the level of detail
|
|
of statistics accumulated for this column by
|
|
<link linkend="sql-analyze"><command>ANALYZE</command></link>.
|
|
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 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.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attlen</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
A copy of <literal>pg_type.typlen</literal> of this column's
|
|
type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attnum</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
The number of the column. Ordinary columns are numbered from 1
|
|
up. System columns, such as <structfield>ctid</structfield>,
|
|
have (arbitrary) negative numbers.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attndims</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Number of dimensions, if the column is an array type; otherwise 0.
|
|
(Presently, the number of dimensions of an array is not enforced,
|
|
so any nonzero value effectively means <quote>it's an array</quote>.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attcacheoff</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Always -1 in storage, but when loaded into a row descriptor
|
|
in memory this might be updated to cache the offset of the attribute
|
|
within the row
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>atttypmod</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
<structfield>atttypmod</structfield> records type-specific data
|
|
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 <structfield>atttypmod</structfield>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attbyval</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
A copy of <literal>pg_type.typbyval</literal> of this column's type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attalign</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
A copy of <literal>pg_type.typalign</literal> of this column's type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attstorage</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Normally a copy of <literal>pg_type.typstorage</literal> of this
|
|
column's type. For TOAST-able data types, this can be altered
|
|
after column creation to control storage policy.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attcompression</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
The current compression method of the column. If it is an invalid
|
|
compression method (<literal>'\0'</literal>) then column data will not
|
|
be compressed. Otherwise, <literal>'p'</literal> = pglz compression or
|
|
<literal>'l'</literal> = <productname>LZ4</productname> compression.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attnotnull</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This represents a not-null constraint.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>atthasdef</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This column has a default expression or generation expression, in which
|
|
case there will be a corresponding entry in the
|
|
<link linkend="catalog-pg-attrdef"><structname>pg_attrdef</structname></link> catalog that actually defines the
|
|
expression. (Check <structfield>attgenerated</structfield> to
|
|
determine whether this is a default or a generation expression.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>atthasmissing</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This column has a value which is used where the column is entirely
|
|
missing from the row, as happens when a column is added with a
|
|
non-volatile <literal>DEFAULT</literal> value after the row is created.
|
|
The actual value used is stored in the
|
|
<structfield>attmissingval</structfield> column.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attidentity</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
If a zero byte (<literal>''</literal>), then not an identity column.
|
|
Otherwise, <literal>a</literal> = generated
|
|
always, <literal>d</literal> = generated by default.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attgenerated</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
If a zero byte (<literal>''</literal>), then not a generated column.
|
|
Otherwise, <literal>s</literal> = stored. (Other values might be added
|
|
in the future.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attisdropped</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This column has been dropped and is no longer valid. A dropped
|
|
column is still physically present in the table, but is
|
|
ignored by the parser and so cannot be accessed via SQL.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attislocal</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This column is defined locally in the relation. Note that a column can
|
|
be locally defined and inherited simultaneously.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attinhcount</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
The number of direct ancestors this column has. A column with a
|
|
nonzero number of ancestors cannot be dropped nor renamed.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attcollation</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The defined collation of the column, or zero if the column is
|
|
not of a collatable data type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Column-level access privileges, if any have been granted specifically
|
|
on this column
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Attribute-level options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attfdwoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Attribute-level foreign data wrapper options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attmissingval</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
This column has a one element array containing the value used when the
|
|
column is entirely missing from the row, as happens when the column is
|
|
added with a non-volatile <literal>DEFAULT</literal> value after the
|
|
row is created. The value is only used when
|
|
<structfield>atthasmissing</structfield> is true. If there is no value
|
|
the column is null.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
In a dropped column's <structname>pg_attribute</structname> entry,
|
|
<structfield>atttypid</structfield> is reset to zero, but
|
|
<structfield>attlen</structfield> and the other fields copied from
|
|
<link linkend="catalog-pg-type"><structname>pg_type</structname></link> are still valid. This arrangement is needed
|
|
to cope with the situation where the dropped column's data type was
|
|
later dropped, and so there is no <structname>pg_type</structname> row anymore.
|
|
<structfield>attlen</structfield> and the other fields can be used
|
|
to interpret the contents of a row of the table.
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-authid">
|
|
<title><structname>pg_authid</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-authid">
|
|
<primary>pg_authid</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_authid</structname> contains information about
|
|
database authorization identifiers (roles). A role subsumes the concepts
|
|
of <quote>users</quote> and <quote>groups</quote>. A user is essentially just a
|
|
role with the <structfield>rolcanlogin</structfield> flag set. Any role (with or
|
|
without <structfield>rolcanlogin</structfield>) can have other roles as members; see
|
|
<link linkend="catalog-pg-auth-members"><structname>pg_auth_members</structname></link>.
|
|
</para>
|
|
|
|
<para>
|
|
Since this catalog contains passwords, it must not be publicly readable.
|
|
<link linkend="view-pg-roles"><structname>pg_roles</structname></link>
|
|
is a publicly readable view on
|
|
<structname>pg_authid</structname> that blanks out the password field.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="user-manag"/> contains detailed information about user and
|
|
privilege management.
|
|
</para>
|
|
|
|
<para>
|
|
Because user identities are cluster-wide,
|
|
<structname>pg_authid</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_authid</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_authid</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Role name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolsuper</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role has superuser privileges
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolinherit</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role automatically inherits privileges of roles it is a
|
|
member of
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcreaterole</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can create more roles
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcreatedb</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can create databases
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcanlogin</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can log in. That is, this role can be given as the initial
|
|
session authorization identifier.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolreplication</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role is a replication role. A replication role can initiate replication
|
|
connections and create and drop replication slots.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolbypassrls</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role bypasses every row-level security policy, see
|
|
<xref linkend="ddl-rowsecurity"/> for more information.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolconnlimit</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For roles that can log in, this sets maximum number of concurrent
|
|
connections this role can make. -1 means no limit.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolpassword</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Password (possibly encrypted); null if none. The format depends
|
|
on the form of encryption used.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolvaliduntil</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Password expiry time (only used for password authentication);
|
|
null if no expiration
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
For an MD5 encrypted password, <structfield>rolpassword</structfield>
|
|
column will begin with the string <literal>md5</literal> followed by a
|
|
32-character hexadecimal MD5 hash. The MD5 hash will be of the user's
|
|
password concatenated to their user name. For example, if user
|
|
<literal>joe</literal> has password <literal>xyzzy</literal>, <productname>PostgreSQL</productname>
|
|
will store the md5 hash of <literal>xyzzyjoe</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
If the password is encrypted with SCRAM-SHA-256, it has the format:
|
|
<synopsis>
|
|
SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable><salt></replaceable>$<replaceable><StoredKey></replaceable>:<replaceable><ServerKey></replaceable>
|
|
</synopsis>
|
|
where <replaceable>salt</replaceable>, <replaceable>StoredKey</replaceable> and
|
|
<replaceable>ServerKey</replaceable> are in Base64 encoded format. This format is
|
|
the same as that specified by <ulink url="https://tools.ietf.org/html/rfc5803">RFC 5803</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
A password that does not follow either of those formats is assumed to be
|
|
unencrypted.
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-auth-members">
|
|
<title><structname>pg_auth_members</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-auth-members">
|
|
<primary>pg_auth_members</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_auth_members</structname> shows the membership
|
|
relations between roles. Any non-circular set of relationships is allowed.
|
|
</para>
|
|
|
|
<para>
|
|
Because user identities are cluster-wide,
|
|
<structname>pg_auth_members</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_auth_members</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_auth_members</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>roleid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of a role that has a member
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>member</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of a role that is a member of <structfield>roleid</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>grantor</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of the role that granted this membership
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>admin_option</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if <structfield>member</structfield> can grant membership in
|
|
<structfield>roleid</structfield> to others
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-cast">
|
|
<title><structname>pg_cast</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-cast">
|
|
<primary>pg_cast</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_cast</structname> stores data type conversion
|
|
paths, both built-in and user-defined.
|
|
</para>
|
|
|
|
<para>
|
|
It should be noted that <structname>pg_cast</structname> does not represent
|
|
every type conversion that the system knows how to perform; only those that
|
|
cannot be deduced from some generic rule. For example, casting between a
|
|
domain and its base type is not explicitly represented in
|
|
<structname>pg_cast</structname>. Another important exception is that
|
|
<quote>automatic I/O conversion casts</quote>, those performed using a data
|
|
type's own I/O functions to convert to or from <type>text</type> or other
|
|
string types, are not explicitly represented in
|
|
<structname>pg_cast</structname>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_cast</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>castsource</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the source data type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>casttarget</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the target data type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>castfunc</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the function to use to perform this cast. Zero is
|
|
stored if the cast method doesn't require a function.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>castcontext</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Indicates what contexts the cast can be invoked in.
|
|
<literal>e</literal> means only as an explicit cast (using
|
|
<literal>CAST</literal> or <literal>::</literal> syntax).
|
|
<literal>a</literal> means implicitly in assignment
|
|
to a target column, as well as explicitly.
|
|
<literal>i</literal> means implicitly in expressions, as well as the
|
|
other cases.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>castmethod</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Indicates how the cast is performed.
|
|
<literal>f</literal> means that the function specified in the <structfield>castfunc</structfield> field is used.
|
|
<literal>i</literal> means that the input/output functions are used.
|
|
<literal>b</literal> means that the types are binary-coercible, thus no conversion is required.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The cast functions listed in <structname>pg_cast</structname> must
|
|
always take the cast source type as their first argument type, and
|
|
return the cast destination type as their result type. A cast
|
|
function can have up to three arguments. The second argument,
|
|
if present, must be type <type>integer</type>; it receives the type
|
|
modifier associated with the destination type, or -1
|
|
if there is none. The third argument,
|
|
if present, must be type <type>boolean</type>; it receives <literal>true</literal>
|
|
if the cast is an explicit cast, <literal>false</literal> otherwise.
|
|
</para>
|
|
|
|
<para>
|
|
It is legitimate to create a <structname>pg_cast</structname> entry
|
|
in which the source and target types are the same, if the associated
|
|
function takes more than one argument. Such entries represent
|
|
<quote>length coercion functions</quote> that coerce values of the type
|
|
to be legal for a particular type modifier value.
|
|
</para>
|
|
|
|
<para>
|
|
When a <structname>pg_cast</structname> entry has different source and
|
|
target types and a function that takes more than one argument, it
|
|
represents converting from one type to another and applying a length
|
|
coercion in a single step. When no such entry is available, coercion
|
|
to a type that uses a type modifier involves two steps, one to
|
|
convert between data types and a second to apply the modifier.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-class">
|
|
<title><structname>pg_class</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-class">
|
|
<primary>pg_class</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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 <link
|
|
linkend="catalog-pg-index"><structname>pg_index</structname></link>),
|
|
sequences (but see also <link
|
|
linkend="catalog-pg-sequence"><structname>pg_sequence</structname></link>),
|
|
views, materialized views, composite types, and TOAST tables;
|
|
see <structfield>relkind</structfield>.
|
|
Below, when we mean all of these kinds of objects we speak of
|
|
<quote>relations</quote>. Not all columns are meaningful for all relation
|
|
types.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_class</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the table, index, view, etc.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this relation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reltype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the data type that corresponds to this table's row type,
|
|
if any; zero for indexes, sequences, and toast tables, which have
|
|
no <structname>pg_type</structname> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reloftype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For typed tables, the OID of the underlying composite type;
|
|
zero for all other relations
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the relation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relam</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-am"><structname>pg_am</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If this is a table or an index, the access method used (heap,
|
|
B-tree, hash, etc.); otherwise zero (zero occurs for sequences,
|
|
as well as relations without storage, such as views)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relfilenode</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Name of the on-disk file of this relation; zero means this
|
|
is a <quote>mapped</quote> relation whose disk file name is determined
|
|
by low-level state
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reltablespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The tablespace in which this relation is stored. If zero,
|
|
the database's default tablespace is implied. (Not meaningful
|
|
if the relation has no on-disk file.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relpages</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Size of the on-disk representation of this table in pages (of size
|
|
<symbol>BLCKSZ</symbol>). This is only an estimate used by the
|
|
planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
|
|
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
|
|
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reltuples</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Number of live rows in the table. This is only an estimate used by
|
|
the planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
|
|
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
|
|
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
|
|
If the table has never yet been vacuumed or
|
|
analyzed, <structfield>reltuples</structfield>
|
|
contains <literal>-1</literal> indicating that the row count is
|
|
unknown.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relallvisible</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Number of pages that are marked all-visible in the table's
|
|
visibility map. This is only an estimate used by the
|
|
planner. It is updated by <link linkend="sql-vacuum"><command>VACUUM</command></link>,
|
|
<link linkend="sql-analyze"><command>ANALYZE</command></link>, and a few DDL commands such as
|
|
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reltoastrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the TOAST table associated with this table, zero if none. The
|
|
TOAST table stores large attributes <quote>out of line</quote> in a
|
|
secondary table.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relhasindex</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this is a table and it has (or recently had) any indexes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relisshared</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this table is shared across all databases in the cluster. Only
|
|
certain system catalogs (such as <link linkend="catalog-pg-database"><structname>pg_database</structname></link>)
|
|
are shared.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relpersistence</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>p</literal> = permanent table, <literal>u</literal> = unlogged table,
|
|
<literal>t</literal> = temporary table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relkind</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>r</literal> = ordinary table,
|
|
<literal>i</literal> = index,
|
|
<literal>S</literal> = sequence,
|
|
<literal>t</literal> = TOAST table,
|
|
<literal>v</literal> = view,
|
|
<literal>m</literal> = materialized view,
|
|
<literal>c</literal> = composite type,
|
|
<literal>f</literal> = foreign table,
|
|
<literal>p</literal> = partitioned table,
|
|
<literal>I</literal> = partitioned index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relnatts</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of user columns in the relation (system columns not
|
|
counted). There must be this many corresponding entries in
|
|
<link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>. See also
|
|
<structname>pg_attribute</structname>.<structfield>attnum</structfield>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relchecks</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of <literal>CHECK</literal> constraints on the table; see
|
|
<link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link> catalog
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relhasrules</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if table has (or once had) rules; see
|
|
<link linkend="catalog-pg-rewrite"><structname>pg_rewrite</structname></link> catalog
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relhastriggers</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if table has (or once had) triggers; see
|
|
<link linkend="catalog-pg-trigger"><structname>pg_trigger</structname></link> catalog
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relhassubclass</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if table or index has (or once had) any inheritance children
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relrowsecurity</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if table has row-level security enabled; see
|
|
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relforcerowsecurity</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if row-level security (when enabled) will also apply to table owner; see
|
|
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relispopulated</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if relation is populated (this is true for all
|
|
relations other than some materialized views)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relreplident</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Columns used to form <quote>replica identity</quote> for rows:
|
|
<literal>d</literal> = default (primary key, if any),
|
|
<literal>n</literal> = nothing,
|
|
<literal>f</literal> = all columns,
|
|
<literal>i</literal> = index with
|
|
<structfield>indisreplident</structfield> set (same as nothing if the
|
|
index used has been dropped)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relispartition</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if table or index is a partition
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relrewrite</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For new relations being written during a DDL operation that requires a
|
|
table rewrite, this contains the OID of the original relation;
|
|
otherwise zero. That state is only visible internally; this field should
|
|
never contain anything other than zero for a user-visible relation.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relfrozenxid</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
All transaction IDs before this one have been replaced with a permanent
|
|
(<quote>frozen</quote>) transaction ID in this table. This is used to track
|
|
whether the table needs to be vacuumed in order to prevent transaction
|
|
ID wraparound or to allow <literal>pg_xact</literal> to be shrunk. Zero
|
|
(<symbol>InvalidTransactionId</symbol>) if the relation is not a table.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relminmxid</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
All multixact IDs before this one have been replaced by a
|
|
transaction ID in this table. This is used to track
|
|
whether the table needs to be vacuumed in order to prevent multixact ID
|
|
wraparound or to allow <literal>pg_multixact</literal> to be shrunk. Zero
|
|
(<symbol>InvalidMultiXactId</symbol>) if the relation is not a table.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reloptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Access-method-specific options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relpartbound</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
If table is a partition (see <structfield>relispartition</structfield>),
|
|
internal representation of the partition bound
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Several of the Boolean flags in <structname>pg_class</structname> are maintained
|
|
lazily: they are guaranteed to be true if that's the correct state, but
|
|
may not be reset to false immediately when the condition is no longer
|
|
true. For example, <structfield>relhasindex</structfield> is set by
|
|
<link linkend="sql-createindex"><command>CREATE INDEX</command></link>, but it is never cleared by
|
|
<link linkend="sql-dropindex"><command>DROP INDEX</command></link>. Instead, <link linkend="sql-vacuum"><command>VACUUM</command></link> clears
|
|
<structfield>relhasindex</structfield> if it finds the table has no indexes. This
|
|
arrangement avoids race conditions and improves concurrency.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-collation">
|
|
<title><structname>pg_collation</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-collation">
|
|
<primary>pg_collation</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_collation</structname> describes the
|
|
available collations, which are essentially mappings from an SQL
|
|
name to operating system locale categories.
|
|
See <xref linkend="collation"/> for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_collation</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Collation name (unique per namespace and encoding)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this collation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the collation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collprovider</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Provider of the collation: <literal>d</literal> = database
|
|
default, <literal>c</literal> = libc, <literal>i</literal> = icu
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collisdeterministic</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Is the collation deterministic?
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collencoding</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Encoding in which the collation is applicable, or -1 if it
|
|
works for any encoding
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collcollate</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
<symbol>LC_COLLATE</symbol> for this collation object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collctype</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
<symbol>LC_CTYPE</symbol> for this collation object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>collversion</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Provider-specific version of the collation. This is recorded when the
|
|
collation is created and then checked when it is used, to detect
|
|
changes in the collation definition that could lead to data corruption.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Note that the unique key on this catalog is (<structfield>collname</structfield>,
|
|
<structfield>collencoding</structfield>, <structfield>collnamespace</structfield>) not just
|
|
(<structfield>collname</structfield>, <structfield>collnamespace</structfield>).
|
|
<productname>PostgreSQL</productname> generally ignores all
|
|
collations that do not have <structfield>collencoding</structfield> equal to
|
|
either the current database's encoding or -1, and creation of new entries
|
|
with the same name as an entry with <structfield>collencoding</structfield> = -1
|
|
is forbidden. Therefore it is sufficient to use a qualified SQL name
|
|
(<replaceable>schema</replaceable>.<replaceable>name</replaceable>) to identify a collation,
|
|
even though this is not unique according to the catalog definition.
|
|
The reason for defining the catalog this way is that
|
|
<application>initdb</application> fills it in at cluster initialization time with
|
|
entries for all locales available on the system, so it must be able to
|
|
hold entries for all encodings that might ever be used in the cluster.
|
|
</para>
|
|
|
|
<para>
|
|
In the <literal>template0</literal> database, it could be useful to create
|
|
collations whose encoding does not match the database encoding,
|
|
since they could match the encodings of databases later cloned from
|
|
<literal>template0</literal>. This would currently have to be done manually.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-constraint">
|
|
<title><structname>pg_constraint</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-constraint">
|
|
<primary>pg_constraint</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_constraint</structname> stores check, primary
|
|
key, unique, foreign key, and exclusion 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
|
|
<link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>
|
|
catalog, not here.
|
|
</para>
|
|
|
|
<para>
|
|
User-defined constraint triggers (created with <link linkend="sql-createtrigger">
|
|
<command>CREATE CONSTRAINT TRIGGER</command></link>) also give rise to an entry in this table.
|
|
</para>
|
|
|
|
<para>
|
|
Check constraints on domains are stored here, too.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_constraint</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Constraint name (not necessarily unique!)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>connamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this constraint
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>contype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>c</literal> = check constraint,
|
|
<literal>f</literal> = foreign key constraint,
|
|
<literal>p</literal> = primary key constraint,
|
|
<literal>u</literal> = unique constraint,
|
|
<literal>t</literal> = constraint trigger,
|
|
<literal>x</literal> = exclusion constraint
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>condeferrable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Is the constraint deferrable?
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>condeferred</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Is the constraint deferred by default?
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>convalidated</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Has the constraint been validated?
|
|
Currently, can be false only for foreign keys and CHECK constraints
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table this constraint is on; zero if not a table constraint
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>contypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The domain this constraint is on; zero if not a domain constraint
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conindid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The index supporting this constraint, if it's a unique, primary
|
|
key, foreign key, or exclusion constraint; else zero
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conparentid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The corresponding constraint of the parent partitioned table,
|
|
if this is a constraint on a partition; else zero
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If a foreign key, the referenced table; else zero
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confupdtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Foreign key update action code:
|
|
<literal>a</literal> = no action,
|
|
<literal>r</literal> = restrict,
|
|
<literal>c</literal> = cascade,
|
|
<literal>n</literal> = set null,
|
|
<literal>d</literal> = set default
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confdeltype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Foreign key deletion action code:
|
|
<literal>a</literal> = no action,
|
|
<literal>r</literal> = restrict,
|
|
<literal>c</literal> = cascade,
|
|
<literal>n</literal> = set null,
|
|
<literal>d</literal> = set default
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confmatchtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Foreign key match type:
|
|
<literal>f</literal> = full,
|
|
<literal>p</literal> = partial,
|
|
<literal>s</literal> = simple
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conislocal</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This constraint is defined locally for the relation. Note that a
|
|
constraint can be locally defined and inherited simultaneously.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>coninhcount</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
The number of direct inheritance ancestors this constraint has.
|
|
A constraint with
|
|
a nonzero number of ancestors cannot be dropped nor renamed.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>connoinherit</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This constraint is defined locally for the relation. It is a
|
|
non-inheritable constraint.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conkey</structfield> <type>int2[]</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
If a table constraint (including foreign keys, but not constraint
|
|
triggers), list of the constrained columns
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confkey</structfield> <type>int2[]</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
If a foreign key, list of the referenced columns
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conpfeqop</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If a foreign key, list of the equality operators for PK = FK comparisons
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conppeqop</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If a foreign key, list of the equality operators for PK = PK comparisons
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conffeqop</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If a foreign key, list of the equality operators for FK = FK comparisons
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conexclop</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If an exclusion constraint, list of the per-column exclusion operators
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conbin</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
If a check constraint, an internal representation of the
|
|
expression. (It's recommended to use
|
|
<function>pg_get_constraintdef()</function> to extract the definition of
|
|
a check constraint.)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
In the case of an exclusion constraint, <structfield>conkey</structfield>
|
|
is only useful for constraint elements that are simple column references.
|
|
For other cases, a zero appears in <structfield>conkey</structfield>
|
|
and the associated index must be consulted to discover the expression
|
|
that is constrained. (<structfield>conkey</structfield> thus has the
|
|
same contents as <link linkend="catalog-pg-index"><structname>pg_index</structname></link>.<structfield>indkey</structfield> for the
|
|
index.)
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
<literal>pg_class.relchecks</literal> needs to agree with the
|
|
number of check-constraint entries found in this table for each
|
|
relation.
|
|
</para>
|
|
</note>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-conversion">
|
|
<title><structname>pg_conversion</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-conversion">
|
|
<primary>pg_conversion</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_conversion</structname> describes
|
|
encoding conversion functions. See <xref linkend="sql-createconversion"/>
|
|
for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_conversion</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Conversion name (unique within a namespace)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>connamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this conversion
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the conversion
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conforencoding</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Source encoding ID
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>contoencoding</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Destination encoding ID
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>conproc</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Conversion function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>condefault</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this is the default conversion
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-database">
|
|
<title><structname>pg_database</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-database">
|
|
<primary>pg_database</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_database</structname> stores information about
|
|
the available databases. Databases are created with the <link
|
|
linkend="sql-createdatabase"><command>CREATE DATABASE</command></link> command.
|
|
Consult <xref linkend="managing-databases"/> for details about the meaning
|
|
of some of the parameters.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_database</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_database</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_database</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Database name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datdba</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the database, usually the user who created it
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>encoding</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Character encoding for this database
|
|
(<function>pg_encoding_to_char()</function> can translate
|
|
this number to the encoding name)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datcollate</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
LC_COLLATE for this database
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datctype</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
LC_CTYPE for this database
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datistemplate</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, then this database can be cloned by
|
|
any user with <literal>CREATEDB</literal> privileges;
|
|
if false, then only superusers or the owner of
|
|
the database can clone it.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datallowconn</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If false then no one can connect to this database. This is
|
|
used to protect the <literal>template0</literal> database from being altered.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datconnlimit</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Sets maximum number of concurrent connections that can be made
|
|
to this database. -1 means no limit.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datlastsysoid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Last system OID in the database; useful
|
|
particularly to <application>pg_dump</application>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datfrozenxid</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
All transaction IDs before this one have been replaced with a permanent
|
|
(<quote>frozen</quote>) transaction ID in this database. This is used to
|
|
track whether the database needs to be vacuumed in order to prevent
|
|
transaction ID wraparound or to allow <literal>pg_xact</literal> to be shrunk.
|
|
It is the minimum of the per-table
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relfrozenxid</structfield> values.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datminmxid</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
All multixact IDs before this one have been replaced with a
|
|
transaction ID in this database. This is used to
|
|
track whether the database needs to be vacuumed in order to prevent
|
|
multixact ID wraparound or to allow <literal>pg_multixact</literal> to be shrunk.
|
|
It is the minimum of the per-table
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relminmxid</structfield> values.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dattablespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The default tablespace for the database.
|
|
Within this database, all tables for which
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>reltablespace</structfield> is zero
|
|
will be stored in this tablespace; in particular, all the non-shared
|
|
system catalogs will be there.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-db-role-setting">
|
|
<title><structname>pg_db_role_setting</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-db-role-setting">
|
|
<primary>pg_db_role_setting</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_db_role_setting</structname> records the default
|
|
values that have been set for run-time configuration variables,
|
|
for each role and database combination.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_db_role_setting</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_db_role_setting</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_db_role_setting</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setdatabase</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the database the setting is applicable to, or zero if not database-specific
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setrole</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the role the setting is applicable to, or zero if not role-specific
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setconfig</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Defaults for run-time configuration variables
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-default-acl">
|
|
<title><structname>pg_default_acl</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-default-acl">
|
|
<primary>pg_default_acl</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_default_acl</structname> stores initial
|
|
privileges to be assigned to newly created objects.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_default_acl</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>defaclrole</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the role associated with this entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>defaclnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace associated with this entry,
|
|
or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>defaclobjtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Type of object this entry is for:
|
|
<literal>r</literal> = relation (table, view),
|
|
<literal>S</literal> = sequence,
|
|
<literal>f</literal> = function,
|
|
<literal>T</literal> = type,
|
|
<literal>n</literal> = schema
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>defaclacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges that this type of object should have on creation
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
A <structname>pg_default_acl</structname> entry shows the initial privileges to
|
|
be assigned to an object belonging to the indicated user. There are
|
|
currently two types of entry: <quote>global</quote> entries with
|
|
<structfield>defaclnamespace</structfield> = zero, and <quote>per-schema</quote> entries
|
|
that reference a particular schema. If a global entry is present then
|
|
it <emphasis>overrides</emphasis> the normal hard-wired default privileges
|
|
for the object type. A per-schema entry, if present, represents privileges
|
|
to be <emphasis>added to</emphasis> the global or hard-wired default privileges.
|
|
</para>
|
|
|
|
<para>
|
|
Note that when an ACL entry in another catalog is null, it is taken
|
|
to represent the hard-wired default privileges for its object,
|
|
<emphasis>not</emphasis> whatever might be in <structname>pg_default_acl</structname>
|
|
at the moment. <structname>pg_default_acl</structname> is only consulted during
|
|
object creation.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-depend">
|
|
<title><structname>pg_depend</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-depend">
|
|
<primary>pg_depend</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_depend</structname> records the dependency
|
|
relationships between database objects. This information allows
|
|
<command>DROP</command> commands to find which other objects must be dropped
|
|
by <command>DROP CASCADE</command> or prevent dropping in the <command>DROP
|
|
RESTRICT</command> case.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-shdepend"><structname>pg_shdepend</structname></link>,
|
|
which performs a similar function for dependencies involving objects
|
|
that are shared across a database cluster.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_depend</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog the dependent object is in,
|
|
or zero for a <symbol>DEPENDENCY_PIN</symbol> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the specific dependent object,
|
|
or zero for a <symbol>DEPENDENCY_PIN</symbol> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a table column, this is the column number (the
|
|
<structfield>objid</structfield> and <structfield>classid</structfield> refer to the
|
|
table itself). For all other object types, this column is
|
|
zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>refclassid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog the referenced object is in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>refobjid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the specific referenced object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>refobjsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a table column, this is the column number (the
|
|
<structfield>refobjid</structfield> and <structfield>refclassid</structfield> refer
|
|
to the table itself). For all other object types, this column
|
|
is zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>deptype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
A code defining the specific semantics of this dependency relationship; see text
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
In all cases, a <structname>pg_depend</structname> entry indicates that the
|
|
referenced object cannot be dropped without also dropping the dependent
|
|
object. However, there are several subflavors identified by
|
|
<structfield>deptype</structfield>:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_NORMAL</symbol> (<literal>n</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
A normal relationship between separately-created objects. The
|
|
dependent object can be dropped without affecting the
|
|
referenced object. The referenced object can only be dropped
|
|
by specifying <literal>CASCADE</literal>, 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</symbol> (<literal>a</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The dependent object can be dropped separately from the
|
|
referenced object, and should be automatically dropped
|
|
(regardless of <literal>RESTRICT</literal> or <literal>CASCADE</literal>
|
|
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>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_INTERNAL</symbol> (<literal>i</literal>)</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 direct <command>DROP</command> of the dependent
|
|
object will be disallowed outright (we'll tell the user to issue
|
|
a <command>DROP</command> against the referenced object, instead).
|
|
A <command>DROP</command> of the referenced object will result in
|
|
automatically dropping the dependent object
|
|
whether <literal>CASCADE</literal> is specified or not. If the
|
|
dependent object has to be dropped due to a dependency on some other
|
|
object being removed, its drop is converted to a drop of the referenced
|
|
object, so that <literal>NORMAL</literal> and <literal>AUTO</literal>
|
|
dependencies of the dependent object behave much like they were
|
|
dependencies of the referenced object.
|
|
Example: a view's <literal>ON SELECT</literal> rule is made
|
|
internally dependent on the view, preventing it from being dropped
|
|
while the view remains. Dependencies of the rule (such as tables it
|
|
refers to) act as if they were dependencies of the view.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_PARTITION_PRI</symbol> (<literal>P</literal>)</term>
|
|
<term><symbol>DEPENDENCY_PARTITION_SEC</symbol> (<literal>S</literal>)</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; however, unlike <literal>INTERNAL</literal>,
|
|
there is more than one such referenced object. The dependent object
|
|
must not be dropped unless at least one of these referenced objects
|
|
is dropped; if any one is, the dependent object should be dropped
|
|
whether or not <literal>CASCADE</literal> is specified. Also
|
|
unlike <literal>INTERNAL</literal>, a drop of some other object
|
|
that the dependent object depends on does not result in automatic
|
|
deletion of any partition-referenced object. Hence, if the drop
|
|
does not cascade to at least one of these objects via some other
|
|
path, it will be refused. (In most cases, the dependent object
|
|
shares all its non-partition dependencies with at least one
|
|
partition-referenced object, so that this restriction does not
|
|
result in blocking any cascaded delete.)
|
|
Primary and secondary partition dependencies behave identically
|
|
except that the primary dependency is preferred for use in error
|
|
messages; hence, a partition-dependent object should have one
|
|
primary partition dependency and one or more secondary partition
|
|
dependencies.
|
|
Note that partition dependencies are made in addition to, not
|
|
instead of, any dependencies the object would normally have. This
|
|
simplifies <command>ATTACH/DETACH PARTITION</command> operations:
|
|
the partition dependencies need only be added or removed.
|
|
Example: a child partitioned index is made partition-dependent
|
|
on both the partition table it is on and the parent partitioned
|
|
index, so that it goes away if either of those is dropped, but
|
|
not otherwise. The dependency on the parent index is primary,
|
|
so that if the user tries to drop the child partitioned index,
|
|
the error message will suggest dropping the parent index instead
|
|
(not the table).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_EXTENSION</symbol> (<literal>e</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The dependent object is a member of the <firstterm>extension</firstterm> that is
|
|
the referenced object (see
|
|
<link linkend="catalog-pg-extension"><structname>pg_extension</structname></link>).
|
|
The dependent object can be dropped only via
|
|
<link linkend="sql-dropextension"><command>DROP EXTENSION</command></link> on the referenced object.
|
|
Functionally this dependency type acts the same as
|
|
an <literal>INTERNAL</literal> dependency, but it's kept separate for
|
|
clarity and to simplify <application>pg_dump</application>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_AUTO_EXTENSION</symbol> (<literal>x</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The dependent object is not a member of the extension that is the
|
|
referenced object (and so it should not be ignored
|
|
by <application>pg_dump</application>), but it cannot function
|
|
without the extension and should be auto-dropped if the extension is.
|
|
The dependent object may be dropped on its own as well.
|
|
Functionally this dependency type acts the same as
|
|
an <literal>AUTO</literal> dependency, but it's kept separate for
|
|
clarity and to simplify <application>pg_dump</application>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>DEPENDENCY_PIN</symbol> (<literal>p</literal>)</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 <application>initdb</application>. The columns for the
|
|
dependent object contain zeroes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
Other dependency flavors might be needed in future.
|
|
</para>
|
|
|
|
<para>
|
|
Note that it's quite possible for two objects to be linked by more than
|
|
one <structname>pg_depend</structname> entry. For example, a child
|
|
partitioned index would have both a partition-type dependency on its
|
|
associated partition table, and an auto dependency on each column of
|
|
that table that it indexes. This sort of situation expresses the union
|
|
of multiple dependency semantics. A dependent object can be dropped
|
|
without <literal>CASCADE</literal> if any of its dependencies satisfies
|
|
its condition for automatic dropping. Conversely, all the
|
|
dependencies' restrictions about which objects must be dropped together
|
|
must be satisfied.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-description">
|
|
<title><structname>pg_description</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-description">
|
|
<primary>pg_description</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_description</structname> stores optional descriptions
|
|
(comments) for each database object. Descriptions can be manipulated
|
|
with the <link linkend="sql-comment"><command>COMMENT</command></link> 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 <structname>pg_description</structname>.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>,
|
|
which performs a similar function for descriptions involving objects that
|
|
are shared across a database cluster.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_description</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the object this description pertains to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog this object appears in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a comment on a table column, this is the column number (the
|
|
<structfield>objoid</structfield> and <structfield>classoid</structfield> refer to
|
|
the table itself). For all other object types, this column is
|
|
zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>description</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Arbitrary text that serves as the description of this object
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-enum">
|
|
<title><structname>pg_enum</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-enum">
|
|
<primary>pg_enum</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_enum</structname> catalog contains entries
|
|
showing the values and labels for each enum type. The
|
|
internal representation of a given enum value is actually the OID
|
|
of its associated row in <structname>pg_enum</structname>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_enum</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>enumtypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-type"><structname>pg_type</structname></link> entry owning this enum value
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>enumsortorder</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
The sort position of this enum value within its enum type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>enumlabel</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
The textual label for this enum value
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The OIDs for <structname>pg_enum</structname> rows follow a special
|
|
rule: even-numbered OIDs are guaranteed to be ordered in the same way
|
|
as the sort ordering of their enum type. That is, if two even OIDs
|
|
belong to the same enum type, the smaller OID must have the smaller
|
|
<structfield>enumsortorder</structfield> value. Odd-numbered OID values
|
|
need bear no relationship to the sort order. This rule allows the
|
|
enum comparison routines to avoid catalog lookups in many common cases.
|
|
The routines that create and alter enum types attempt to assign even
|
|
OIDs to enum values whenever possible.
|
|
</para>
|
|
|
|
<para>
|
|
When an enum type is created, its members are assigned sort-order
|
|
positions 1..<replaceable>n</replaceable>. But members added later might be given
|
|
negative or fractional values of <structfield>enumsortorder</structfield>.
|
|
The only requirement on these values is that they be correctly
|
|
ordered and unique within each enum type.
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-event-trigger">
|
|
<title><structname>pg_event_trigger</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-event-trigger">
|
|
<primary>pg_event_trigger</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_event_trigger</structname> stores event triggers.
|
|
See <xref linkend="event-triggers"/> for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_event_trigger</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evtname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Trigger name (must be unique)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evtevent</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Identifies the event for which this trigger fires
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evtowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the event trigger
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evtfoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The function to be called
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evtenabled</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Controls in which <xref linkend="guc-session-replication-role"/> modes
|
|
the event trigger fires.
|
|
<literal>O</literal> = trigger fires in <quote>origin</quote> and <quote>local</quote> modes,
|
|
<literal>D</literal> = trigger is disabled,
|
|
<literal>R</literal> = trigger fires in <quote>replica</quote> mode,
|
|
<literal>A</literal> = trigger fires always.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>evttags</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Command tags for which this trigger will fire. If NULL, the firing
|
|
of this trigger is not restricted on the basis of the command tag.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-extension">
|
|
<title><structname>pg_extension</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-extension">
|
|
<primary>pg_extension</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_extension</structname> stores information
|
|
about the installed extensions. See <xref linkend="extend-extensions"/>
|
|
for details about extensions.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_extension</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the extension
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the extension
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Schema containing the extension's exported objects
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extrelocatable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if extension can be relocated to another schema
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extversion</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Version name for the extension
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extconfig</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Array of <type>regclass</type> OIDs for the extension's configuration
|
|
table(s), or <literal>NULL</literal> if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extcondition</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Array of <literal>WHERE</literal>-clause filter conditions for the
|
|
extension's configuration table(s), or <literal>NULL</literal> if none
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Note that unlike most catalogs with a <quote>namespace</quote> column,
|
|
<structfield>extnamespace</structfield> is not meant to imply
|
|
that the extension belongs to that schema. Extension names are never
|
|
schema-qualified. Rather, <structfield>extnamespace</structfield>
|
|
indicates the schema that contains most or all of the extension's
|
|
objects. If <structfield>extrelocatable</structfield> is true, then
|
|
this schema must in fact contain all schema-qualifiable objects
|
|
belonging to the extension.
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-foreign-data-wrapper">
|
|
<title><structname>pg_foreign_data_wrapper</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-foreign-data-wrapper">
|
|
<primary>pg_foreign_data_wrapper</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_foreign_data_wrapper</structname> stores
|
|
foreign-data wrapper definitions. A foreign-data wrapper is the
|
|
mechanism by which external data, residing on foreign servers, is
|
|
accessed.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_foreign_data_wrapper</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the foreign-data wrapper
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the foreign-data wrapper
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwhandler</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
References a handler function that is responsible for
|
|
supplying execution routines for the foreign-data wrapper.
|
|
Zero if no handler is provided
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwvalidator</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
References a validator function that is responsible for
|
|
checking the validity of the options given to the
|
|
foreign-data wrapper, as well as options for foreign servers and user
|
|
mappings using the foreign-data wrapper. Zero if no validator
|
|
is provided
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fdwoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Foreign-data wrapper specific options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-foreign-server">
|
|
<title><structname>pg_foreign_server</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-foreign-server">
|
|
<primary>pg_foreign_server</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_foreign_server</structname> stores
|
|
foreign server definitions. A foreign server describes a source
|
|
of external data, such as a remote server. Foreign
|
|
servers are accessed via foreign-data wrappers.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_foreign_server</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the foreign server
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the foreign server
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvfdw</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-foreign-data-wrapper"><structname>pg_foreign_data_wrapper</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the foreign-data wrapper of this foreign server
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvtype</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Type of the server (optional)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvversion</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Version of the server (optional)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Foreign server specific options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-foreign-table">
|
|
<title><structname>pg_foreign_table</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-foreign-table">
|
|
<primary>pg_foreign_table</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_foreign_table</structname> contains
|
|
auxiliary information about foreign tables. A foreign table is
|
|
primarily represented by a
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>
|
|
entry, just like a regular table. Its <structname>pg_foreign_table</structname>
|
|
entry contains the information that is pertinent only to foreign tables
|
|
and not any other kind of relation.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_foreign_table</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ftrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for this foreign table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ftserver</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-foreign-server"><structname>pg_foreign_server</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the foreign server for this foreign table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ftoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Foreign table options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-index">
|
|
<title><structname>pg_index</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-index">
|
|
<primary>pg_index</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_index</structname> contains part of the information
|
|
about indexes. The rest is mostly in
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_index</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indexrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for this index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for the table this index is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indnatts</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
The total number of columns in the index (duplicates
|
|
<literal>pg_class.relnatts</literal>); this number includes both key and included attributes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indnkeyatts</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
The number of <firstterm>key columns</firstterm> in the index,
|
|
not counting any <firstterm>included columns</firstterm>, which are
|
|
merely stored and do not participate in the index semantics
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisunique</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, this is a unique index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisprimary</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, this index represents the primary key of the table
|
|
(<structfield>indisunique</structfield> should always be true when this is true)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisexclusion</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, this index supports an exclusion constraint
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indimmediate</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the uniqueness check is enforced immediately on
|
|
insertion
|
|
(irrelevant if <structfield>indisunique</structfield> is not true)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisclustered</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the table was last clustered on this index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisvalid</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the index is currently valid for queries. False means the
|
|
index is possibly incomplete: it must still be modified by
|
|
<link linkend="sql-insert"><command>INSERT</command></link>/<link linkend="sql-update"><command>UPDATE</command></link> operations, but it cannot safely
|
|
be used for queries. If it is unique, the uniqueness property is not
|
|
guaranteed true either.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indcheckxmin</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, queries must not use the index until the <structfield>xmin</structfield>
|
|
of this <structname>pg_index</structname> row is below their <symbol>TransactionXmin</symbol>
|
|
event horizon, because the table may contain broken HOT chains with
|
|
incompatible rows that they can see
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisready</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the index is currently ready for inserts. False means the
|
|
index must be ignored by <link linkend="sql-insert"><command>INSERT</command></link>/<link linkend="sql-update"><command>UPDATE</command></link>
|
|
operations.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indislive</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If false, the index is in process of being dropped, and should be
|
|
ignored for all purposes (including HOT-safety decisions)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indisreplident</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true this index has been chosen as <quote>replica identity</quote>
|
|
using <link linkend="sql-altertable-replica-identity"><command>ALTER TABLE ...
|
|
REPLICA IDENTITY USING INDEX ...</command></link>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indkey</structfield> <type>int2vector</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
This is an array of <structfield>indnatts</structfield> values that
|
|
indicate which table columns this index indexes. For example a value
|
|
of <literal>1 3</literal> would mean that the first and the third table
|
|
columns make up the index entries. Key columns come before non-key
|
|
(included) columns. A zero in this array indicates that the
|
|
corresponding index attribute is an expression over the table columns,
|
|
rather than a simple column reference.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indcollation</structfield> <type>oidvector</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For each column in the index key
|
|
(<structfield>indnkeyatts</structfield> values), this contains the OID
|
|
of the collation to use for the index, or zero if the column is not of
|
|
a collatable data type.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indclass</structfield> <type>oidvector</type>
|
|
(references <link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For each column in the index key
|
|
(<structfield>indnkeyatts</structfield> values), this contains the OID
|
|
of the operator class to use. See
|
|
<link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link> for details.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indoption</structfield> <type>int2vector</type>
|
|
</para>
|
|
<para>
|
|
This is an array of <structfield>indnkeyatts</structfield> values that
|
|
store per-column flag bits. The meaning of the bits is defined by
|
|
the index's access method.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indexprs</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression trees (in <function>nodeToString()</function>
|
|
representation) for index attributes that are not simple column
|
|
references. This is a list with one element for each zero
|
|
entry in <structfield>indkey</structfield>. Null if all index attributes
|
|
are simple references.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indpred</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression tree (in <function>nodeToString()</function>
|
|
representation) for partial index predicate. Null if not a
|
|
partial index.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-inherits">
|
|
<title><structname>pg_inherits</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-inherits">
|
|
<primary>pg_inherits</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_inherits</structname> records information about
|
|
table and index inheritance hierarchies. There is one entry for each direct
|
|
parent-child table or index relationship in the database. (Indirect
|
|
inheritance can be determined by following chains of entries.)
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_inherits</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>inhrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the child table or index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>inhparent</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the parent table or index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>inhseqno</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
If there is more than one direct parent for a child table (multiple
|
|
inheritance), this number tells the order in which the
|
|
inherited columns are to be arranged. The count starts at 1.
|
|
</para>
|
|
<para>
|
|
Indexes cannot have multiple inheritance, since they can only inherit
|
|
when using declarative partitioning.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>inhdetachpending</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> for a partition that is in the process of
|
|
being detached; <literal>false</literal> otherwise.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-init-privs">
|
|
<title><structname>pg_init_privs</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-init-privs">
|
|
<primary>pg_init_privs</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_init_privs</structname> records information about
|
|
the initial privileges of objects in the system. There is one entry
|
|
for each object in the database which has a non-default (non-NULL)
|
|
initial set of privileges.
|
|
</para>
|
|
|
|
<para>
|
|
Objects can have initial privileges either by having those privileges set
|
|
when the system is initialized (by <application>initdb</application>) or when the
|
|
object is created during a <link linkend="sql-createextension"><command>CREATE EXTENSION</command></link> and the
|
|
extension script sets initial privileges using the <link linkend="sql-grant"><command>GRANT</command></link>
|
|
system. Note that the system will automatically handle recording of the
|
|
privileges during the extension script and that extension authors need
|
|
only use the <command>GRANT</command> and <command>REVOKE</command>
|
|
statements in their script to have the privileges recorded. The
|
|
<literal>privtype</literal> column indicates if the initial privilege was
|
|
set by <application>initdb</application> or during a
|
|
<command>CREATE EXTENSION</command> command.
|
|
</para>
|
|
|
|
<para>
|
|
Objects which have initial privileges set by <application>initdb</application> will
|
|
have entries where <literal>privtype</literal> is
|
|
<literal>'i'</literal>, while objects which have initial privileges set
|
|
by <command>CREATE EXTENSION</command> will have entries where
|
|
<literal>privtype</literal> is <literal>'e'</literal>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_init_privs</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the specific object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog the object is in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a table column, this is the column number (the
|
|
<structfield>objoid</structfield> and <structfield>classoid</structfield> refer to the
|
|
table itself). For all other object types, this column is
|
|
zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>privtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
A code defining the type of initial privilege of this object; see text
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>initprivs</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
The initial access privileges; see
|
|
<xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-language">
|
|
<title><structname>pg_language</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-language">
|
|
<primary>pg_language</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_language</structname> registers
|
|
languages in which you can write functions or stored procedures.
|
|
See <xref linkend="sql-createlanguage"/>
|
|
and <xref linkend="xplang"/> for more information about language handlers.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_language</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the language
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the language
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanispl</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This is false for internal languages (such as
|
|
<acronym>SQL</acronym>) and true for user-defined languages.
|
|
Currently, <application>pg_dump</application> still uses this
|
|
to determine which languages need to be dumped, but this might be
|
|
replaced by a different mechanism in the future.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanpltrusted</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this is a trusted language, which means that it is believed
|
|
not to grant access to anything outside the normal SQL execution
|
|
environment. Only superusers can create functions in untrusted
|
|
languages.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanplcallfoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
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. Zero for internal languages.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>laninline</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
This references a function that is responsible for executing
|
|
<quote>inline</quote> anonymous code blocks
|
|
(<xref linkend="sql-do"/> blocks).
|
|
Zero if inline blocks are not supported.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanvalidator</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
This references a language validator function that is responsible
|
|
for checking the syntax and validity of new functions when they
|
|
are created. Zero if no validator is provided.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lanacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-largeobject">
|
|
<title><structname>pg_largeobject</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-largeobject">
|
|
<primary>pg_largeobject</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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</quote> small enough to be conveniently stored as rows
|
|
in <structname>pg_largeobject</structname>.
|
|
The amount of data per page is defined to be <symbol>LOBLKSIZE</symbol> (which is currently
|
|
<literal>BLCKSZ/4</literal>, or typically 2 kB).
|
|
</para>
|
|
|
|
<para>
|
|
Prior to <productname>PostgreSQL</productname> 9.0, there was no permission structure
|
|
associated with large objects. As a result,
|
|
<structname>pg_largeobject</structname> was publicly readable and could be
|
|
used to obtain the OIDs (and contents) of all large objects in the system.
|
|
This is no longer the case; use
|
|
<link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</structname></link>
|
|
to obtain a list of large object OIDs.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_largeobject</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>loid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Identifier of the large object that includes this page
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pageno</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Page number of this page within its large object
|
|
(counting from zero)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>data</structfield> <type>bytea</type>
|
|
</para>
|
|
<para>
|
|
Actual data stored in the large object.
|
|
This will never be more than <symbol>LOBLKSIZE</symbol> bytes and might be less.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Each row of <structname>pg_largeobject</structname> holds data
|
|
for one page of a large object, beginning at
|
|
byte offset (<literal>pageno * LOBLKSIZE</literal>) within the object. The implementation
|
|
allows sparse storage: pages might be missing, and might be shorter than
|
|
<literal>LOBLKSIZE</literal> bytes even if they are not the last page of the object.
|
|
Missing regions within a large object read as zeroes.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-largeobject-metadata">
|
|
<title><structname>pg_largeobject_metadata</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-largeobject-metadata">
|
|
<primary>pg_largeobject_metadata</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_largeobject_metadata</structname>
|
|
holds metadata associated with large objects. The actual large object
|
|
data is stored in
|
|
<link linkend="catalog-pg-largeobject"><structname>pg_largeobject</structname></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_largeobject_metadata</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lomowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the large object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>lomacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-namespace">
|
|
<title><structname>pg_namespace</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-namespace">
|
|
<primary>pg_namespace</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_namespace</structname> 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><structname>pg_namespace</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>nspname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the namespace
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>nspowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the namespace
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>nspacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-opclass">
|
|
<title><structname>pg_opclass</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-opclass">
|
|
<primary>pg_opclass</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_opclass</structname> defines
|
|
index access method operator classes. Each operator class defines
|
|
semantics for index columns of a particular data type and a particular
|
|
index access method. An operator class essentially specifies that a
|
|
particular operator family is applicable to a particular indexable column
|
|
data type. The set of operators from the family that are actually usable
|
|
with the indexed column are whichever ones accept the column's data type
|
|
as their left-hand input.
|
|
</para>
|
|
|
|
<para>
|
|
Operator classes are described at length in <xref linkend="xindex"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_opclass</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcmethod</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-am"><structname>pg_am</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Index access method operator class is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of this operator class
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Namespace of this operator class
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the operator class
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcfamily</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Operator family containing the operator class
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcintype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type that the operator class indexes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opcdefault</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this operator class is the default for <structfield>opcintype</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opckeytype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type of data stored in index, or zero if same as <structfield>opcintype</structfield>
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
An operator class's <structfield>opcmethod</structfield> must match the
|
|
<structfield>opfmethod</structfield> of its containing operator family.
|
|
Also, there must be no more than one <structname>pg_opclass</structname>
|
|
row having <structfield>opcdefault</structfield> true for any given combination of
|
|
<structfield>opcmethod</structfield> and <structfield>opcintype</structfield>.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-operator">
|
|
<title><structname>pg_operator</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-operator">
|
|
<primary>pg_operator</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_operator</structname> stores information about operators.
|
|
See <xref linkend="sql-createoperator"/>
|
|
and <xref linkend="xoper"/> for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_operator</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the operator
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprkind</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>b</literal> = infix operator (<quote>both</quote>),
|
|
or <literal>l</literal> = prefix operator (<quote>left</quote>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprcanmerge</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This operator supports merge joins
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprcanhash</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
This operator supports hash joins
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprleft</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type of the left operand (zero for a prefix operator)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprright</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type of the right operand
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprresult</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type of the result
|
|
(zero for a not-yet-defined <quote>shell</quote> operator)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprcom</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Commutator of this operator (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprnegate</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Negator of this operator (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprcode</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Function that implements this operator
|
|
(zero for a not-yet-defined <quote>shell</quote> operator)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprrest</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Restriction selectivity estimation function for this operator
|
|
(zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oprjoin</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Join selectivity estimation function for this operator
|
|
(zero if none)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-opfamily">
|
|
<title><structname>pg_opfamily</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-opfamily">
|
|
<primary>pg_opfamily</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_opfamily</structname> defines operator families.
|
|
Each operator family is a collection of operators and associated
|
|
support routines that implement the semantics specified for a particular
|
|
index access method. Furthermore, the operators in a family are all
|
|
<quote>compatible</quote>, in a way that is specified by the access method.
|
|
The operator family concept allows cross-data-type operators to be used
|
|
with indexes and to be reasoned about using knowledge of access method
|
|
semantics.
|
|
</para>
|
|
|
|
<para>
|
|
Operator families are described at length in <xref linkend="xindex"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_opfamily</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opfmethod</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-am"><structname>pg_am</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Index access method operator family is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opfname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of this operator family
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opfnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Namespace of this operator family
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>opfowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the operator family
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The majority of the information defining an operator family is not in its
|
|
<structname>pg_opfamily</structname> row, but in the associated rows in
|
|
<link linkend="catalog-pg-amop"><structname>pg_amop</structname></link>,
|
|
<link linkend="catalog-pg-amproc"><structname>pg_amproc</structname></link>,
|
|
and
|
|
<link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-partitioned-table">
|
|
<title><structname>pg_partitioned_table</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-partitioned-table">
|
|
<primary>pg_partitioned_table</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_partitioned_table</structname> stores
|
|
information about how tables are partitioned.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_partitioned_table</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for this partitioned table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partstrat</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Partitioning strategy; <literal>h</literal> = hash partitioned table,
|
|
<literal>l</literal> = list partitioned table, <literal>r</literal> = range partitioned table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partnatts</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
The number of columns in the partition key
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partdefid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for the default partition
|
|
of this partitioned table, or zero if this partitioned table does not
|
|
have a default partition
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partattrs</structfield> <type>int2vector</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
This is an array of <structfield>partnatts</structfield> values that
|
|
indicate which table columns are part of the partition key. For
|
|
example, a value of <literal>1 3</literal> would mean that the first
|
|
and the third table columns make up the partition key. A zero in this
|
|
array indicates that the corresponding partition key column is an
|
|
expression, rather than a simple column reference.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partclass</structfield> <type>oidvector</type>
|
|
(references <link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For each column in the partition key, this contains the OID of the
|
|
operator class to use. See
|
|
<link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link> for details.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partcollation</structfield> <type>oidvector</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
For each column in the partition key, this contains the OID of the
|
|
collation to use for partitioning, or zero if the column is not
|
|
of a collatable data type.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>partexprs</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression trees (in <function>nodeToString()</function>
|
|
representation) for partition key columns that are not simple column
|
|
references. This is a list with one element for each zero
|
|
entry in <structfield>partattrs</structfield>. Null if all partition key columns
|
|
are simple references.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-policy">
|
|
<title><structname>pg_policy</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-policy">
|
|
<primary>pg_policy</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_policy</structname> stores row-level
|
|
security policies for tables. A policy includes the kind of
|
|
command that it applies to (possibly all commands), the roles that it
|
|
applies to, the expression to be added as a security-barrier
|
|
qualification to queries that include the table, and the expression
|
|
to be added as a <literal>WITH CHECK</literal> option for queries that attempt to
|
|
add new records to the table.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_policy</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
The name of the policy
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table to which the policy applies
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polcmd</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
The command type to which the policy is applied:
|
|
<literal>r</literal> for <xref linkend="sql-select"/>,
|
|
<literal>a</literal> for <xref linkend="sql-insert"/>,
|
|
<literal>w</literal> for <xref linkend="sql-update"/>,
|
|
<literal>d</literal> for <xref linkend="sql-delete"/>,
|
|
or <literal>*</literal> for all
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polpermissive</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Is the policy permissive or restrictive?
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polroles</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The roles to which the policy is applied;
|
|
zero means <literal>PUBLIC</literal>
|
|
(and normally appears alone in the array)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polqual</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
The expression tree to be added to the security barrier qualifications for queries that use the table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>polwithcheck</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
The expression tree to be added to the WITH CHECK qualifications for queries that attempt to add rows to the table
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<note>
|
|
<para>
|
|
Policies stored in <structname>pg_policy</structname> are applied only when
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relrowsecurity</structfield> is set for
|
|
their table.
|
|
</para>
|
|
</note>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-proc">
|
|
<title><structname>pg_proc</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-proc">
|
|
<primary>pg_proc</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_proc</structname> stores information about
|
|
functions, procedures, aggregate functions, and window functions
|
|
(collectively also known as routines). See <xref
|
|
linkend="sql-createfunction"/>, <xref linkend="sql-createprocedure"/>, and
|
|
<xref linkend="xfunc"/> for more information.
|
|
</para>
|
|
|
|
<para>
|
|
If <structfield>prokind</structfield> indicates that the entry is for an
|
|
aggregate function, there should be a matching row in
|
|
<link linkend="catalog-pg-aggregate"><structfield>pg_aggregate</structfield></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_proc</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pronamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prolang</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-language"><structname>pg_language</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Implementation language or call interface of this function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>procost</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Estimated execution cost (in units of
|
|
<xref linkend="guc-cpu-operator-cost"/>); if <structfield>proretset</structfield>,
|
|
this is cost per row returned
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prorows</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Estimated number of result rows (zero if not <structfield>proretset</structfield>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>provariadic</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the variadic array parameter's elements,
|
|
or zero if the function does not have a variadic parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prosupport</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Planner support function for this function
|
|
(see <xref linkend="xfunc-optimization"/>), or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prokind</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<literal>f</literal> for a normal function, <literal>p</literal>
|
|
for a procedure, <literal>a</literal> for an aggregate function, or
|
|
<literal>w</literal> for a window function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prosecdef</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Function is a security definer (i.e., a <quote>setuid</quote>
|
|
function)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proleakproof</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
The function has no side effects. No information about the
|
|
arguments is conveyed except via the return value. Any function
|
|
that might throw an error depending on the values of its arguments
|
|
is not leak-proof.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proisstrict</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Function returns null if any call argument is null. In that
|
|
case the function won't actually be called at all. Functions
|
|
that are not <quote>strict</quote> must be prepared to handle
|
|
null inputs.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proretset</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Function returns a set (i.e., multiple values of the specified
|
|
data type)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>provolatile</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>provolatile</structfield> tells whether the function's
|
|
result depends only on its input arguments, or is affected by outside
|
|
factors.
|
|
It is <literal>i</literal> for <quote>immutable</quote> functions,
|
|
which always deliver the same result for the same inputs.
|
|
It is <literal>s</literal> for <quote>stable</quote> functions,
|
|
whose results (for fixed inputs) do not change within a scan.
|
|
It is <literal>v</literal> for <quote>volatile</quote> functions,
|
|
whose results might change at any time. (Use <literal>v</literal> also
|
|
for functions with side-effects, so that calls to them cannot get
|
|
optimized away.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proparallel</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>proparallel</structfield> tells whether the function
|
|
can be safely run in parallel mode.
|
|
It is <literal>s</literal> for functions which are safe to run in
|
|
parallel mode without restriction.
|
|
It is <literal>r</literal> for functions which can be run in parallel
|
|
mode, but their execution is restricted to the parallel group leader;
|
|
parallel worker processes cannot invoke these functions.
|
|
It is <literal>u</literal> for functions which are unsafe in parallel
|
|
mode; the presence of such a function forces a serial execution plan.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pronargs</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of input arguments
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pronargdefaults</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of arguments that have defaults
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prorettype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the return value
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proargtypes</structfield> <type>oidvector</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
An array of the data types of the function arguments. This includes
|
|
only input arguments (including <literal>INOUT</literal> and
|
|
<literal>VARIADIC</literal> arguments), as well as
|
|
<literal>OUT</literal> parameters of procedures, and thus represents
|
|
the call signature of the function or procedure.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proallargtypes</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
An array of the data types of the function arguments. This includes
|
|
all arguments (including <literal>OUT</literal> and
|
|
<literal>INOUT</literal> arguments); however, if all the
|
|
arguments are <literal>IN</literal> arguments, this field will be null.
|
|
Note that subscripting is 1-based, whereas for historical reasons
|
|
<structfield>proargtypes</structfield> is subscripted from 0.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proargmodes</structfield> <type>char[]</type>
|
|
</para>
|
|
<para>
|
|
An array of the modes of the function arguments, encoded as
|
|
<literal>i</literal> for <literal>IN</literal> arguments,
|
|
<literal>o</literal> for <literal>OUT</literal> arguments,
|
|
<literal>b</literal> for <literal>INOUT</literal> arguments,
|
|
<literal>v</literal> for <literal>VARIADIC</literal> arguments,
|
|
<literal>t</literal> for <literal>TABLE</literal> arguments.
|
|
If all the arguments are <literal>IN</literal> arguments,
|
|
this field will be null.
|
|
Note that subscripts correspond to positions of
|
|
<structfield>proallargtypes</structfield> not <structfield>proargtypes</structfield>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proargnames</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
An array of the names of the function arguments.
|
|
Arguments without a name are set to empty strings in the array.
|
|
If none of the arguments have a name, this field will be null.
|
|
Note that subscripts correspond to positions of
|
|
<structfield>proallargtypes</structfield> not <structfield>proargtypes</structfield>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proargdefaults</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression trees (in <function>nodeToString()</function> representation)
|
|
for default values. This is a list with
|
|
<structfield>pronargdefaults</structfield> elements, corresponding to the last
|
|
<replaceable>N</replaceable> <emphasis>input</emphasis> arguments (i.e., the last
|
|
<replaceable>N</replaceable> <structfield>proargtypes</structfield> positions).
|
|
If none of the arguments have defaults, this field will be null.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>protrftypes</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
An array of the argument/result data type(s) for which to apply
|
|
transforms (from the function's <literal>TRANSFORM</literal>
|
|
clause). Null if none.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prosrc</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
This tells the function handler how to invoke the function. It
|
|
might be the actual source code of the function for interpreted
|
|
languages, a link symbol, a file name, or just about anything
|
|
else, depending on the implementation language/call convention.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>probin</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Additional information about how to invoke the function.
|
|
Again, the interpretation is language-specific.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prosqlbody</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Pre-parsed SQL function body. This is used for SQL-language
|
|
functions when the body is given in SQL-standard notation
|
|
rather than as a string literal. It's null in other cases.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proconfig</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Function's local settings for run-time configuration variables
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>proacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
For compiled functions, both built-in and dynamically loaded,
|
|
<structfield>prosrc</structfield> contains the function's C-language
|
|
name (link symbol).
|
|
For SQL-language functions, <structfield>prosrc</structfield> contains
|
|
the function's source text if that is specified as a string literal;
|
|
but if the function body is specified in SQL-standard style,
|
|
<structfield>prosrc</structfield> is unused (typically it's an empty
|
|
string) and <structfield>prosqlbody</structfield> contains the
|
|
pre-parsed definition.
|
|
For all other currently-known language types,
|
|
<structfield>prosrc</structfield> contains the function's source
|
|
text. <structfield>probin</structfield> is null 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-publication">
|
|
<title><structname>pg_publication</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-publication">
|
|
<primary>pg_publication</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_publication</structname> contains all
|
|
publications created in the database. For more on publications see
|
|
<xref linkend="logical-replication-publication"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_publication</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the publication
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the publication
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>puballtables</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, this publication automatically includes all tables
|
|
in the database, including any that will be created in the future.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubinsert</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, <xref linkend="sql-insert"/> operations are replicated for
|
|
tables in the publication.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubupdate</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, <xref linkend="sql-update"/> operations are replicated for
|
|
tables in the publication.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubdelete</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, <xref linkend="sql-delete"/> operations are replicated for
|
|
tables in the publication.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubtruncate</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, <xref linkend="sql-truncate"/> operations are replicated for
|
|
tables in the publication.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubviaroot</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, operations on a leaf partition are replicated using the
|
|
identity and schema of its topmost partitioned ancestor mentioned in the
|
|
publication instead of its own.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-publication-rel">
|
|
<title><structname>pg_publication_rel</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-publication-rel">
|
|
<primary>pg_publication_rel</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_publication_rel</structname> contains the
|
|
mapping between relations and publications in the database. This is a
|
|
many-to-many mapping. See also <xref linkend="view-pg-publication-tables"/>
|
|
for a more user-friendly view of this information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_publication_rel</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prpubid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-publication"><structname>pg_publication</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Reference to publication
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Reference to relation
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-range">
|
|
<title><structname>pg_range</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-range">
|
|
<primary>pg_range</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_range</structname> stores information about
|
|
range types. This is in addition to the types' entries in
|
|
<link linkend="catalog-pg-type"><structname>pg_type</structname></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_range</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngtypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the range type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngsubtype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the element type (subtype) of this range type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngmultitypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the multirange type for this range type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngcollation</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the collation used for range comparisons, or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngsubopc</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-opclass"><structname>pg_opclass</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the subtype's operator class used for range comparisons
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngcanonical</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the function to convert a range value into canonical form,
|
|
or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rngsubdiff</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the function to return the difference between two element
|
|
values as <type>double precision</type>, or zero if none
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
<structfield>rngsubopc</structfield> (plus <structfield>rngcollation</structfield>, if the
|
|
element type is collatable) determines the sort ordering used by the range
|
|
type. <structfield>rngcanonical</structfield> is used when the element type is
|
|
discrete. <structfield>rngsubdiff</structfield> is optional but should be supplied to
|
|
improve performance of GiST indexes on the range type.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-replication-origin">
|
|
<title><structname>pg_replication_origin</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-replication-origin">
|
|
<primary>pg_replication_origin</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_replication_origin</structname> catalog contains
|
|
all replication origins created. For more on replication origins
|
|
see <xref linkend="replication-origins"/>.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_replication_origin</structname>
|
|
is shared across all databases of a cluster: there is only one copy
|
|
of <structname>pg_replication_origin</structname> per cluster, not one per
|
|
database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_replication_origin</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>roident</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
A unique, cluster-wide identifier for the replication
|
|
origin. Should never leave the system.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>roname</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The external, user defined, name of a replication
|
|
origin.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-rewrite">
|
|
<title><structname>pg_rewrite</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-rewrite">
|
|
<primary>pg_rewrite</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_rewrite</structname> stores rewrite rules for tables and views.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_rewrite</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rulename</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Rule name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ev_class</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table this rule is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ev_type</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Event type that the rule is for: 1 = <xref linkend="sql-select"/>, 2 =
|
|
<xref linkend="sql-update"/>, 3 = <xref linkend="sql-insert"/>, 4 =
|
|
<xref linkend="sql-delete"/>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ev_enabled</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Controls in which <xref linkend="guc-session-replication-role"/> modes
|
|
the rule fires.
|
|
<literal>O</literal> = rule fires in <quote>origin</quote> and <quote>local</quote> modes,
|
|
<literal>D</literal> = rule is disabled,
|
|
<literal>R</literal> = rule fires in <quote>replica</quote> mode,
|
|
<literal>A</literal> = rule fires always.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_instead</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if the rule is an <literal>INSTEAD</literal> rule
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ev_qual</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression tree (in the form of a
|
|
<function>nodeToString()</function> representation) for the
|
|
rule's qualifying condition
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ev_action</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Query tree (in the form of a
|
|
<function>nodeToString()</function> representation) for the
|
|
rule's action
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<note>
|
|
<para>
|
|
<literal>pg_class.relhasrules</literal>
|
|
must be true if a table has any rules in this catalog.
|
|
</para>
|
|
</note>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-seclabel">
|
|
<title><structname>pg_seclabel</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-seclabel">
|
|
<primary>pg_seclabel</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_seclabel</structname> stores security
|
|
labels on database objects. Security labels can be manipulated
|
|
with the <link linkend="sql-security-label"><command>SECURITY LABEL</command></link> command. For an easier
|
|
way to view security labels, see <xref linkend="view-pg-seclabels"/>.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</structname></link>,
|
|
which performs a similar function for security labels of database objects
|
|
that are shared across a database cluster.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_seclabel</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the object this security label pertains to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog this object appears in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a security label on a table column, this is the column number (the
|
|
<structfield>objoid</structfield> and <structfield>classoid</structfield> refer to
|
|
the table itself). For all other object types, this column is
|
|
zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>provider</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The label provider associated with this label.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>label</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The security label applied to this object.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-sequence">
|
|
<title><structname>pg_sequence</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-sequence">
|
|
<primary>pg_sequence</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_sequence</structname> contains information about
|
|
sequences. Some of the information about sequences, such as the name and
|
|
the schema, is in
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link>
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_sequence</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry for this sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqtypid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqstart</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Start value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqincrement</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Increment value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqmax</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Maximum value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqmin</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Minimum value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqcache</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Cache size of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqcycle</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Whether the sequence cycles
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-shdepend">
|
|
<title><structname>pg_shdepend</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-shdepend">
|
|
<primary>pg_shdepend</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_shdepend</structname> records the
|
|
dependency relationships between database objects and shared objects,
|
|
such as roles. This information allows
|
|
<productname>PostgreSQL</productname> to ensure that those objects are
|
|
unreferenced before attempting to delete them.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-depend"><structname>pg_depend</structname></link>,
|
|
which performs a similar function for dependencies involving objects
|
|
within a single database.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_shdepend</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_shdepend</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_shdepend</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dbid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the database the dependent object is in,
|
|
or zero for a shared object
|
|
or a <symbol>SHARED_DEPENDENCY_PIN</symbol> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog the dependent object is in,
|
|
or zero for a <symbol>SHARED_DEPENDENCY_PIN</symbol> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the specific dependent object,
|
|
or zero for a <symbol>SHARED_DEPENDENCY_PIN</symbol> entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a table column, this is the column number (the
|
|
<structfield>objid</structfield> and <structfield>classid</structfield> refer to the
|
|
table itself). For all other object types, this column is zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>refclassid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog the referenced object is in
|
|
(must be a shared catalog)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>refobjid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the specific referenced object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>deptype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
A code defining the specific semantics of this dependency relationship; see text
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
In all cases, a <structname>pg_shdepend</structname> entry indicates that
|
|
the referenced object cannot be dropped without also dropping the dependent
|
|
object. However, there are several subflavors identified by
|
|
<structfield>deptype</structfield>:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><symbol>SHARED_DEPENDENCY_OWNER</symbol> (<literal>o</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The referenced object (which must be a role) is the owner of the
|
|
dependent object.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>SHARED_DEPENDENCY_ACL</symbol> (<literal>a</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The referenced object (which must be a role) is mentioned in the
|
|
ACL (access control list, i.e., privileges list) of the
|
|
dependent object. (A <symbol>SHARED_DEPENDENCY_ACL</symbol> entry is
|
|
not made for the owner of the object, since the owner will have
|
|
a <symbol>SHARED_DEPENDENCY_OWNER</symbol> entry anyway.)
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>SHARED_DEPENDENCY_POLICY</symbol> (<literal>r</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The referenced object (which must be a role) is mentioned as the
|
|
target of a dependent policy object.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>SHARED_DEPENDENCY_PIN</symbol> (<literal>p</literal>)</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 <application>initdb</application>. The columns for the
|
|
dependent object contain zeroes.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><symbol>SHARED_DEPENDENCY_TABLESPACE</symbol> (<literal>t</literal>)</term>
|
|
<listitem>
|
|
<para>
|
|
The referenced object (which must be a tablespace) is mentioned as
|
|
the tablespace for a relation that doesn't have storage.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
Other dependency flavors might be needed in future. Note in particular
|
|
that the current definition only supports roles and tablespaces as referenced
|
|
objects.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-shdescription">
|
|
<title><structname>pg_shdescription</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-shdescription">
|
|
<primary>pg_shdescription</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_shdescription</structname> stores optional
|
|
descriptions (comments) for shared database objects. Descriptions can be
|
|
manipulated with the <link linkend="sql-comment"><command>COMMENT</command></link> command and viewed with
|
|
<application>psql</application>'s <literal>\d</literal> commands.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-description"><structname>pg_description</structname></link>,
|
|
which performs a similar function for descriptions involving objects
|
|
within a single database.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_shdescription</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_shdescription</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_shdescription</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the object this description pertains to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog this object appears in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>description</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Arbitrary text that serves as the description of this object
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-shseclabel">
|
|
<title><structname>pg_shseclabel</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-shseclabel">
|
|
<primary>pg_shseclabel</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_shseclabel</structname> stores security
|
|
labels on shared database objects. Security labels can be manipulated
|
|
with the <link linkend="sql-security-label"><command>SECURITY LABEL</command></link> command. For an easier
|
|
way to view security labels, see <xref linkend="view-pg-seclabels"/>.
|
|
</para>
|
|
|
|
<para>
|
|
See also <link linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link>,
|
|
which performs a similar function for security labels involving objects
|
|
within a single database.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_shseclabel</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_shseclabel</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_shseclabel</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the object this security label pertains to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog this object appears in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>provider</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The label provider associated with this label.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>label</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The security label applied to this object.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-statistic">
|
|
<title><structname>pg_statistic</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-statistic">
|
|
<primary>pg_statistic</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_statistic</structname> stores
|
|
statistical data about the contents of the database. Entries are
|
|
created by <link linkend="sql-analyze"><command>ANALYZE</command></link>
|
|
and subsequently used by the query planner. Note that all the
|
|
statistical data is inherently approximate, even assuming that it
|
|
is up-to-date.
|
|
</para>
|
|
|
|
<para>
|
|
Normally there is one entry, with <structfield>stainherit</structfield> =
|
|
<literal>false</literal>, for each table column that has been analyzed.
|
|
If the table has inheritance children, a second entry with
|
|
<structfield>stainherit</structfield> = <literal>true</literal> is also created. This row
|
|
represents the column's statistics over the inheritance tree, i.e.,
|
|
statistics for the data you'd see with
|
|
<literal>SELECT <replaceable>column</replaceable> FROM <replaceable>table</replaceable>*</literal>,
|
|
whereas the <structfield>stainherit</structfield> = <literal>false</literal> row represents
|
|
the results of
|
|
<literal>SELECT <replaceable>column</replaceable> FROM ONLY <replaceable>table</replaceable></literal>.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_statistic</structname> also stores statistical data about
|
|
the values of index expressions. These are described as if they were
|
|
actual data columns; in particular, <structfield>starelid</structfield>
|
|
references the index. No entry is made for an ordinary non-expression
|
|
index column, however, since it would be redundant with the entry
|
|
for the underlying table column. Currently, entries for index expressions
|
|
always have <structfield>stainherit</structfield> = <literal>false</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
Since different kinds of statistics might 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 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.
|
|
For more information see
|
|
<filename>src/include/catalog/pg_statistic.h</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_statistic</structname> should not be readable by the
|
|
public, since even statistical information about a table's contents
|
|
might be considered sensitive. (Example: minimum and maximum values
|
|
of a salary column might be quite interesting.)
|
|
<link linkend="view-pg-stats"><structname>pg_stats</structname></link>
|
|
is a publicly readable view on
|
|
<structname>pg_statistic</structname> that only exposes information
|
|
about those tables that are readable by the current user.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_statistic</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>starelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table or index that the described column belongs to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>staattnum</structfield> <type>int2</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
The number of the described column
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stainherit</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the stats include inheritance child columns, not just the
|
|
values in the specified relation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stanullfrac</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
The fraction of the column's entries that are null
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stawidth</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
The average stored width, in bytes, of nonnull entries
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stadistinct</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
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 multiplier for the number
|
|
of rows in the table; for example, a column in which about 80% of the
|
|
values are nonnull and each nonnull value appears about twice on
|
|
average could be represented by <structfield>stadistinct</structfield> = -0.4.
|
|
A zero value means the number of distinct values is unknown.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stakind<replaceable>N</replaceable></structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
A code number indicating the kind of statistics stored in the
|
|
<replaceable>N</replaceable>th <quote>slot</quote> of the
|
|
<structname>pg_statistic</structname> row.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>staop<replaceable>N</replaceable></structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
An operator used to derive the statistics stored in the
|
|
<replaceable>N</replaceable>th <quote>slot</quote>. For example, a
|
|
histogram slot would show the <literal><</literal> operator
|
|
that defines the sort order of the data.
|
|
Zero if the statistics kind does not require an operator.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stacoll<replaceable>N</replaceable></structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The collation used to derive the statistics stored in the
|
|
<replaceable>N</replaceable>th <quote>slot</quote>. For example, a
|
|
histogram slot for a collatable column would show the collation that
|
|
defines the sort order of the data. Zero for noncollatable data.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stanumbers<replaceable>N</replaceable></structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
Numerical statistics of the appropriate kind for the
|
|
<replaceable>N</replaceable>th <quote>slot</quote>, or null if the slot
|
|
kind does not involve numerical values
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stavalues<replaceable>N</replaceable></structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
Column data values of the appropriate kind for the
|
|
<replaceable>N</replaceable>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, or a related
|
|
type such as an array's element type, so there is no way to define
|
|
these columns' type more specifically than <type>anyarray</type>.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-statistic-ext">
|
|
<title><structname>pg_statistic_ext</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-statistic-ext">
|
|
<primary>pg_statistic_ext</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_statistic_ext</structname>
|
|
holds definitions of extended planner statistics.
|
|
Each row in this catalog corresponds to a <firstterm>statistics object</firstterm>
|
|
created with <link linkend="sql-createstatistics"><command>CREATE STATISTICS</command></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_statistic_ext</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Table containing the columns described by this object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxstattarget</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
<structfield>stxstattarget</structfield> controls the level of detail
|
|
of statistics accumulated for this statistics object by
|
|
<link linkend="sql-analyze"><command>ANALYZE</command></link>.
|
|
A zero value indicates that no statistics should be collected.
|
|
A negative value says to use the maximum of the statistics targets of
|
|
the referenced columns, if set, or the system default statistics target.
|
|
Positive values of <structfield>stxstattarget</structfield>
|
|
determine the target number of <quote>most common values</quote>
|
|
to collect.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxkeys</structfield> <type>int2vector</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
An array of attribute numbers, indicating which table columns are
|
|
covered by this statistics object;
|
|
for example a value of <literal>1 3</literal> would
|
|
mean that the first and the third table columns are covered
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxkind</structfield> <type>char[]</type>
|
|
</para>
|
|
<para>
|
|
An array containing codes for the enabled statistics kinds;
|
|
valid values are:
|
|
<literal>d</literal> for n-distinct statistics,
|
|
<literal>f</literal> for functional dependency statistics, and
|
|
<literal>m</literal> for most common values (MCV) list statistics
|
|
<literal>e</literal> for expression statistics
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxexprs</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression trees (in <function>nodeToString()</function>
|
|
representation) for statistics object attributes that are not simple
|
|
column references. This is a list with one element per expression.
|
|
Null if all statistics object attributes are simple references.
|
|
</para></entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_statistic_ext</structname> entry is filled in
|
|
completely during <link linkend="sql-createstatistics"><command>CREATE STATISTICS</command></link>, but the actual
|
|
statistical values are not computed then.
|
|
Subsequent <link linkend="sql-analyze"><command>ANALYZE</command></link> commands compute the desired values
|
|
and populate an entry in the
|
|
<link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>
|
|
catalog.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-statistic-ext-data">
|
|
<title><structname>pg_statistic_ext_data</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-statistic-ext">
|
|
<primary>pg_statistic_ext_data</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_statistic_ext_data</structname>
|
|
holds data for extended planner statistics defined in
|
|
<link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.
|
|
Each row in this catalog corresponds to a <firstterm>statistics object</firstterm>
|
|
created with <link linkend="sql-createstatistics"><command>CREATE STATISTICS</command></link>.
|
|
</para>
|
|
|
|
<para>
|
|
Like <link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link>,
|
|
<structname>pg_statistic_ext_data</structname> should not be
|
|
readable by the public, since the contents might be considered sensitive.
|
|
(Example: most common combinations of values in columns might be quite
|
|
interesting.)
|
|
<link linkend="view-pg-stats-ext"><structname>pg_stats_ext</structname></link>
|
|
is a publicly readable view
|
|
on <structname>pg_statistic_ext_data</structname> (after joining
|
|
with <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>) that only exposes
|
|
information about those tables and columns that are readable by the
|
|
current user.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_statistic_ext_data</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Extended statistics object containing the definition for this data
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxdndistinct</structfield> <type>pg_ndistinct</type>
|
|
</para>
|
|
<para>
|
|
N-distinct counts, serialized as <structname>pg_ndistinct</structname> type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxddependencies</structfield> <type>pg_dependencies</type>
|
|
</para>
|
|
<para>
|
|
Functional dependency statistics, serialized
|
|
as <structname>pg_dependencies</structname> type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxdmcv</structfield> <type>pg_mcv_list</type>
|
|
</para>
|
|
<para>
|
|
MCV (most-common values) list statistics, serialized as
|
|
<structname>pg_mcv_list</structname> type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>stxdexpr</structfield> <type>pg_statistic[]</type>
|
|
</para>
|
|
<para>
|
|
Per-expression statistics, serialized as an array of
|
|
<structname>pg_statistic</structname> type
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-subscription">
|
|
<title><structname>pg_subscription</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-subscription">
|
|
<primary>pg_subscription</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_subscription</structname> contains all existing
|
|
logical replication subscriptions. For more information about logical
|
|
replication see <xref linkend="logical-replication"/>.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_subscription</structname> is
|
|
shared across all databases of a cluster: there is only one copy
|
|
of <structname>pg_subscription</structname> per cluster, not one per
|
|
database.
|
|
</para>
|
|
|
|
<para>
|
|
Access to the column <structfield>subconninfo</structfield> is revoked from
|
|
normal users, because it could contain plain-text passwords.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_subscription</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subdbid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the database that the subscription resides in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the subscription
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the subscription
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subenabled</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the subscription is enabled and should be replicating
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subbinary</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the subscription will request that the publisher send data
|
|
in binary format
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>substream</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, the subscription will allow streaming of in-progress
|
|
transactions
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subconninfo</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Connection string to the upstream database
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subslotname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the replication slot in the upstream database (also used
|
|
for the local replication origin name);
|
|
null represents <literal>NONE</literal>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subsynccommit</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The <varname>synchronous_commit</varname>
|
|
setting for the subscription's workers to use
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>subpublications</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Array of subscribed publication names. These reference
|
|
publications defined in the upstream database. For more on publications
|
|
see <xref linkend="logical-replication-publication"/>.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-subscription-rel">
|
|
<title><structname>pg_subscription_rel</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-subscription-rel">
|
|
<primary>pg_subscription_rel</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_subscription_rel</structname> contains the
|
|
state for each replicated relation in each subscription. This is a
|
|
many-to-many mapping.
|
|
</para>
|
|
|
|
<para>
|
|
This catalog only contains tables known to the subscription after running
|
|
either <link linkend="sql-createsubscription"><command>CREATE SUBSCRIPTION</command></link> or
|
|
<link linkend="sql-altersubscription"><command>ALTER SUBSCRIPTION ... REFRESH
|
|
PUBLICATION</command></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_subscription_rel</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srsubid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-subscription"><structname>pg_subscription</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Reference to subscription
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Reference to relation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srsubstate</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
State code:
|
|
<literal>i</literal> = initialize,
|
|
<literal>d</literal> = data is being copied,
|
|
<literal>f</literal> = finished table copy,
|
|
<literal>s</literal> = synchronized,
|
|
<literal>r</literal> = ready (normal replication)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srsublsn</structfield> <type>pg_lsn</type>
|
|
</para>
|
|
<para>
|
|
Remote LSN of the state change used for synchronization coordination
|
|
when in <literal>s</literal> or <literal>r</literal> states,
|
|
otherwise null
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="catalog-pg-tablespace">
|
|
<title><structname>pg_tablespace</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-tablespace">
|
|
<primary>pg_tablespace</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_tablespace</structname> stores information
|
|
about the available tablespaces. Tables can be placed in particular
|
|
tablespaces to aid administration of disk layout.
|
|
</para>
|
|
|
|
<para>
|
|
Unlike most system catalogs, <structname>pg_tablespace</structname>
|
|
is shared across all databases of a cluster: there is only one
|
|
copy of <structname>pg_tablespace</structname> per cluster, not
|
|
one per database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_tablespace</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>spcname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Tablespace name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>spcowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the tablespace, usually the user who created it
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>spcacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>spcoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Tablespace-level options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-transform">
|
|
<title><structname>pg_transform</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-transform">
|
|
<primary>pg_transform</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_transform</structname> stores information about
|
|
transforms, which are a mechanism to adapt data types to procedural
|
|
languages. See <xref linkend="sql-createtransform"/> for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_transform</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>trftype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the data type this transform is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>trflang</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-language"><structname>pg_language</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the language this transform is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>trffromsql</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the function to use when converting the data type for input
|
|
to the procedural language (e.g., function parameters). Zero is stored
|
|
if the default behavior should be used.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>trftosql</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the function to use when converting output from the
|
|
procedural language (e.g., return values) to the data type. Zero is
|
|
stored if the default behavior should be used.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-trigger">
|
|
<title><structname>pg_trigger</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-trigger">
|
|
<primary>pg_trigger</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_trigger</structname> stores triggers on tables
|
|
and views.
|
|
See <xref linkend="sql-createtrigger"/>
|
|
for more information.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_trigger</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table this trigger is on
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgparentid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-trigger"><structname>pg_trigger</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Parent trigger that this trigger is cloned from (this happens when
|
|
partitions are created or attached to a partitioned table);
|
|
zero if not a clone
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Trigger name (must be unique among triggers of same table)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgfoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The function to be called
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgtype</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Bit mask identifying trigger firing conditions
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgenabled</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Controls in which <xref linkend="guc-session-replication-role"/> modes
|
|
the trigger fires.
|
|
<literal>O</literal> = trigger fires in <quote>origin</quote> and <quote>local</quote> modes,
|
|
<literal>D</literal> = trigger is disabled,
|
|
<literal>R</literal> = trigger fires in <quote>replica</quote> mode,
|
|
<literal>A</literal> = trigger fires always.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgisinternal</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if trigger is internally generated (usually, to enforce
|
|
the constraint identified by <structfield>tgconstraint</structfield>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgconstrrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The table referenced by a referential integrity constraint
|
|
(zero if trigger is not for a referential integrity constraint)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgconstrindid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The index supporting a unique, primary key, referential integrity,
|
|
or exclusion constraint
|
|
(zero if trigger is not for one of these types of constraint)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgconstraint</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The <link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link> entry associated with the trigger
|
|
(zero if trigger is not for a constraint)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgdeferrable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if constraint trigger is deferrable
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tginitdeferred</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if constraint trigger is initially deferred
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgnargs</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Number of argument strings passed to trigger function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgattr</structfield> <type>int2vector</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
|
</para>
|
|
<para>
|
|
Column numbers, if trigger is column-specific; otherwise an
|
|
empty array
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgargs</structfield> <type>bytea</type>
|
|
</para>
|
|
<para>
|
|
Argument strings to pass to trigger, each NULL-terminated
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgqual</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
Expression tree (in <function>nodeToString()</function>
|
|
representation) for the trigger's <literal>WHEN</literal> condition, or null
|
|
if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgoldtable</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
<literal>REFERENCING</literal> clause name for <literal>OLD TABLE</literal>,
|
|
or null if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tgnewtable</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
<literal>REFERENCING</literal> clause name for <literal>NEW TABLE</literal>,
|
|
or null if none
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Currently, column-specific triggering is supported only for
|
|
<literal>UPDATE</literal> events, and so <structfield>tgattr</structfield> is relevant
|
|
only for that event type. <structfield>tgtype</structfield> might
|
|
contain bits for other event types as well, but those are presumed
|
|
to be table-wide regardless of what is in <structfield>tgattr</structfield>.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
When <structfield>tgconstraint</structfield> is nonzero,
|
|
<structfield>tgconstrrelid</structfield>, <structfield>tgconstrindid</structfield>,
|
|
<structfield>tgdeferrable</structfield>, and <structfield>tginitdeferred</structfield> are
|
|
largely redundant with the referenced <link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link> entry.
|
|
However, it is possible for a non-deferrable trigger to be associated
|
|
with a deferrable constraint: foreign key constraints can have some
|
|
deferrable and some non-deferrable triggers.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>
|
|
<literal>pg_class.relhastriggers</literal>
|
|
must be true if a relation has any triggers in this catalog.
|
|
</para>
|
|
</note>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-ts-config">
|
|
<title><structname>pg_ts_config</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-ts-config">
|
|
<primary>pg_ts_config</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_ts_config</structname> catalog contains entries
|
|
representing text search configurations. A configuration specifies
|
|
a particular text search parser and a list of dictionaries to use
|
|
for each of the parser's output token types. The parser is shown
|
|
in the <structname>pg_ts_config</structname> entry, but the
|
|
token-to-dictionary mapping is defined by subsidiary entries in <link
|
|
linkend="catalog-pg-ts-config-map"><structname>pg_ts_config_map</structname></link>.
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</productname>'s text search features are
|
|
described at length in <xref linkend="textsearch"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_ts_config</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cfgname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Text search configuration name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cfgnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this configuration
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cfgowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the configuration
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cfgparser</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-ts-parser"><structname>pg_ts_parser</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the text search parser for this configuration
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-ts-config-map">
|
|
<title><structname>pg_ts_config_map</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-ts-config-map">
|
|
<primary>pg_ts_config_map</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_ts_config_map</structname> catalog contains entries
|
|
showing which text search dictionaries should be consulted, and in
|
|
what order, for each output token type of each text search configuration's
|
|
parser.
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</productname>'s text search features are
|
|
described at length in <xref linkend="textsearch"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_ts_config_map</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>mapcfg</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-ts-config"><structname>pg_ts_config</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the <link linkend="catalog-pg-ts-config"><structname>pg_ts_config</structname></link> entry owning this map entry
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>maptokentype</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
A token type emitted by the configuration's parser
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>mapseqno</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Order in which to consult this entry (lower
|
|
<structfield>mapseqno</structfield>s first)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>mapdict</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-ts-dict"><structname>pg_ts_dict</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the text search dictionary to consult
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-ts-dict">
|
|
<title><structname>pg_ts_dict</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-ts-dict">
|
|
<primary>pg_ts_dict</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_ts_dict</structname> catalog contains entries
|
|
defining text search dictionaries. A dictionary depends on a text
|
|
search template, which specifies all the implementation functions
|
|
needed; the dictionary itself provides values for the user-settable
|
|
parameters supported by the template. This division of labor allows
|
|
dictionaries to be created by unprivileged users. The parameters
|
|
are specified by a text string <structfield>dictinitoption</structfield>,
|
|
whose format and meaning vary depending on the template.
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</productname>'s text search features are
|
|
described at length in <xref linkend="textsearch"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_ts_dict</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dictname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Text search dictionary name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dictnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this dictionary
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dictowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the dictionary
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dicttemplate</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-ts-template"><structname>pg_ts_template</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the text search template for this dictionary
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dictinitoption</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Initialization option string for the template
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-ts-parser">
|
|
<title><structname>pg_ts_parser</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-ts-parser">
|
|
<primary>pg_ts_parser</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_ts_parser</structname> catalog contains entries
|
|
defining text search parsers. A parser is responsible for splitting
|
|
input text into lexemes and assigning a token type to each lexeme.
|
|
Since a parser must be implemented by C-language-level functions,
|
|
creation of new parsers is restricted to database superusers.
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</productname>'s text search features are
|
|
described at length in <xref linkend="textsearch"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_ts_parser</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prsname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Text search parser name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prsnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this parser
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prsstart</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the parser's startup function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prstoken</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the parser's next-token function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prsend</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the parser's shutdown function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prsheadline</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the parser's headline function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prslextype</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the parser's lextype function
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-ts-template">
|
|
<title><structname>pg_ts_template</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-ts-template">
|
|
<primary>pg_ts_template</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_ts_template</structname> catalog contains entries
|
|
defining text search templates. A template is the implementation
|
|
skeleton for a class of text search dictionaries.
|
|
Since a template must be implemented by C-language-level functions,
|
|
creation of new templates is restricted to database superusers.
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</productname>'s text search features are
|
|
described at length in <xref linkend="textsearch"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_ts_template</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tmplname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Text search template name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tmplnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this template
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tmplinit</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the template's initialization function (zero if none)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tmpllexize</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the template's lexize function
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-type">
|
|
<title><structname>pg_type</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-type">
|
|
<primary>pg_type</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_type</structname> stores information about data
|
|
types. Base types and enum types (scalar types) are created with
|
|
<link linkend="sql-createtype"><command>CREATE TYPE</command></link>, and
|
|
domains with
|
|
<link linkend="sql-createdomain"><command>CREATE DOMAIN</command></link>.
|
|
A composite type is automatically created for each table in the database, to
|
|
represent the row structure of the table. It is also possible to create
|
|
composite types with <command>CREATE TYPE AS</command>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_type</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Data type name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace that contains this type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typowner</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the type
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typlen</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
For a fixed-size type, <structfield>typlen</structfield> is the number
|
|
of bytes in the internal representation of the type. But for a
|
|
variable-length type, <structfield>typlen</structfield> is negative.
|
|
-1 indicates a <quote>varlena</quote> type (one that has a length word),
|
|
-2 indicates a null-terminated C string.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typbyval</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typbyval</structfield> determines whether internal
|
|
routines pass a value of this type by value or by reference.
|
|
<structfield>typbyval</structfield> had better be false if
|
|
<structfield>typlen</structfield> is not 1, 2, or 4 (or 8 on machines
|
|
where Datum is 8 bytes).
|
|
Variable-length types are always passed by reference. Note that
|
|
<structfield>typbyval</structfield> can be false even if the
|
|
length would allow pass-by-value.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typtype</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typtype</structfield> is
|
|
<literal>b</literal> for a base type,
|
|
<literal>c</literal> for a composite type (e.g., a table's row type),
|
|
<literal>d</literal> for a domain,
|
|
<literal>e</literal> for an enum type,
|
|
<literal>p</literal> for a pseudo-type,
|
|
<literal>r</literal> for a range type, or
|
|
<literal>m</literal> for a multirange type.
|
|
See also <structfield>typrelid</structfield> and
|
|
<structfield>typbasetype</structfield>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typcategory</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typcategory</structfield> is an arbitrary classification
|
|
of data types that is used by the parser to determine which implicit
|
|
casts should be <quote>preferred</quote>.
|
|
See <xref linkend="catalog-typcategory-table"/>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typispreferred</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if the type is a preferred cast target within its
|
|
<structfield>typcategory</structfield>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typisdefined</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typdelim</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
Character that separates two values of this type when parsing
|
|
array input. Note that the delimiter is associated with the array
|
|
element data type, not the array data type.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typrelid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If this is a composite type (see
|
|
<structfield>typtype</structfield>), then this column points to
|
|
the <link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry that defines the
|
|
corresponding table. (For a free-standing composite type, the
|
|
<link linkend="catalog-pg-class"><structname>pg_class</structname></link> entry doesn't really represent
|
|
a table, but it is needed anyway for the type's
|
|
<link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link> entries to link to.)
|
|
Zero for non-composite types.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typsubscript</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Subscripting handler function's OID, or zero if this type doesn't
|
|
support subscripting. Types that are <quote>true</quote> array
|
|
types have <structfield>typsubscript</structfield>
|
|
= <function>array_subscript_handler</function>, but other types may
|
|
have other handler functions to implement specialized subscripting
|
|
behavior.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typelem</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If <structfield>typelem</structfield> is not zero then it
|
|
identifies another row in <structname>pg_type</structname>,
|
|
defining the type yielded by subscripting. This should be zero
|
|
if <structfield>typsubscript</structfield> is zero. However, it can
|
|
be zero when <structfield>typsubscript</structfield> isn't zero, if the
|
|
handler doesn't need <structfield>typelem</structfield> to
|
|
determine the subscripting result type.
|
|
Note that a <structfield>typelem</structfield> dependency is
|
|
considered to imply physical containment of the element type in
|
|
this type; so DDL changes on the element type might be restricted
|
|
by the presence of this type.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typarray</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If <structfield>typarray</structfield> is not zero then it
|
|
identifies another row in <structname>pg_type</structname>, which
|
|
is the <quote>true</quote> array type having this type as element
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typinput</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Input conversion function (text format)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typoutput</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Output conversion function (text format)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typreceive</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Input conversion function (binary format), or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typsend</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Output conversion function (binary format), or zero if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typmodin</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type modifier input function, or zero if type does not support modifiers
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typmodout</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Type modifier output function, or zero to use the standard format
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typanalyze</structfield> <type>regproc</type>
|
|
(references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Custom <xref linkend="sql-analyze"/> function,
|
|
or zero to use the standard function
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typalign</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typalign</structfield> is the alignment required
|
|
when storing a value of this type. It applies to storage on
|
|
disk as well as most representations of the value inside
|
|
<productname>PostgreSQL</productname>.
|
|
When multiple values are stored consecutively, such
|
|
as in the representation of a complete row on disk, padding is
|
|
inserted before a datum of this type so that it begins on the
|
|
specified boundary. The alignment reference is the beginning
|
|
of the first datum in the sequence.
|
|
Possible values are:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>c</literal> = <type>char</type> alignment, i.e., no alignment needed.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><literal>s</literal> = <type>short</type> alignment (2 bytes on most machines).</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><literal>i</literal> = <type>int</type> alignment (4 bytes on most machines).</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><literal>d</literal> = <type>double</type> alignment (8 bytes on many machines, but by no means all).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typstorage</structfield> <type>char</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typstorage</structfield> tells for varlena
|
|
types (those with <structfield>typlen</structfield> = -1) if
|
|
the type is prepared for toasting and what the default strategy
|
|
for attributes of this type should be.
|
|
Possible values are:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<literal>p</literal> (plain): Values must always be stored plain
|
|
(non-varlena types always use this value).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>e</literal> (external): Values can be stored in a
|
|
secondary <quote>TOAST</quote> relation (if relation has one, see
|
|
<literal>pg_class.reltoastrelid</literal>).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>m</literal> (main): Values can be compressed and stored
|
|
inline.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>x</literal> (extended): Values can be compressed and/or
|
|
moved to a secondary relation.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<literal>x</literal> is the usual choice for toast-able types.
|
|
Note that <literal>m</literal> values can also be moved out to
|
|
secondary storage, but only as a last resort (<literal>e</literal>
|
|
and <literal>x</literal> values are moved first).
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typnotnull</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typnotnull</structfield> represents a not-null
|
|
constraint on a type. Used for domains only.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typbasetype</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
If this is a domain (see <structfield>typtype</structfield>), then
|
|
<structfield>typbasetype</structfield> identifies the type that this
|
|
one is based on. Zero if this type is not a domain.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typtypmod</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Domains use <structfield>typtypmod</structfield> to record the <literal>typmod</literal>
|
|
to be applied to their base type (-1 if base type does not use a
|
|
<literal>typmod</literal>). -1 if this type is not a domain.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typndims</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typndims</structfield> is the number of array dimensions
|
|
for a domain over an array (that is, <structfield>typbasetype</structfield> is
|
|
an array type).
|
|
Zero for types other than domains over array types.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typcollation</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-collation"><structname>pg_collation</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
<structfield>typcollation</structfield> specifies the collation
|
|
of the type. If the type does not support collations, this will
|
|
be zero. A base type that supports collations will have a nonzero
|
|
value here, typically <symbol>DEFAULT_COLLATION_OID</symbol>.
|
|
A domain over a collatable type can have a collation OID different
|
|
from its base type's, if one was specified for the domain.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typdefaultbin</structfield> <type>pg_node_tree</type>
|
|
</para>
|
|
<para>
|
|
If <structfield>typdefaultbin</structfield> 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 role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typdefault</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
<structfield>typdefault</structfield> is null if the type has no associated
|
|
default value. If <structfield>typdefaultbin</structfield> is not null,
|
|
<structfield>typdefault</structfield> must contain a human-readable version of the
|
|
default expression represented by <structfield>typdefaultbin</structfield>. If
|
|
<structfield>typdefaultbin</structfield> is null and <structfield>typdefault</structfield> is
|
|
not, then <structfield>typdefault</structfield> is the external representation of
|
|
the type's default value, which can be fed to the type's input
|
|
converter to produce a constant.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>typacl</structfield> <type>aclitem[]</type>
|
|
</para>
|
|
<para>
|
|
Access privileges; see <xref linkend="ddl-priv"/> for details
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<note>
|
|
<para>
|
|
For fixed-width 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 column in
|
|
a structure representing a table row.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
<xref linkend="catalog-typcategory-table"/> lists the system-defined values
|
|
of <structfield>typcategory</structfield>. Any future additions to this list will
|
|
also be upper-case ASCII letters. All other ASCII characters are reserved
|
|
for user-defined categories.
|
|
</para>
|
|
|
|
<table id="catalog-typcategory-table">
|
|
<title><structfield>typcategory</structfield> Codes</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Code</entry>
|
|
<entry>Category</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>A</literal></entry>
|
|
<entry>Array types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>B</literal></entry>
|
|
<entry>Boolean types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>C</literal></entry>
|
|
<entry>Composite types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>D</literal></entry>
|
|
<entry>Date/time types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>E</literal></entry>
|
|
<entry>Enum types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>G</literal></entry>
|
|
<entry>Geometric types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>I</literal></entry>
|
|
<entry>Network address types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>N</literal></entry>
|
|
<entry>Numeric types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>P</literal></entry>
|
|
<entry>Pseudo-types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>R</literal></entry>
|
|
<entry>Range types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>S</literal></entry>
|
|
<entry>String types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>T</literal></entry>
|
|
<entry>Timespan types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>U</literal></entry>
|
|
<entry>User-defined types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>V</literal></entry>
|
|
<entry>Bit-string types</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>X</literal></entry>
|
|
<entry><type>unknown</type> type</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="catalog-pg-user-mapping">
|
|
<title><structname>pg_user_mapping</structname></title>
|
|
|
|
<indexterm zone="catalog-pg-user-mapping">
|
|
<primary>pg_user_mapping</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The catalog <structname>pg_user_mapping</structname> stores
|
|
the mappings from local user to remote. Access to this catalog is
|
|
restricted from normal users, use the view
|
|
<link linkend="view-pg-user-mappings"><structname>pg_user_mappings</structname></link>
|
|
instead.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_user_mapping</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
Row identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umuser</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the local role being mapped, or zero if the user mapping is public
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umserver</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-foreign-server"><structname>pg_foreign_server</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the foreign server that contains this mapping
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
User mapping specific options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="views-overview">
|
|
<title>System Views</title>
|
|
|
|
<para>
|
|
In addition to the system catalogs, <productname>PostgreSQL</productname>
|
|
provides a number of built-in views. Some system views provide convenient
|
|
access to some commonly used queries on the system catalogs. Other views
|
|
provide access to internal server state.
|
|
</para>
|
|
|
|
<para>
|
|
The information schema (<xref linkend="information-schema"/>) provides
|
|
an alternative set of views which overlap the functionality of the system
|
|
views. Since the information schema is SQL-standard whereas the views
|
|
described here are <productname>PostgreSQL</productname>-specific,
|
|
it's usually better to use the information schema if it provides all
|
|
the information you need.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="view-table"/> lists the system views described here.
|
|
More detailed documentation of each view follows below.
|
|
There are some additional views that provide access to the results of
|
|
the statistics collector; they are described in <xref
|
|
linkend="monitoring-stats-views-table"/>.
|
|
</para>
|
|
|
|
<para>
|
|
Except where noted, all the views described here are read-only.
|
|
</para>
|
|
|
|
<table id="view-table">
|
|
<title>System Views</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>View Name</entry>
|
|
<entry>Purpose</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><link linkend="view-pg-available-extensions"><structname>pg_available_extensions</structname></link></entry>
|
|
<entry>available extensions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-available-extension-versions"><structname>pg_available_extension_versions</structname></link></entry>
|
|
<entry>available versions of extensions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-backend-memory-contexts"><structname>pg_backend_memory_contexts</structname></link></entry>
|
|
<entry>backend memory contexts</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-config"><structname>pg_config</structname></link></entry>
|
|
<entry>compile-time configuration parameters</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-cursors"><structname>pg_cursors</structname></link></entry>
|
|
<entry>open cursors</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-file-settings"><structname>pg_file_settings</structname></link></entry>
|
|
<entry>summary of configuration file contents</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-group"><structname>pg_group</structname></link></entry>
|
|
<entry>groups of database users</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-hba-file-rules"><structname>pg_hba_file_rules</structname></link></entry>
|
|
<entry>summary of client authentication configuration file contents</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-indexes"><structname>pg_indexes</structname></link></entry>
|
|
<entry>indexes</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-locks"><structname>pg_locks</structname></link></entry>
|
|
<entry>locks currently held or awaited</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-matviews"><structname>pg_matviews</structname></link></entry>
|
|
<entry>materialized views</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-policies"><structname>pg_policies</structname></link></entry>
|
|
<entry>policies</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-prepared-statements"><structname>pg_prepared_statements</structname></link></entry>
|
|
<entry>prepared statements</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-prepared-xacts"><structname>pg_prepared_xacts</structname></link></entry>
|
|
<entry>prepared transactions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-publication-tables"><structname>pg_publication_tables</structname></link></entry>
|
|
<entry>publications and their associated tables</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-replication-origin-status"><structname>pg_replication_origin_status</structname></link></entry>
|
|
<entry>information about replication origins, including replication progress</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-replication-slots"><structname>pg_replication_slots</structname></link></entry>
|
|
<entry>replication slot information</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-roles"><structname>pg_roles</structname></link></entry>
|
|
<entry>database roles</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-rules"><structname>pg_rules</structname></link></entry>
|
|
<entry>rules</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-seclabels"><structname>pg_seclabels</structname></link></entry>
|
|
<entry>security labels</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-sequences"><structname>pg_sequences</structname></link></entry>
|
|
<entry>sequences</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-settings"><structname>pg_settings</structname></link></entry>
|
|
<entry>parameter settings</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-shadow"><structname>pg_shadow</structname></link></entry>
|
|
<entry>database users</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-shmem-allocations"><structname>pg_shmem_allocations</structname></link></entry>
|
|
<entry>shared memory allocations</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-stats"><structname>pg_stats</structname></link></entry>
|
|
<entry>planner statistics</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-stats-ext"><structname>pg_stats_ext</structname></link></entry>
|
|
<entry>extended planner statistics</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-stats-ext-exprs"><structname>pg_stats_ext_exprs</structname></link></entry>
|
|
<entry>extended planner statistics for expressions</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-tables"><structname>pg_tables</structname></link></entry>
|
|
<entry>tables</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-timezone-abbrevs"><structname>pg_timezone_abbrevs</structname></link></entry>
|
|
<entry>time zone abbreviations</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-timezone-names"><structname>pg_timezone_names</structname></link></entry>
|
|
<entry>time zone names</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-user"><structname>pg_user</structname></link></entry>
|
|
<entry>database users</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-user-mappings"><structname>pg_user_mappings</structname></link></entry>
|
|
<entry>user mappings</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><link linkend="view-pg-views"><structname>pg_views</structname></link></entry>
|
|
<entry>views</entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-available-extensions">
|
|
<title><structname>pg_available_extensions</structname></title>
|
|
|
|
<indexterm zone="view-pg-available-extensions">
|
|
<primary>pg_available_extensions</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_available_extensions</structname> view lists the
|
|
extensions that are available for installation.
|
|
See also the
|
|
<link linkend="catalog-pg-extension"><structname>pg_extension</structname></link>
|
|
catalog, which shows the extensions currently installed.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_available_extensions</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Extension name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>default_version</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Name of default version, or <literal>NULL</literal> if none is
|
|
specified
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>installed_version</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Currently installed version of the extension,
|
|
or <literal>NULL</literal> if not installed
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>comment</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Comment string from the extension's control file
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_available_extensions</structname> view is read only.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-available-extension-versions">
|
|
<title><structname>pg_available_extension_versions</structname></title>
|
|
|
|
<indexterm zone="view-pg-available-extension-versions">
|
|
<primary>pg_available_extension_versions</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_available_extension_versions</structname> view lists the
|
|
specific extension versions that are available for installation.
|
|
See also the <link
|
|
linkend="catalog-pg-extension"><structname>pg_extension</structname></link>
|
|
catalog, which shows the extensions currently installed.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_available_extension_versions</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Extension name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>version</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Version name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>installed</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this version of this extension is currently
|
|
installed
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>superuser</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if only superusers are allowed to install this extension
|
|
(but see <structfield>trusted</structfield>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>trusted</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if the extension can be installed by non-superusers
|
|
with appropriate privileges
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relocatable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if extension can be relocated to another schema
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schema</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the schema that the extension must be installed into,
|
|
or <literal>NULL</literal> if partially or fully relocatable
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>requires</structfield> <type>name[]</type>
|
|
</para>
|
|
<para>
|
|
Names of prerequisite extensions,
|
|
or <literal>NULL</literal> if none
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>comment</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Comment string from the extension's control file
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_available_extension_versions</structname> view is read
|
|
only.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-backend-memory-contexts">
|
|
<title><structname>pg_backend_memory_contexts</structname></title>
|
|
|
|
<indexterm zone="view-pg-backend-memory-contexts">
|
|
<primary>pg_backend_memory_contexts</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_backend_memory_contexts</structname> displays all
|
|
the memory contexts of the server process attached to the current session.
|
|
</para>
|
|
<para>
|
|
<structname>pg_backend_memory_contexts</structname> contains one row
|
|
for each memory context.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_backend_memory_contexts</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Name of the memory context
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ident</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Identification information of the memory context. This field is truncated at 1024 bytes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>parent</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Name of the parent of this memory context
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>level</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Distance from TopMemoryContext in context tree
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>total_bytes</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Total bytes allocated for this memory context
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>total_nblocks</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Total number of blocks allocated for this memory context
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>free_bytes</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Free space in bytes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>free_chunks</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Total number of free chunks
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>used_bytes</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Used space in bytes
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
By default, the <structname>pg_backend_memory_contexts</structname> view can be
|
|
read only by superusers.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-config">
|
|
<title><structname>pg_config</structname></title>
|
|
|
|
<indexterm zone="view-pg-config">
|
|
<primary>pg_config</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_config</structname> describes the
|
|
compile-time configuration parameters of the currently installed
|
|
version of <productname>PostgreSQL</productname>. It is intended, for example, to
|
|
be used by software packages that want to interface to
|
|
<productname>PostgreSQL</productname> to facilitate finding the required header
|
|
files and libraries. It provides the same basic information as the
|
|
<xref linkend="app-pgconfig"/> <productname>PostgreSQL</productname> client
|
|
application.
|
|
</para>
|
|
|
|
<para>
|
|
By default, the <structname>pg_config</structname> view can be read
|
|
only by superusers.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_config</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The parameter name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setting</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The parameter value
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-cursors">
|
|
<title><structname>pg_cursors</structname></title>
|
|
|
|
<indexterm zone="view-pg-cursors">
|
|
<primary>pg_cursors</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_cursors</structname> view lists the cursors that
|
|
are currently available. Cursors can be defined in several ways:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
via the <link linkend="sql-declare"><command>DECLARE</command></link>
|
|
statement in SQL
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
via the Bind message in the frontend/backend protocol, as
|
|
described in <xref linkend="protocol-flow-ext-query"/>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
via the Server Programming Interface (SPI), as described in
|
|
<xref linkend="spi-interface"/>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
The <structname>pg_cursors</structname> view displays cursors
|
|
created by any of these means. Cursors only exist for the duration
|
|
of the transaction that defines them, unless they have been
|
|
declared <literal>WITH HOLD</literal>. Therefore non-holdable
|
|
cursors are only present in the view until the end of their
|
|
creating transaction.
|
|
|
|
<note>
|
|
<para>
|
|
Cursors are used internally to implement some of the components
|
|
of <productname>PostgreSQL</productname>, such as procedural languages.
|
|
Therefore, the <structname>pg_cursors</structname> view might include cursors
|
|
that have not been explicitly created by the user.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_cursors</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The name of the cursor
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statement</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The verbatim query string submitted to declare this cursor
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_holdable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> if the cursor is holdable (that is, it
|
|
can be accessed after the transaction that declared the cursor
|
|
has committed); <literal>false</literal> otherwise
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_binary</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> if the cursor was declared
|
|
<literal>BINARY</literal>; <literal>false</literal>
|
|
otherwise
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_scrollable</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> if the cursor is scrollable (that is, it
|
|
allows rows to be retrieved in a nonsequential manner);
|
|
<literal>false</literal> otherwise
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>creation_time</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
The time at which the cursor was declared
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_cursors</structname> view is read only.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-file-settings">
|
|
<title><structname>pg_file_settings</structname></title>
|
|
|
|
<indexterm zone="view-pg-file-settings">
|
|
<primary>pg_file_settings</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_file_settings</structname> provides a summary of
|
|
the contents of the server's configuration file(s). A row appears in
|
|
this view for each <quote>name = value</quote> entry appearing in the files,
|
|
with annotations indicating whether the value could be applied
|
|
successfully. Additional row(s) may appear for problems not linked to
|
|
a <quote>name = value</quote> entry, such as syntax errors in the files.
|
|
</para>
|
|
|
|
<para>
|
|
This view is helpful for checking whether planned changes in the
|
|
configuration files will work, or for diagnosing a previous failure.
|
|
Note that this view reports on the <emphasis>current</emphasis> contents of the
|
|
files, not on what was last applied by the server. (The
|
|
<link linkend="view-pg-settings"><structname>pg_settings</structname></link>
|
|
view is usually sufficient to determine that.)
|
|
</para>
|
|
|
|
<para>
|
|
By default, the <structname>pg_file_settings</structname> view can be read
|
|
only by superusers.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_file_settings</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sourcefile</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Full path name of the configuration file
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sourceline</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Line number within the configuration file where the entry appears
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>seqno</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Order in which the entries are processed (1..<replaceable>n</replaceable>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Configuration parameter name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setting</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Value to be assigned to the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>applied</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if the value can be applied successfully
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>error</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
If not null, an error message indicating why this entry could
|
|
not be applied
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
If the configuration file contains syntax errors or invalid parameter
|
|
names, the server will not attempt to apply any settings from it, and
|
|
therefore all the <structfield>applied</structfield> fields will read as false.
|
|
In such a case there will be one or more rows with
|
|
non-null <structfield>error</structfield> fields indicating the
|
|
problem(s). Otherwise, individual settings will be applied if possible.
|
|
If an individual setting cannot be applied (e.g., invalid value, or the
|
|
setting cannot be changed after server start) it will have an appropriate
|
|
message in the <structfield>error</structfield> field. Another way that
|
|
an entry might have <structfield>applied</structfield> = false is that it is
|
|
overridden by a later entry for the same parameter name; this case is not
|
|
considered an error so nothing appears in
|
|
the <structfield>error</structfield> field.
|
|
</para>
|
|
|
|
<para>
|
|
See <xref linkend="config-setting"/> for more information about the various
|
|
ways to change run-time parameters.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-group">
|
|
<title><structname>pg_group</structname></title>
|
|
|
|
<indexterm zone="view-pg-group">
|
|
<primary>pg_group</primary>
|
|
</indexterm>
|
|
|
|
<!-- Unlike information_schema.applicable_roles, this shows no members for
|
|
pg_database_owner. The v8.1 catalog would have shown no members if
|
|
that role had existed at the time. -->
|
|
<para>
|
|
The view <structname>pg_group</structname> exists for backwards
|
|
compatibility: it emulates a catalog that existed in
|
|
<productname>PostgreSQL</productname> before version 8.1.
|
|
It shows the names and members of all roles that are marked as not
|
|
<structfield>rolcanlogin</structfield>, which is an approximation to the set
|
|
of roles that are being used as groups.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_group</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>groname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of the group
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>grosysid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of this group
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>grolist</structfield> <type>oid[]</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
An array containing the IDs of the roles in this group
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-hba-file-rules">
|
|
<title><structname>pg_hba_file_rules</structname></title>
|
|
|
|
<indexterm zone="view-pg-hba-file-rules">
|
|
<primary>pg_hba_file_rules</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_hba_file_rules</structname> provides a summary of
|
|
the contents of the client authentication configuration file,
|
|
<link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>.
|
|
A row appears in this view for each
|
|
non-empty, non-comment line in the file, with annotations indicating
|
|
whether the rule could be applied successfully.
|
|
</para>
|
|
|
|
<para>
|
|
This view can be helpful for checking whether planned changes in the
|
|
authentication configuration file will work, or for diagnosing a previous
|
|
failure. Note that this view reports on the <emphasis>current</emphasis> contents
|
|
of the file, not on what was last loaded by the server.
|
|
</para>
|
|
|
|
<para>
|
|
By default, the <structname>pg_hba_file_rules</structname> view can be read
|
|
only by superusers.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_hba_file_rules</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>line_number</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Line number of this rule in <filename>pg_hba.conf</filename>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>type</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Type of connection
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>database</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
List of database name(s) to which this rule applies
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>user_name</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
List of user and group name(s) to which this rule applies
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>address</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Host name or IP address, or one
|
|
of <literal>all</literal>, <literal>samehost</literal>,
|
|
or <literal>samenet</literal>, or null for local connections
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>netmask</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
IP address mask, or null if not applicable
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>auth_method</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Authentication method
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>options</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Options specified for authentication method, if any
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>error</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
If not null, an error message indicating why this
|
|
line could not be processed
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Usually, a row reflecting an incorrect entry will have values for only
|
|
the <structfield>line_number</structfield> and <structfield>error</structfield> fields.
|
|
</para>
|
|
|
|
<para>
|
|
See <xref linkend="client-authentication"/> for more information about
|
|
client authentication configuration.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-indexes">
|
|
<title><structname>pg_indexes</structname></title>
|
|
|
|
<indexterm zone="view-pg-indexes">
|
|
<primary>pg_indexes</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_indexes</structname> provides access to
|
|
useful information about each index in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_indexes</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table and index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table the index is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indexname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of index
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablespace</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>spcname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of tablespace containing index (null if default for database)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>indexdef</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Index definition (a reconstructed <xref linkend="sql-createindex"/>
|
|
command)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-locks">
|
|
<title><structname>pg_locks</structname></title>
|
|
|
|
<indexterm zone="view-pg-locks">
|
|
<primary>pg_locks</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_locks</structname> provides access to
|
|
information about the locks held by active processes within the
|
|
database server. See <xref linkend="mvcc"/> for more discussion
|
|
of locking.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_locks</structname> contains one row per active lockable
|
|
object, requested lock mode, and relevant process. Thus, the same
|
|
lockable object might
|
|
appear many times, if multiple processes are holding or waiting
|
|
for locks on it. However, an object that currently has no locks on it
|
|
will not appear at all.
|
|
</para>
|
|
|
|
<para>
|
|
There are several distinct types of lockable objects:
|
|
whole relations (e.g., tables), individual pages of relations,
|
|
individual tuples of relations,
|
|
transaction IDs (both virtual and permanent IDs),
|
|
and general database objects (identified by class OID and object OID,
|
|
in the same way as in <link linkend="catalog-pg-description"><structname>pg_description</structname></link> or
|
|
<link linkend="catalog-pg-depend"><structname>pg_depend</structname></link>). Also, the right to extend a
|
|
relation is represented as a separate lockable object, as is the right to
|
|
update <structname>pg_database</structname>.<structfield>datfrozenxid</structfield>.
|
|
Also, <quote>advisory</quote> locks can be taken on numbers that have
|
|
user-defined meanings.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_locks</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>locktype</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Type of the lockable object:
|
|
<literal>relation</literal>,
|
|
<literal>extend</literal>,
|
|
<literal>frozenid</literal>,
|
|
<literal>page</literal>,
|
|
<literal>tuple</literal>,
|
|
<literal>transactionid</literal>,
|
|
<literal>virtualxid</literal>,
|
|
<literal>spectoken</literal>,
|
|
<literal>object</literal>,
|
|
<literal>userlock</literal>, or
|
|
<literal>advisory</literal>.
|
|
(See also <xref linkend="wait-event-lock-table"/>.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>database</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the database in which the lock target exists, or
|
|
zero if the target is a shared object, or
|
|
null if the target is a transaction ID
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>relation</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the relation targeted by the lock, or null if the target is not
|
|
a relation or part of a relation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>page</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Page number targeted by the lock within the relation,
|
|
or null if the target is not a relation page or tuple
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tuple</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Tuple number targeted by the lock within the page,
|
|
or null if the target is not a tuple
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>virtualxid</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Virtual ID of the transaction targeted by the lock,
|
|
or null if the target is not a virtual transaction ID
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>transactionid</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
ID of the transaction targeted by the lock,
|
|
or null if the target is not a transaction ID
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the system catalog containing the lock target, or null if the
|
|
target is not a general database object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
OID of the lock target within its system catalog, or null if the
|
|
target is not a general database object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int2</type>
|
|
</para>
|
|
<para>
|
|
Column number targeted by the lock (the
|
|
<structfield>classid</structfield> and <structfield>objid</structfield> refer to the
|
|
table itself),
|
|
or zero if the target is some other general database object,
|
|
or null if the target is not a general database object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>virtualtransaction</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Virtual ID of the transaction that is holding or awaiting this lock
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Process ID of the server process holding or awaiting this
|
|
lock, or null if the lock is held by a prepared transaction
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>mode</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Name of the lock mode held or desired by this process (see <xref linkend="locking-tables"/> and <xref linkend="xact-serializable"/>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>granted</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if lock is held, false if lock is awaited
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>fastpath</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if lock was taken via fast path, false if taken via main
|
|
lock table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>waitstart</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Time when the server process started waiting for this lock,
|
|
or null if the lock is held.
|
|
Note that this can be null for a very short period of time after
|
|
the wait started even though <structfield>granted</structfield>
|
|
is <literal>false</literal>.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
<structfield>granted</structfield> is true in a row representing a lock
|
|
held by the indicated process. False indicates that this process is
|
|
currently waiting to acquire this lock, which implies that at least one
|
|
other process is holding or waiting for a conflicting lock mode on the same
|
|
lockable object. The waiting process will sleep until the other lock is
|
|
released (or a deadlock situation is detected). A single process can be
|
|
waiting to acquire at most one lock at a time.
|
|
</para>
|
|
|
|
<para>
|
|
Throughout running a transaction, a server process holds an exclusive lock
|
|
on the transaction's virtual transaction ID. If a permanent ID is assigned
|
|
to the transaction (which normally happens only if the transaction changes
|
|
the state of the database), it also holds an exclusive lock on the
|
|
transaction's permanent transaction ID until it ends. When a process finds
|
|
it necessary to wait specifically for another transaction to end, it does
|
|
so by attempting to acquire share lock on the other transaction's ID
|
|
(either virtual or permanent ID depending on the situation). That will
|
|
succeed only when the other transaction terminates and releases its locks.
|
|
</para>
|
|
|
|
<para>
|
|
Although tuples are a lockable type of object,
|
|
information about row-level locks is stored on disk, not in memory,
|
|
and therefore row-level locks normally do not appear in this view.
|
|
If a process is waiting for a
|
|
row-level lock, it will usually appear in the view as waiting for the
|
|
permanent transaction ID of the current holder of that row lock.
|
|
</para>
|
|
|
|
<para>
|
|
Advisory locks can be acquired on keys consisting of either a single
|
|
<type>bigint</type> value or two integer values.
|
|
A <type>bigint</type> key is displayed with its
|
|
high-order half in the <structfield>classid</structfield> column, its low-order half
|
|
in the <structfield>objid</structfield> column, and <structfield>objsubid</structfield> equal
|
|
to 1. The original <type>bigint</type> value can be reassembled with the
|
|
expression <literal>(classid::bigint << 32) |
|
|
objid::bigint</literal>. Integer keys are displayed with the
|
|
first key in the
|
|
<structfield>classid</structfield> column, the second key in the <structfield>objid</structfield>
|
|
column, and <structfield>objsubid</structfield> equal to 2. The actual meaning of
|
|
the keys is up to the user. Advisory locks are local to each database,
|
|
so the <structfield>database</structfield> column is meaningful for an advisory lock.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_locks</structname> provides a global view of all locks
|
|
in the database cluster, not only those relevant to the current database.
|
|
Although its <structfield>relation</structfield> column can be joined
|
|
against <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield> to identify locked
|
|
relations, this will only work correctly for relations in the current
|
|
database (those for which the <structfield>database</structfield> column
|
|
is either the current database's OID or zero).
|
|
</para>
|
|
|
|
<para>
|
|
The <structfield>pid</structfield> column can be joined to the
|
|
<structfield>pid</structfield> column of the
|
|
<link linkend="monitoring-pg-stat-activity-view">
|
|
<structname>pg_stat_activity</structname></link>
|
|
view to get more
|
|
information on the session holding or awaiting each lock,
|
|
for example
|
|
<programlisting>
|
|
SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa
|
|
ON pl.pid = psa.pid;
|
|
</programlisting>
|
|
Also, if you are using prepared transactions, the
|
|
<structfield>virtualtransaction</structfield> column can be joined to the
|
|
<structfield>transaction</structfield> column of the <link
|
|
linkend="view-pg-prepared-xacts"><structname>pg_prepared_xacts</structname></link>
|
|
view to get more information on prepared transactions that hold locks.
|
|
(A prepared transaction can never be waiting for a lock,
|
|
but it continues to hold the locks it acquired while running.)
|
|
For example:
|
|
<programlisting>
|
|
SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|
ON pl.virtualtransaction = '-1/' || ppx.transaction;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
While it is possible to obtain information about which processes block
|
|
which other processes by joining <structname>pg_locks</structname> against
|
|
itself, this is very difficult to get right in detail. Such a query would
|
|
have to encode knowledge about which lock modes conflict with which
|
|
others. Worse, the <structname>pg_locks</structname> view does not expose
|
|
information about which processes are ahead of which others in lock wait
|
|
queues, nor information about which processes are parallel workers running
|
|
on behalf of which other client sessions. It is better to use
|
|
the <function>pg_blocking_pids()</function> function
|
|
(see <xref linkend="functions-info-session-table"/>) to identify which
|
|
process(es) a waiting process is blocked behind.
|
|
</para>
|
|
|
|
<para>
|
|
The <structname>pg_locks</structname> view displays data from both the
|
|
regular lock manager and the predicate lock manager, which are
|
|
separate systems; in addition, the regular lock manager subdivides its
|
|
locks into regular and <firstterm>fast-path</firstterm> locks.
|
|
This data is not guaranteed to be entirely consistent.
|
|
When the view is queried,
|
|
data on fast-path locks (with <structfield>fastpath</structfield> = <literal>true</literal>)
|
|
is gathered from each backend one at a time, without freezing the state of
|
|
the entire lock manager, so it is possible for locks to be taken or
|
|
released while information is gathered. Note, however, that these locks are
|
|
known not to conflict with any other lock currently in place. After
|
|
all backends have been queried for fast-path locks, the remainder of the
|
|
regular lock manager is locked as a unit, and a consistent snapshot of all
|
|
remaining locks is collected as an atomic action. After unlocking the
|
|
regular lock manager, the predicate lock manager is similarly locked and all
|
|
predicate locks are collected as an atomic action. Thus, with the exception
|
|
of fast-path locks, each lock manager will deliver a consistent set of
|
|
results, but as we do not lock both lock managers simultaneously, it is
|
|
possible for locks to be taken or released after we interrogate the regular
|
|
lock manager and before we interrogate the predicate lock manager.
|
|
</para>
|
|
|
|
<para>
|
|
Locking the regular and/or predicate lock manager could have some
|
|
impact on database performance if this view is very frequently accessed.
|
|
The locks are held only for the minimum amount of time necessary to
|
|
obtain data from the lock managers, but this does not completely eliminate
|
|
the possibility of a performance impact.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-matviews">
|
|
<title><structname>pg_matviews</structname></title>
|
|
|
|
<indexterm zone="view-pg-matviews">
|
|
<primary>pg_matviews</primary>
|
|
</indexterm>
|
|
|
|
<indexterm zone="view-pg-matviews">
|
|
<primary>materialized views</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_matviews</structname> provides access to
|
|
useful information about each materialized view in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_matviews</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing materialized view
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>matviewname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of materialized view
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>matviewowner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of materialized view's owner
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablespace</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>spcname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of tablespace containing materialized view (null if default for database)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>hasindexes</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if materialized view has (or recently had) any indexes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>ispopulated</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if materialized view is currently populated
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>definition</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Materialized view definition (a reconstructed <xref linkend="sql-select"/> query)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-policies">
|
|
<title><structname>pg_policies</structname></title>
|
|
|
|
<indexterm zone="view-pg-policies">
|
|
<primary>pg_policies</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_policies</structname> provides access to
|
|
useful information about each row-level security policy in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_policies</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table policy is on
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table policy is on
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>policyname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-policy"><structname>pg_policy</structname></link>.<structfield>polname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of policy
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>permissive</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Is the policy permissive or restrictive?
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>roles</structfield> <type>name[]</type>
|
|
</para>
|
|
<para>
|
|
The roles to which this policy applies
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cmd</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The command type to which the policy is applied
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>qual</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The expression added to the security barrier qualifications for
|
|
queries that this policy applies to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>with_check</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The expression added to the WITH CHECK qualifications for
|
|
queries that attempt to add rows to this table
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-prepared-statements">
|
|
<title><structname>pg_prepared_statements</structname></title>
|
|
|
|
<indexterm zone="view-pg-prepared-statements">
|
|
<primary>pg_prepared_statements</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_prepared_statements</structname> view displays
|
|
all the prepared statements that are available in the current
|
|
session. See <xref linkend="sql-prepare"/> for more information about prepared
|
|
statements.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_prepared_statements</structname> contains one row
|
|
for each prepared statement. Rows are added to the view when a new
|
|
prepared statement is created and removed when a prepared statement
|
|
is released (for example, via the <link linkend="sql-deallocate"><command>DEALLOCATE</command></link> command).
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_prepared_statements</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The identifier of the prepared statement
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statement</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The query string submitted by the client to create this
|
|
prepared statement. For prepared statements created via SQL,
|
|
this is the <command>PREPARE</command> statement submitted by
|
|
the client. For prepared statements created via the
|
|
frontend/backend protocol, this is the text of the prepared
|
|
statement itself.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prepare_time</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
The time at which the prepared statement was created
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>parameter_types</structfield> <type>regtype[]</type>
|
|
</para>
|
|
<para>
|
|
The expected parameter types for the prepared statement in the
|
|
form of an array of <type>regtype</type>. The OID corresponding
|
|
to an element of this array can be obtained by casting the
|
|
<type>regtype</type> value to <type>oid</type>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>from_sql</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> if the prepared statement was created
|
|
via the <command>PREPARE</command> SQL command;
|
|
<literal>false</literal> if the statement was prepared via the
|
|
frontend/backend protocol
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>generic_plans</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Number of times generic plan was chosen
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>custom_plans</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Number of times custom plan was chosen
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_prepared_statements</structname> view is read only.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-prepared-xacts">
|
|
<title><structname>pg_prepared_xacts</structname></title>
|
|
|
|
<indexterm zone="view-pg-prepared-xacts">
|
|
<primary>pg_prepared_xacts</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_prepared_xacts</structname> displays
|
|
information about transactions that are currently prepared for two-phase
|
|
commit (see <xref linkend="sql-prepare-transaction"/> for details).
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_prepared_xacts</structname> contains one row per prepared
|
|
transaction. An entry is removed when the transaction is committed or
|
|
rolled back.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_prepared_xacts</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>transaction</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
Numeric transaction identifier of the prepared transaction
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>gid</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Global transaction identifier that was assigned to the transaction
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>prepared</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Time at which the transaction was prepared for commit
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>owner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of the user that executed the transaction
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>database</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>datname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of the database in which the transaction was executed
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
When the <structname>pg_prepared_xacts</structname> view is accessed, the
|
|
internal transaction manager data structures are momentarily locked, and
|
|
a copy is made for the view to display. This ensures that the
|
|
view produces a consistent set of results, while not blocking
|
|
normal operations longer than necessary. Nonetheless
|
|
there could be some impact on database performance if this view is
|
|
frequently accessed.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-publication-tables">
|
|
<title><structname>pg_publication_tables</structname></title>
|
|
|
|
<indexterm zone="view-pg-publication-tables">
|
|
<primary>pg_publication_tables</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_publication_tables</structname> provides
|
|
information about the mapping between publications and the tables they
|
|
contain. Unlike the underlying catalog
|
|
<link linkend="catalog-pg-publication-rel"><structname>pg_publication_rel</structname></link>,
|
|
this view expands
|
|
publications defined as <literal>FOR ALL TABLES</literal>, so for such
|
|
publications there will be a row for each eligible table.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_publication_tables</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pubname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-publication"><structname>pg_publication</structname></link>.<structfield>pubname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of publication
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-replication-origin-status">
|
|
<title><structname>pg_replication_origin_status</structname></title>
|
|
|
|
<indexterm zone="view-pg-replication-origin-status">
|
|
<primary>pg_replication_origin_status</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_replication_origin_status</structname> view
|
|
contains information about how far replay for a certain origin has
|
|
progressed. For more on replication origins
|
|
see <xref linkend="replication-origins"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_replication_origin_status</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>local_id</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-replication-origin"><structname>pg_replication_origin</structname></link>.<structfield>roident</structfield>)
|
|
</para>
|
|
<para>
|
|
internal node identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>external_id</structfield> <type>text</type>
|
|
(references <link linkend="catalog-pg-replication-origin"><structname>pg_replication_origin</structname></link>.<structfield>roname</structfield>)
|
|
</para>
|
|
<para>
|
|
external node identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>remote_lsn</structfield> <type>pg_lsn</type>
|
|
</para>
|
|
<para>
|
|
The origin node's LSN up to which data has been replicated.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>local_lsn</structfield> <type>pg_lsn</type>
|
|
</para>
|
|
<para>
|
|
This node's LSN at which <literal>remote_lsn</literal> has
|
|
been replicated. Used to flush commit records before persisting
|
|
data to disk when using asynchronous commits.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-replication-slots">
|
|
<title><structname>pg_replication_slots</structname></title>
|
|
|
|
<indexterm zone="view-pg-replication-slots">
|
|
<primary>pg_replication_slots</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_replication_slots</structname> view provides a listing
|
|
of all replication slots that currently exist on the database cluster,
|
|
along with their current state.
|
|
</para>
|
|
|
|
<para>
|
|
For more on replication slots,
|
|
see <xref linkend="streaming-replication-slots"/> and <xref linkend="logicaldecoding"/>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_replication_slots</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>slot_name</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
A unique, cluster-wide identifier for the replication slot
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>plugin</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
The base name of the shared object containing the output plugin this logical slot is using, or null for physical slots.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>slot_type</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The slot type: <literal>physical</literal> or <literal>logical</literal>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>datoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the database this slot is associated with, or
|
|
null. Only logical slots have an associated database.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>database</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>datname</structfield>)
|
|
</para>
|
|
<para>
|
|
The name of the database this slot is associated with, or
|
|
null. Only logical slots have an associated database.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>temporary</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this is a temporary replication slot. Temporary slots are
|
|
not saved to disk and are automatically dropped on error or when
|
|
the session has finished.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>active</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this slot is currently actively being used
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>active_pid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
The process ID of the session using this slot if the slot
|
|
is currently actively being used. <literal>NULL</literal> if
|
|
inactive.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>xmin</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
The oldest transaction that this slot needs the database to
|
|
retain. <literal>VACUUM</literal> cannot remove tuples deleted
|
|
by any later transaction.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>catalog_xmin</structfield> <type>xid</type>
|
|
</para>
|
|
<para>
|
|
The oldest transaction affecting the system catalogs that this
|
|
slot needs the database to retain. <literal>VACUUM</literal> cannot
|
|
remove catalog tuples deleted by any later transaction.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>restart_lsn</structfield> <type>pg_lsn</type>
|
|
</para>
|
|
<para>
|
|
The address (<literal>LSN</literal>) of oldest WAL which still
|
|
might be required by the consumer of this slot and thus won't be
|
|
automatically removed during checkpoints unless this LSN
|
|
gets behind more than <xref linkend="guc-max-slot-wal-keep-size"/>
|
|
from the current LSN. <literal>NULL</literal>
|
|
if the <literal>LSN</literal> of this slot has never been reserved.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>confirmed_flush_lsn</structfield> <type>pg_lsn</type>
|
|
</para>
|
|
<para>
|
|
The address (<literal>LSN</literal>) up to which the logical
|
|
slot's consumer has confirmed receiving data. Data older than this is
|
|
not available anymore. <literal>NULL</literal> for physical slots.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>wal_status</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Availability of WAL files claimed by this slot.
|
|
Possible values are:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>reserved</literal> means that the claimed files
|
|
are within <varname>max_wal_size</varname>.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><literal>extended</literal> means
|
|
that <varname>max_wal_size</varname> is exceeded but the files are
|
|
still retained, either by the replication slot or
|
|
by <varname>wal_keep_size</varname>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>unreserved</literal> means that the slot no longer
|
|
retains the required WAL files and some of them are to be removed at
|
|
the next checkpoint. This state can return
|
|
to <literal>reserved</literal> or <literal>extended</literal>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<literal>lost</literal> means that some required WAL files have
|
|
been removed and this slot is no longer usable.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
The last two states are seen only when
|
|
<xref linkend="guc-max-slot-wal-keep-size"/> is
|
|
non-negative. If <structfield>restart_lsn</structfield> is NULL, this
|
|
field is null.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>safe_wal_size</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
The number of bytes that can be written to WAL such that this slot
|
|
is not in danger of getting in state "lost". It is NULL for lost
|
|
slots, as well as if <varname>max_slot_wal_keep_size</varname>
|
|
is <literal>-1</literal>.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>two_phase</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if the slot is enabled for decoding prepared transactions. Always
|
|
false for physical slots.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-roles">
|
|
<title><structname>pg_roles</structname></title>
|
|
|
|
<indexterm zone="view-pg-roles">
|
|
<primary>pg_roles</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_roles</structname> provides access to
|
|
information about database roles. This is simply a publicly
|
|
readable view of
|
|
<link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>
|
|
that blanks out the password field.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_roles</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolname</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Role name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolsuper</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role has superuser privileges
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolinherit</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role automatically inherits privileges of roles it is a
|
|
member of
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcreaterole</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can create more roles
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcreatedb</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can create databases
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolcanlogin</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role can log in. That is, this role can be given as the initial
|
|
session authorization identifier
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolreplication</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role is a replication role. A replication role can initiate replication
|
|
connections and create and drop replication slots.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolconnlimit</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For roles that can log in, this sets maximum number of concurrent
|
|
connections this role can make. -1 means no limit.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolpassword</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Not the password (always reads as <literal>********</literal>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolvaliduntil</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Password expiry time (only used for password authentication);
|
|
null if no expiration
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolbypassrls</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Role bypasses every row-level security policy, see
|
|
<xref linkend="ddl-rowsecurity"/> for more information.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rolconfig</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Role-specific defaults for run-time configuration variables
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>oid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of role
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-rules">
|
|
<title><structname>pg_rules</structname></title>
|
|
|
|
<indexterm zone="view-pg-rules">
|
|
<primary>pg_rules</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_rules</structname> provides access to
|
|
useful information about query rewrite rules.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_rules</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table the rule is for
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rulename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-rewrite"><structname>pg_rewrite</structname></link>.<structfield>rulename</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of rule
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>definition</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Rule definition (a reconstructed creation command)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <structname>pg_rules</structname> view excludes the <literal>ON SELECT</literal> rules
|
|
of views and materialized views; those can be seen in
|
|
<link linkend="view-pg-views"><structname>pg_views</structname></link> and <link linkend="view-pg-matviews"><structname>pg_matviews</structname></link>.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-seclabels">
|
|
<title><structname>pg_seclabels</structname></title>
|
|
|
|
<indexterm zone="view-pg-seclabels">
|
|
<primary>pg_seclabels</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_seclabels</structname> provides information about
|
|
security labels. It as an easier-to-query version of the
|
|
<link linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link> catalog.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_seclabels</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objoid</structfield> <type>oid</type>
|
|
(references any OID column)
|
|
</para>
|
|
<para>
|
|
The OID of the object this security label pertains to
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>classoid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the system catalog this object appears in
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objsubid</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
For a security label on a table column, this is the column number (the
|
|
<structfield>objoid</structfield> and <structfield>classoid</structfield> refer to
|
|
the table itself). For all other object types, this column is
|
|
zero.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objtype</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The type of object to which this label applies, as text.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objnamespace</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the namespace for this object, if applicable;
|
|
otherwise NULL.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>objname</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The name of the object to which this label applies, as text.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>provider</structfield> <type>text</type>
|
|
(references <link linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link>.<structfield>provider</structfield>)
|
|
</para>
|
|
<para>
|
|
The label provider associated with this label.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>label</structfield> <type>text</type>
|
|
(references <link linkend="catalog-pg-seclabel"><structname>pg_seclabel</structname></link>.<structfield>label</structfield>)
|
|
</para>
|
|
<para>
|
|
The security label applied to this object.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-sequences">
|
|
<title><structname>pg_sequences</structname></title>
|
|
|
|
<indexterm zone="view-pg-sequences">
|
|
<primary>pg_sequences</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_sequences</structname> provides access to
|
|
useful information about each sequence in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_sequences</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sequencename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sequenceowner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of sequence's owner
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>data_type</structfield> <type>regtype</type>
|
|
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
Data type of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>start_value</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Start value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>min_value</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Minimum value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>max_value</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Maximum value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>increment_by</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Increment value of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cycle</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
Whether the sequence cycles
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>cache_size</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Cache size of the sequence
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>last_value</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
The last sequence value written to disk. If caching is used,
|
|
this value can be greater than the last value handed out from the
|
|
sequence. Null if the sequence has not been read from yet. Also, if
|
|
the current user does not have <literal>USAGE</literal>
|
|
or <literal>SELECT</literal> privilege on the sequence, the value is
|
|
null.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-settings">
|
|
<title><structname>pg_settings</structname></title>
|
|
|
|
<indexterm zone="view-pg-settings">
|
|
<primary>pg_settings</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_settings</structname> provides access to
|
|
run-time parameters of the server. It is essentially an alternative
|
|
interface to the <link linkend="sql-show"><command>SHOW</command></link>
|
|
and <link linkend="sql-set"><command>SET</command></link> commands.
|
|
It also provides access to some facts about each parameter that are
|
|
not directly available from <link linkend="sql-show"><command>SHOW</command></link>, such as minimum and
|
|
maximum values.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_settings</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Run-time configuration parameter name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>setting</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Current value of the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>unit</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Implicit unit of the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>category</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Logical group of the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>short_desc</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
A brief description of the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>extra_desc</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Additional, more detailed, description of the parameter
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>context</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Context required to set the parameter's value (see below)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>vartype</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Parameter type (<literal>bool</literal>, <literal>enum</literal>,
|
|
<literal>integer</literal>, <literal>real</literal>, or <literal>string</literal>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>source</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Source of the current parameter value
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>min_val</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Minimum allowed value of the parameter (null for non-numeric
|
|
values)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>max_val</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Maximum allowed value of the parameter (null for non-numeric
|
|
values)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>enumvals</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Allowed values of an enum parameter (null for non-enum
|
|
values)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>boot_val</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Parameter value assumed at server startup if the parameter is
|
|
not otherwise set
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>reset_val</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Value that <link linkend="sql-reset"><command>RESET</command></link> would reset the parameter to
|
|
in the current session
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sourcefile</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Configuration file the current value was set in (null for
|
|
values set from sources other than configuration files, or when
|
|
examined by a user who is neither a superuser or a member of
|
|
<literal>pg_read_all_settings</literal>); helpful when using
|
|
<literal>include</literal> directives in configuration files
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>sourceline</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Line number within the configuration file the current value was
|
|
set at (null for values set from sources other than configuration files,
|
|
or when examined by a user who is neither a superuser or a member of
|
|
<literal>pg_read_all_settings</literal>).
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>pending_restart</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
<literal>true</literal> if the value has been changed in the
|
|
configuration file but needs a restart; or <literal>false</literal>
|
|
otherwise.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
There are several possible values of <structfield>context</structfield>.
|
|
In order of decreasing difficulty of changing the setting, they are:
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<!-- PGC_INTERNAL -->
|
|
<term><literal>internal</literal></term>
|
|
<listitem>
|
|
<para>
|
|
These settings cannot be changed directly; they reflect internally
|
|
determined values. Some of them may be adjustable by rebuilding the
|
|
server with different configuration options, or by changing options
|
|
supplied to <application>initdb</application>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_POSTMASTER -->
|
|
<term><literal>postmaster</literal></term>
|
|
<listitem>
|
|
<para>
|
|
These settings can only be applied when the server starts, so any change
|
|
requires restarting the server. Values for these settings are typically
|
|
stored in the <filename>postgresql.conf</filename> file, or passed on
|
|
the command line when starting the server. Of course, settings with any
|
|
of the lower <structfield>context</structfield> types can also be
|
|
set at server start time.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_SIGHUP -->
|
|
<term><literal>sighup</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Changes to these settings can be made in
|
|
<filename>postgresql.conf</filename> without restarting the server.
|
|
Send a <systemitem>SIGHUP</systemitem> signal to the postmaster to
|
|
cause it to re-read <filename>postgresql.conf</filename> and apply
|
|
the changes. The postmaster will also forward the
|
|
<systemitem>SIGHUP</systemitem> signal to its child processes so that
|
|
they all pick up the new value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_SU_BACKEND -->
|
|
<term><literal>superuser-backend</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Changes to these settings can be made in
|
|
<filename>postgresql.conf</filename> without restarting the server.
|
|
They can also be set for a particular session in the connection request
|
|
packet (for example, via <application>libpq</application>'s <literal>PGOPTIONS</literal>
|
|
environment variable), but only if the connecting user is a superuser.
|
|
However, these settings never change in a session after it is started.
|
|
If you change them in <filename>postgresql.conf</filename>, send a
|
|
<systemitem>SIGHUP</systemitem> signal to the postmaster to cause it to
|
|
re-read <filename>postgresql.conf</filename>. The new values will only
|
|
affect subsequently-launched sessions.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_BACKEND -->
|
|
<term><literal>backend</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Changes to these settings can be made in
|
|
<filename>postgresql.conf</filename> without restarting the server.
|
|
They can also be set for a particular session in the connection request
|
|
packet (for example, via <application>libpq</application>'s <literal>PGOPTIONS</literal>
|
|
environment variable); any user can make such a change for their session.
|
|
However, these settings never change in a session after it is started.
|
|
If you change them in <filename>postgresql.conf</filename>, send a
|
|
<systemitem>SIGHUP</systemitem> signal to the postmaster to cause it to
|
|
re-read <filename>postgresql.conf</filename>. The new values will only
|
|
affect subsequently-launched sessions.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_SUSET -->
|
|
<term><literal>superuser</literal></term>
|
|
<listitem>
|
|
<para>
|
|
These settings can be set from <filename>postgresql.conf</filename>,
|
|
or within a session via the <command>SET</command> command; but only superusers
|
|
can change them via <command>SET</command>. Changes in
|
|
<filename>postgresql.conf</filename> will affect existing sessions
|
|
only if no session-local value has been established with <command>SET</command>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<!-- PGC_USERSET -->
|
|
<term><literal>user</literal></term>
|
|
<listitem>
|
|
<para>
|
|
These settings can be set from <filename>postgresql.conf</filename>,
|
|
or within a session via the <command>SET</command> command. Any user is
|
|
allowed to change their session-local value. Changes in
|
|
<filename>postgresql.conf</filename> will affect existing sessions
|
|
only if no session-local value has been established with <command>SET</command>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>
|
|
See <xref linkend="config-setting"/> for more information about the various
|
|
ways to change these parameters.
|
|
</para>
|
|
|
|
<para>
|
|
This view does not display <link linkend="runtime-config-custom">customized options</link>
|
|
until the extension module that defines them has been loaded.
|
|
</para>
|
|
|
|
<para>
|
|
This view cannot be inserted into or deleted from, but it can be updated. An
|
|
<command>UPDATE</command> applied to a row of <structname>pg_settings</structname>
|
|
is equivalent to executing the <command>SET</command> command on that named
|
|
parameter. The change only affects the value used by the current
|
|
session. If an <command>UPDATE</command> is issued within a transaction
|
|
that is later aborted, the effects of the <command>UPDATE</command> command
|
|
disappear when the transaction is rolled back. Once the surrounding
|
|
transaction is committed, the effects will persist until the end of the
|
|
session, unless overridden by another <command>UPDATE</command> or
|
|
<command>SET</command>.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-shadow">
|
|
<title><structname>pg_shadow</structname></title>
|
|
|
|
<indexterm zone="view-pg-shadow">
|
|
<primary>pg_shadow</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_shadow</structname> exists for backwards
|
|
compatibility: it emulates a catalog that existed in
|
|
<productname>PostgreSQL</productname> before version 8.1.
|
|
It shows properties of all roles that are marked as
|
|
<structfield>rolcanlogin</structfield> in
|
|
<link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.
|
|
</para>
|
|
|
|
<para>
|
|
The name stems from the fact that this table
|
|
should not be readable by the public since it contains passwords.
|
|
<link linkend="view-pg-user"><structname>pg_user</structname></link>
|
|
is a publicly readable view on
|
|
<structname>pg_shadow</structname> that blanks out the password field.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_shadow</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
User name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usesysid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
ID of this user
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usecreatedb</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User can create databases
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usesuper</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User is a superuser
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>userepl</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User can initiate streaming replication and put the system in and
|
|
out of backup mode.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usebypassrls</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User bypasses every row-level security policy, see
|
|
<xref linkend="ddl-rowsecurity"/> for more information.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>passwd</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Password (possibly encrypted); null if none. See
|
|
<link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>
|
|
for details of how encrypted passwords are stored.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>valuntil</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Password expiry time (only used for password authentication)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>useconfig</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Session defaults for run-time configuration variables
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-shmem-allocations">
|
|
<title><structname>pg_shmem_allocations</structname></title>
|
|
|
|
<indexterm zone="view-pg-shmem-allocations">
|
|
<primary>pg_shmem_allocations</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The <structname>pg_shmem_allocations</structname> view shows allocations
|
|
made from the server's main shared memory segment. This includes both
|
|
memory allocated by <productname>postgres</productname> itself and memory
|
|
allocated by extensions using the mechanisms detailed in
|
|
<xref linkend="xfunc-shared-addin" />.
|
|
</para>
|
|
|
|
<para>
|
|
Note that this view does not include memory allocated using the dynamic
|
|
shared memory infrastructure.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_shmem_allocations</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
The name of the shared memory allocation. NULL for unused memory
|
|
and <literal><anonymous></literal> for anonymous
|
|
allocations.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>off</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
The offset at which the allocation starts. NULL for anonymous
|
|
allocations, since details related to them are not known.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>size</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Size of the allocation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>allocated_size</structfield> <type>int8</type>
|
|
</para>
|
|
<para>
|
|
Size of the allocation including padding. For anonymous
|
|
allocations, no information about padding is available, so the
|
|
<literal>size</literal> and <literal>allocated_size</literal> columns
|
|
will always be equal. Padding is not meaningful for free memory, so
|
|
the columns will be equal in that case also.
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Anonymous allocations are allocations that have been made
|
|
with <literal>ShmemAlloc()</literal> directly, rather than via
|
|
<literal>ShmemInitStruct()</literal> or
|
|
<literal>ShmemInitHash()</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
By default, the <structname>pg_shmem_allocations</structname> view can be
|
|
read only by superusers.
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-stats">
|
|
<title><structname>pg_stats</structname></title>
|
|
|
|
<indexterm zone="view-pg-stats">
|
|
<primary>pg_stats</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_stats</structname> provides access to
|
|
the information stored in the <link
|
|
linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link>
|
|
catalog. This view allows access only to rows of
|
|
<link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link> that correspond to tables the
|
|
user has permission to read, and therefore it is safe to allow public
|
|
read access to this view.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_stats</structname> is also designed to present the
|
|
information in a more readable format than the underlying catalog
|
|
— at the cost that its schema must be extended whenever new slot types
|
|
are defined for <link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_stats</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of column described by this row
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>inherited</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
If true, this row includes inheritance child columns, not just the
|
|
values in the specified table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>null_frac</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Fraction of column entries that are null
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>avg_width</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Average width in bytes of column's entries
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>n_distinct</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
If greater than zero, the estimated number of distinct values in the
|
|
column. If less than zero, the negative of the number of distinct
|
|
values divided by the number of rows. (The negated form is used when
|
|
<command>ANALYZE</command> believes that the number of distinct values is
|
|
likely to increase as the table grows; the positive form is used when
|
|
the column seems to have a fixed number of possible values.) For
|
|
example, -1 indicates a unique column in which the number of distinct
|
|
values is the same as the number of rows.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_vals</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of the most common values in the column. (Null if
|
|
no values seem to be more common than any others.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_freqs</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the frequencies of the most common values,
|
|
i.e., number of occurrences of each divided by total number of rows.
|
|
(Null when <structfield>most_common_vals</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>histogram_bounds</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of values that divide the column's values into groups of
|
|
approximately equal population. The values in
|
|
<structfield>most_common_vals</structfield>, if present, are omitted from this
|
|
histogram calculation. (This column is null if the column data type
|
|
does not have a <literal><</literal> operator or if the
|
|
<structfield>most_common_vals</structfield> list accounts for the entire
|
|
population.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>correlation</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Statistical correlation between physical row ordering and
|
|
logical ordering of the column values. This ranges from -1 to +1.
|
|
When the value is near -1 or +1, an index scan on the column will
|
|
be estimated to be cheaper than when it is near zero, due to reduction
|
|
of random access to the disk. (This column is null if the column data
|
|
type does not have a <literal><</literal> operator.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_elems</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of non-null element values most often appearing within values of
|
|
the column. (Null for scalar types.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_elem_freqs</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the frequencies of the most common element values, i.e., the
|
|
fraction of rows containing at least one instance of the given value.
|
|
Two or three additional values follow the per-element frequencies;
|
|
these are the minimum and maximum of the preceding per-element
|
|
frequencies, and optionally the frequency of null elements.
|
|
(Null when <structfield>most_common_elems</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>elem_count_histogram</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A histogram of the counts of distinct non-null element values within the
|
|
values of the column, followed by the average number of distinct
|
|
non-null elements. (Null for scalar types.)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The maximum number of entries in the array fields can be controlled on a
|
|
column-by-column basis using the <link linkend="sql-altertable"><command>ALTER
|
|
TABLE SET STATISTICS</command></link>
|
|
command, or globally by setting the
|
|
<xref linkend="guc-default-statistics-target"/> run-time parameter.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-stats-ext">
|
|
<title><structname>pg_stats_ext</structname></title>
|
|
|
|
<indexterm zone="view-pg-stats-ext">
|
|
<primary>pg_stats_ext</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_stats_ext</structname> provides access to
|
|
information about each extended statistics object in the database,
|
|
combining information stored in the <link
|
|
linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>
|
|
and <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>
|
|
catalogs. This view allows access only to rows of
|
|
<link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link> and <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>
|
|
that correspond to tables the user has permission to read, and therefore
|
|
it is safe to allow public read access to this view.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_stats_ext</structname> is also designed to present the
|
|
information in a more readable format than the underlying catalogs
|
|
— at the cost that its schema must be extended whenever new types
|
|
of extended statistics are added to <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_stats_ext</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_name</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.<structfield>stxname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_owner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>attnames</structfield> <type>name[]</type>
|
|
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attname</structfield>)
|
|
</para>
|
|
<para>
|
|
Names of the columns included in the extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>exprs</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Expressions included in the extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>kinds</structfield> <type>char[]</type>
|
|
</para>
|
|
<para>
|
|
Types of extended statistics object enabled for this record
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>n_distinct</structfield> <type>pg_ndistinct</type>
|
|
</para>
|
|
<para>
|
|
N-distinct counts for combinations of column values. If greater
|
|
than zero, the estimated number of distinct values in the combination.
|
|
If less than zero, the negative of the number of distinct values divided
|
|
by the number of rows.
|
|
(The negated form is used when <command>ANALYZE</command> believes that
|
|
the number of distinct values is likely to increase as the table grows;
|
|
the positive form is used when the column seems to have a fixed number
|
|
of possible values.) For example, -1 indicates a unique combination of
|
|
columns in which the number of distinct combinations is the same as the
|
|
number of rows.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>dependencies</structfield> <type>pg_dependencies</type>
|
|
</para>
|
|
<para>
|
|
Functional dependency statistics
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_vals</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the most common combinations of values in the columns.
|
|
(Null if no combinations seem to be more common than any others.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_val_nulls</structfield> <type>bool[]</type>
|
|
</para>
|
|
<para>
|
|
A list of NULL flags for the most common combinations of values.
|
|
(Null when <structfield>most_common_vals</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_freqs</structfield> <type>float8[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the frequencies of the most common combinations,
|
|
i.e., number of occurrences of each divided by total number of rows.
|
|
(Null when <structfield>most_common_vals</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_base_freqs</structfield> <type>float8[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the base frequencies of the most common combinations,
|
|
i.e., product of per-value frequencies.
|
|
(Null when <structfield>most_common_vals</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The maximum number of entries in the array fields can be controlled on a
|
|
column-by-column basis using the <link linkend="sql-altertable"><command>ALTER
|
|
TABLE SET STATISTICS</command></link> command, or globally by setting the
|
|
<xref linkend="guc-default-statistics-target"/> run-time parameter.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-stats-ext-exprs">
|
|
<title><structname>pg_stats_ext_exprs</structname></title>
|
|
|
|
<indexterm zone="view-pg-stats-ext-exprs">
|
|
<primary>pg_stats_ext_exprs</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_stats_ext_exprs</structname> provides access to
|
|
information about all expressions included in extended statistics objects,
|
|
combining information stored in the <link
|
|
linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>
|
|
and <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>
|
|
catalogs. This view allows access only to rows of
|
|
<link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link> and <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>
|
|
that correspond to tables the user has permission to read, and therefore
|
|
it is safe to allow public read access to this view.
|
|
</para>
|
|
|
|
<para>
|
|
<structname>pg_stats_ext_exprs</structname> is also designed to present
|
|
the information in a more readable format than the underlying catalogs
|
|
— at the cost that its schema must be extended whenever the structure
|
|
of statistics in <link linkend="catalog-pg-statistic"><structname>pg_statistic</structname></link> changes.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_stats_ext_exprs</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table the statistics object is defined on
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_name</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.<structfield>stxname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>statistics_owner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Owner of the extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>expr</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Expression included in the extended statistics object
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>null_frac</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Fraction of expression entries that are null
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>avg_width</structfield> <type>int4</type>
|
|
</para>
|
|
<para>
|
|
Average width in bytes of expression's entries
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>n_distinct</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
If greater than zero, the estimated number of distinct values in the
|
|
expression. If less than zero, the negative of the number of distinct
|
|
values divided by the number of rows. (The negated form is used when
|
|
<command>ANALYZE</command> believes that the number of distinct values is
|
|
likely to increase as the table grows; the positive form is used when
|
|
the expression seems to have a fixed number of possible values.) For
|
|
example, -1 indicates a unique expression in which the number of distinct
|
|
values is the same as the number of rows.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_vals</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of the most common values in the expression. (Null if
|
|
no values seem to be more common than any others.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_freqs</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the frequencies of the most common values,
|
|
i.e., number of occurrences of each divided by total number of rows.
|
|
(Null when <structfield>most_common_vals</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>histogram_bounds</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of values that divide the expression's values into groups of
|
|
approximately equal population. The values in
|
|
<structfield>most_common_vals</structfield>, if present, are omitted from this
|
|
histogram calculation. (This expression is null if the expression data type
|
|
does not have a <literal><</literal> operator or if the
|
|
<structfield>most_common_vals</structfield> list accounts for the entire
|
|
population.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>correlation</structfield> <type>float4</type>
|
|
</para>
|
|
<para>
|
|
Statistical correlation between physical row ordering and
|
|
logical ordering of the expression values. This ranges from -1 to +1.
|
|
When the value is near -1 or +1, an index scan on the expression will
|
|
be estimated to be cheaper than when it is near zero, due to reduction
|
|
of random access to the disk. (This expression is null if the expression's
|
|
data type does not have a <literal><</literal> operator.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_elems</structfield> <type>anyarray</type>
|
|
</para>
|
|
<para>
|
|
A list of non-null element values most often appearing within values of
|
|
the expression. (Null for scalar types.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>most_common_elem_freqs</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A list of the frequencies of the most common element values, i.e., the
|
|
fraction of rows containing at least one instance of the given value.
|
|
Two or three additional values follow the per-element frequencies;
|
|
these are the minimum and maximum of the preceding per-element
|
|
frequencies, and optionally the frequency of null elements.
|
|
(Null when <structfield>most_common_elems</structfield> is.)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>elem_count_histogram</structfield> <type>float4[]</type>
|
|
</para>
|
|
<para>
|
|
A histogram of the counts of distinct non-null element values within the
|
|
values of the expression, followed by the average number of distinct
|
|
non-null elements. (Null for scalar types.)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The maximum number of entries in the array fields can be controlled on a
|
|
column-by-column basis using the <link linkend="sql-altertable"><command>ALTER
|
|
TABLE SET STATISTICS</command></link> command, or globally by setting the
|
|
<xref linkend="guc-default-statistics-target"/> run-time parameter.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-tables">
|
|
<title><structname>pg_tables</structname></title>
|
|
|
|
<indexterm zone="view-pg-tables">
|
|
<primary>pg_tables</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_tables</structname> provides access to
|
|
useful information about each table in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_tables</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablename</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tableowner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of table's owner
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>tablespace</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-tablespace"><structname>pg_tablespace</structname></link>.<structfield>spcname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of tablespace containing table (null if default for database)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>hasindexes</structfield> <type>bool</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relhasindex</structfield>)
|
|
</para>
|
|
<para>
|
|
True if table has (or recently had) any indexes
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>hasrules</structfield> <type>bool</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relhasrules</structfield>)
|
|
</para>
|
|
<para>
|
|
True if table has (or once had) rules
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>hastriggers</structfield> <type>bool</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relhastriggers</structfield>)
|
|
</para>
|
|
<para>
|
|
True if table has (or once had) triggers
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>rowsecurity</structfield> <type>bool</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relrowsecurity</structfield>)
|
|
</para>
|
|
<para>
|
|
True if row security is enabled on the table
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-timezone-abbrevs">
|
|
<title><structname>pg_timezone_abbrevs</structname></title>
|
|
|
|
<indexterm zone="view-pg-timezone-abbrevs">
|
|
<primary>pg_timezone_abbrevs</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_timezone_abbrevs</structname> provides a list
|
|
of time zone abbreviations that are currently recognized by the datetime
|
|
input routines. The contents of this view change when the
|
|
<xref linkend="guc-timezone-abbreviations"/> run-time parameter is modified.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_timezone_abbrevs</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>abbrev</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Time zone abbreviation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>utc_offset</structfield> <type>interval</type>
|
|
</para>
|
|
<para>
|
|
Offset from UTC (positive means east of Greenwich)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_dst</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if this is a daylight-savings abbreviation
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
While most timezone abbreviations represent fixed offsets from UTC,
|
|
there are some that have historically varied in value
|
|
(see <xref linkend="datetime-config-files"/> for more information).
|
|
In such cases this view presents their current meaning.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-timezone-names">
|
|
<title><structname>pg_timezone_names</structname></title>
|
|
|
|
<indexterm zone="view-pg-timezone-names">
|
|
<primary>pg_timezone_names</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_timezone_names</structname> provides a list
|
|
of time zone names that are recognized by <command>SET TIMEZONE</command>,
|
|
along with their associated abbreviations, UTC offsets,
|
|
and daylight-savings status. (Technically,
|
|
<productname>PostgreSQL</productname> does not use UTC because leap
|
|
seconds are not handled.)
|
|
Unlike the abbreviations shown in <link
|
|
linkend="view-pg-timezone-abbrevs"><structname>pg_timezone_abbrevs</structname></link>, many of these names imply a set of daylight-savings transition
|
|
date rules. Therefore, the associated information changes across local DST
|
|
boundaries. The displayed information is computed based on the current
|
|
value of <function>CURRENT_TIMESTAMP</function>.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_timezone_names</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>name</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Time zone name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>abbrev</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Time zone abbreviation
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>utc_offset</structfield> <type>interval</type>
|
|
</para>
|
|
<para>
|
|
Offset from UTC (positive means east of Greenwich)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>is_dst</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
True if currently observing daylight savings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-user">
|
|
<title><structname>pg_user</structname></title>
|
|
|
|
<indexterm zone="view-pg-user">
|
|
<primary>pg_user</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_user</structname> provides access to
|
|
information about database users. This is simply a publicly
|
|
readable view of
|
|
<link linkend="view-pg-shadow"><structname>pg_shadow</structname></link>
|
|
that blanks out the password field.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_user</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usename</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
User name
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usesysid</structfield> <type>oid</type>
|
|
</para>
|
|
<para>
|
|
ID of this user
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usecreatedb</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User can create databases
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usesuper</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User is a superuser
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>userepl</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User can initiate streaming replication and put the system in and
|
|
out of backup mode.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usebypassrls</structfield> <type>bool</type>
|
|
</para>
|
|
<para>
|
|
User bypasses every row-level security policy, see
|
|
<xref linkend="ddl-rowsecurity"/> for more information.
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>passwd</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
Not the password (always reads as <literal>********</literal>)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>valuntil</structfield> <type>timestamptz</type>
|
|
</para>
|
|
<para>
|
|
Password expiry time (only used for password authentication)
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>useconfig</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
Session defaults for run-time configuration variables
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="view-pg-user-mappings">
|
|
<title><structname>pg_user_mappings</structname></title>
|
|
|
|
<indexterm zone="view-pg-user-mappings">
|
|
<primary>pg_user_mappings</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_user_mappings</structname> provides access
|
|
to information about user mappings. This is essentially a publicly
|
|
readable view of
|
|
<link linkend="catalog-pg-user-mapping"><structname>pg_user_mapping</structname></link>
|
|
that leaves out the options field if the user has no rights to use
|
|
it.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_user_mappings</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-user-mapping"><structname>pg_user_mapping</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the user mapping
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvid</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-foreign-server"><structname>pg_foreign_server</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
The OID of the foreign server that contains this mapping
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>srvname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-foreign-server"><structname>pg_foreign_server</structname></link>.<structfield>srvname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of the foreign server
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umuser</structfield> <type>oid</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>oid</structfield>)
|
|
</para>
|
|
<para>
|
|
OID of the local role being mapped, or zero if the user mapping is public
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>usename</structfield> <type>name</type>
|
|
</para>
|
|
<para>
|
|
Name of the local user to be mapped
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>umoptions</structfield> <type>text[]</type>
|
|
</para>
|
|
<para>
|
|
User mapping specific options, as <quote>keyword=value</quote> strings
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
To protect password information stored as a user mapping option,
|
|
the <structfield>umoptions</structfield> column will read as null
|
|
unless one of the following applies:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
current user is the user being mapped, and owns the server or
|
|
holds <literal>USAGE</literal> privilege on it
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
current user is the server owner and mapping is for <literal>PUBLIC</literal>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
current user is a superuser
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="view-pg-views">
|
|
<title><structname>pg_views</structname></title>
|
|
|
|
<indexterm zone="view-pg-views">
|
|
<primary>pg_views</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
The view <structname>pg_views</structname> provides access to
|
|
useful information about each view in the database.
|
|
</para>
|
|
|
|
<table>
|
|
<title><structname>pg_views</structname> Columns</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
Column Type
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>schemaname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.<structfield>nspname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of schema containing view
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>viewname</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>relname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of view
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>viewowner</structfield> <type>name</type>
|
|
(references <link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.<structfield>rolname</structfield>)
|
|
</para>
|
|
<para>
|
|
Name of view's owner
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="catalog_table_entry"><para role="column_definition">
|
|
<structfield>definition</structfield> <type>text</type>
|
|
</para>
|
|
<para>
|
|
View definition (a reconstructed <xref linkend="sql-select"/> query)
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|