Home Explore Blog CI



postgresql

15th chunk of `doc/src/sgml/catalogs.sgml`
8d539e1d99d3174ce6c6f89ed3ad1ee7e65b5698f9979b220000000100000fa2
 functions.
       The value will generally be -1 for types that do not need <structfield>atttypmod</structfield>.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attndims</structfield> <type>int2</type>
      </para>
      <para>
       Number of dimensions, if the column is an array type; otherwise 0.
       (Presently, the number of dimensions of an array is not enforced,
       so any nonzero value effectively means <quote>it's an array</quote>.)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attbyval</structfield> <type>bool</type>
      </para>
      <para>
       A copy of <literal>pg_type.typbyval</literal> of this column's type
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attalign</structfield> <type>char</type>
      </para>
      <para>
       A copy of <literal>pg_type.typalign</literal> of this column's type
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attstorage</structfield> <type>char</type>
      </para>
      <para>
       Normally a copy of <literal>pg_type.typstorage</literal> of this
       column's type.  For TOAST-able data types, this can be altered
       after column creation to control storage policy.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attcompression</structfield> <type>char</type>
      </para>
      <para>
       The current compression method of the column.  Typically this is
       <literal>'\0'</literal> to specify use of the current default setting
       (see <xref linkend="guc-default-toast-compression"/>).  Otherwise,
       <literal>'p'</literal> selects pglz compression, while
       <literal>'l'</literal> selects <productname>LZ4</productname>
       compression.  However, this field is ignored
       whenever <structfield>attstorage</structfield> does not allow
       compression.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attnotnull</structfield> <type>bool</type>
      </para>
      <para>
       This column has a (possibly invalid) not-null constraint.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>atthasdef</structfield> <type>bool</type>
      </para>
      <para>
       This column has a default expression or generation expression, in which
       case there will be a corresponding entry in the
       <link linkend="catalog-pg-attrdef"><structname>pg_attrdef</structname></link> catalog that actually defines the
       expression.  (Check <structfield>attgenerated</structfield> to
       determine whether this is a default or a generation expression.)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>atthasmissing</structfield> <type>bool</type>
      </para>
      <para>
       This column has a value which is used where the column is entirely
       missing from the row, as happens when a column is added with a
       non-volatile <literal>DEFAULT</literal> value after the row is created.
       The actual value used is stored in the
       <structfield>attmissingval</structfield> column.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>attidentity</structfield> <type>char</type>
      </para>
      <para>
       If a zero byte (<literal>''</literal>), then not an identity column.
       Otherwise, <literal>a</literal> = generated
       always, <literal>d</literal>

Title: pg_attribute Columns (Continued)
Summary
Continuing the description of the pg_attribute columns, this section details: attalign (copy of pg_type.typalign), attstorage (copy of pg_type.typstorage, controls storage policy for TOAST-able types), attcompression (compression method), attnotnull (indicates a not-null constraint), atthasdef (indicates a default or generation expression in pg_attrdef), atthasmissing (indicates a value to use when the column is missing), and attidentity (indicates if it is an identity column).