Home Explore Blog CI



postgresql

23th chunk of `doc/src/sgml/information_schema.sgml`
ceb5988cde1998df934f1252acc0e5093d11cff9dc0c90440000000100000fa7
 <para>
       If the column is an identity column, then the increment of the internal
       sequence, else null.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>identity_maximum</structfield> <type>character_data</type>
      </para>
      <para>
       If the column is an identity column, then the maximum value of the
       internal sequence, else null.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>identity_minimum</structfield> <type>character_data</type>
      </para>
      <para>
       If the column is an identity column, then the minimum value of the
       internal sequence, else null.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>identity_cycle</structfield> <type>yes_or_no</type>
      </para>
      <para>
       If the column is an identity column, then <literal>YES</literal> if the
       internal sequence cycles or <literal>NO</literal> if it does not;
       otherwise null.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>is_generated</structfield> <type>character_data</type>
      </para>
      <para>
       If the column is a generated column, then <literal>ALWAYS</literal>,
       else <literal>NEVER</literal>.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>generation_expression</structfield> <type>character_data</type>
      </para>
      <para>
       If the column is a generated column, then the generation expression,
       else null.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>is_updatable</structfield> <type>yes_or_no</type>
      </para>
      <para>
       <literal>YES</literal> if the column is updatable,
       <literal>NO</literal> if not (Columns in base tables are always
       updatable, columns in views not necessarily)
      </para></entry>
     </row>
    </tbody>
   </tgroup>
  </table>

  <para>
   Since data types can be defined in a variety of ways in SQL, and
   <productname>PostgreSQL</productname> contains additional ways to
   define data types, their representation in the information schema
   can be somewhat difficult.  The column <literal>data_type</literal>
   is supposed to identify the underlying built-in type of the column.
   In <productname>PostgreSQL</productname>, this means that the type
   is defined in the system catalog schema
   <literal>pg_catalog</literal>.  This column might be useful if the
   application can handle the well-known built-in types specially (for
   example, format the numeric types differently or use the data in
   the precision columns).  The columns <literal>udt_name</literal>,
   <literal>udt_schema</literal>, and <literal>udt_catalog</literal>
   always identify the underlying data type of the column, even if the
   column is based on a domain.  (Since
   <productname>PostgreSQL</productname> treats built-in types like
   user-defined types, built-in types appear here as well.  This is an
   extension of the SQL standard.)  These columns should be used if an
   application wants to process data differently according to the
   type, because in that case it wouldn't matter if the column is
   really based on a domain.  If the column is based on a domain, the
   identity of the domain is stored in the columns
   <literal>domain_name</literal>, <literal>domain_schema</literal>,
   and <literal>domain_catalog</literal>.  If you want to pair up
   columns with their associated data types and treat domains as
   separate types, you could write <literal>coalesce(domain_name,
   udt_name)</literal>, etc.
  </para>
 </sect1>

Title: Information Schema Columns for Data Type Information
Summary
This section describes the columns in the information schema that provide information about data types, including the underlying built-in type, user-defined types, domains, and generated columns, and how to use these columns to process data differently according to the type.