| <!-- doc/src/sgml/system-views.sgml --> |
| <!-- |
| Documentation of the system views, directed toward PostgreSQL developers |
| --> |
| |
| <chapter id="views"> |
| <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 accumulated |
| statistics; they are described in |
| <xref linkend="monitoring-stats-views-table"/>. |
| </para> |
| |
| <sect1 id="views-overview"> |
| <title>Overview</title> |
| |
| <para> |
| <xref linkend="view-table"/> lists the system views. |
| More detailed documentation of each catalog follows below. |
| 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-ident-file-mappings"><structname>pg_ident_file_mappings</structname></link></entry> |
| <entry>summary of client user name mapping 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 information of 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 or roles with the privileges of the |
| <literal>pg_read_all_stats</literal> role. |
| </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>rule_number</structfield> <type>int4</type> |
| </para> |
| <para> |
| Number of this rule, if valid, otherwise <literal>NULL</literal>. |
| This indicates the order in which each rule is considered |
| until a match is found during authentication. |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>file_name</structfield> <type>text</type> |
| </para> |
| <para> |
| Name of the file containing this rule |
| </para></entry> |
| </row> |
| |
| <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 <literal>file_name</literal> |
| </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-ident-file-mappings"> |
| <title><structname>pg_ident_file_mappings</structname></title> |
| |
| <indexterm zone="view-pg-ident-file-mappings"> |
| <primary>pg_ident_file_mappings</primary> |
| </indexterm> |
| |
| <para> |
| The view <structname>pg_ident_file_mappings</structname> provides a summary |
| of the contents of the client user name mapping configuration file, |
| <link linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>. |
| A row appears in this view for each non-empty, non-comment line in the file, |
| with annotations indicating whether the map 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_ident_file_mappings</structname> view can be |
| read only by superusers. |
| </para> |
| |
| <table> |
| <title><structname>pg_ident_file_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>map_number</structfield> <type>int4</type> |
| </para> |
| <para> |
| Number of this map, in priority order, if valid, otherwise |
| <literal>NULL</literal> |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>file_name</structfield> <type>text</type> |
| </para> |
| <para> |
| Name of the file containing this map |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>line_number</structfield> <type>int4</type> |
| </para> |
| <para> |
| Line number of this map in <literal>file_name</literal> |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>map_name</structfield> <type>text</type> |
| </para> |
| <para> |
| Name of the map |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>sys_name</structfield> <type>text</type> |
| </para> |
| <para> |
| Detected user name of the client |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>pg_username</structfield> <type>text</type> |
| </para> |
| <para> |
| Requested PostgreSQL user name |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>error</structfield> <type>text</type> |
| </para> |
| <para> |
| If not <literal>NULL</literal>, 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>, |
| <literal>advisory</literal>, or |
| <literal>applytransaction</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; see |
| <xref linkend="transactions"/> |
| </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; <xref linkend="transactions"/> |
| </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> |
| A speculative insertion lock consists of a transaction ID and a speculative |
| insertion token. The speculative insertion token is displayed in the |
| <structfield>objid</structfield> column. |
| </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> |
| Apply transaction locks are used in parallel mode to apply the transaction |
| in logical replication. The remote transaction ID is displayed in the |
| <structfield>transactionid</structfield> column. The <structfield>objsubid</structfield> |
| displays the lock subtype which is 0 for the lock used to synchronize the |
| set of changes, and 1 for the lock used to wait for the transaction to |
| finish to ensure commit order. |
| </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>result_types</structfield> <type>regtype[]</type> |
| </para> |
| <para> |
| The types of the columns returned by 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>. |
| If the prepared statement does not provide a result (e.g., a DML |
| statement), then this field will be null. |
| </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 information of |
| 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 |
| <link linkend="sql-createpublication-for-all-tables"><literal>FOR ALL TABLES</literal></link> |
| and <link linkend="sql-createpublication-for-tables-in-schema"><literal>FOR TABLES IN SCHEMA</literal></link>, |
| 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> |
| |
| <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 table columns included in the publication. This contains all |
| the columns of the table when the user didn't specify the column list |
| for the table. |
| </para></entry> |
| </row> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>rowfilter</structfield> <type>text</type> |
| </para> |
| <para> |
| Expression for the table's publication qualifying condition |
| </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 corresponding to the |
| transactions committed before this <literal>LSN</literal> 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> |
| |
| <row> |
| <entry role="catalog_table_entry"><para role="column_definition"> |
| <structfield>conflicting</structfield> <type>bool</type> |
| </para> |
| <para> |
| True if this logical slot conflicted with recovery (and so is now |
| invalidated). Always NULL 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. |
| </para></entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| |
| <para> |
| The <structfield>last_value</structfield> column will read as null if any of |
| the following are true: |
| <itemizedlist> |
| <listitem> |
| <para> |
| The sequence has not been read from yet. |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| The current user does not have <literal>USAGE</literal> or |
| <literal>SELECT</literal> privilege on the sequence. |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| The sequence is unlogged and the server is a standby. |
| </para> |
| </listitem> |
| </itemizedlist> |
| </para> |
| |
| </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 neither is a superuser nor has privileges 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 neither is a superuser nor has privileges 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 |
| or has been granted the appropriate <literal>SET</literal> privilege. |
| 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 |
| and users with the appropriate <literal>SET</literal> privilege |
| 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 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> |
| |
| <para> |
| This view does not |
| display <link linkend="runtime-config-custom">customized options</link> |
| unless the extension module that defines them has been loaded by the |
| backend process executing the query (e.g., via a mention in |
| <xref linkend="guc-shared-preload-libraries"/>, |
| a call to a C function in the extension, or the |
| <link linkend="sql-load"><command>LOAD</command></link> command). |
| For example, since <link linkend="archive-modules">archive modules</link> |
| are normally loaded only by the archiver process not regular sessions, |
| this view will not display any customized options defined by such modules |
| unless special action is taken to load them into the backend process |
| executing the query. |
| </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>PostgreSQL</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 in bytes |
| </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 in bytes 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 or roles with privileges of the |
| <literal>pg_read_all_stats</literal> role. |
| </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 values from child tables, 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 owns, 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>inherited</structfield> <type>bool</type> |
| (references <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>.<structfield>stxdinherit</structfield>) |
| </para> |
| <para> |
| If true, the stats include values from child tables, not just the |
| values in the specified relation |
| </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 owns, 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 <structname>pg_statistic_ext</structname> 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>inherited</structfield> <type>bool</type> |
| (references <link linkend="catalog-pg-statistic-ext-data"><structname>pg_statistic_ext_data</structname></link>.<structfield>stxdinherit</structfield>) |
| </para> |
| <para> |
| If true, the stats include values from child tables, not just the |
| values in the specified relation |
| </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> |