<sect2>
  <!--File generated by the tools/information-schema-doc program from the
libgda/information-schema.xml file,
do not modify-->
  <title>Individual table description</title>
  <para>This section individually describes each table.</para>
  <sect3 id="is:_attributes">
    <title>_attributes table</title>
    <para>Table to store (key,value) pairs (keys starting with '_' are reserved)</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>att_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>att_value</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
  </sect3>
  <sect3 id="is:_information_schema_catalog_name">
    <title>_information_schema_catalog_name table</title>
    <para>Name of the current database (current catalog), has only one row</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>catalog_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
  </sect3>
  <sect3 id="is:_schemata">
    <title>_schemata table</title>
    <para>List of schemas</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>catalog_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the catalog that contains the schema</entry></row><row><entry>schema_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>schema_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the schema</entry></row><row><entry>schema_internal</entry><entry>boolean</entry><entry/><entry>No</entry><entry>Tells if the schema is specific to the database implementation (and usually can't be modified)</entry></row><row><entry>schema_default</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry>Tells if the schema is used by default when creating a new table without schema name</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(catalog_name) references <link linkend="is:_information_schema_catalog_name">_information_schema_catalog_name</link>(catalog_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_builtin_data_types">
    <title>_builtin_data_types table</title>
    <para>List of built-in data types such as varchar, int, ...</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>short_type_name</entry><entry>string</entry><entry/><entry>No</entry><entry>Short name of the data type</entry></row><row><entry>full_type_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Full name of the data type</entry></row><row><entry>gtype</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>synonyms</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>internal</entry><entry>boolean</entry><entry/><entry>No</entry><entry>Tells if the data type is reserved for the database implementation and should not be used in applications</entry></row></tbody></tgroup></informaltable></para>
  </sect3>
  <sect3 id="is:_udt">
    <title>_udt table</title>
    <para>User defined data types</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>udt_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the catalog that contains the data type</entry></row><row><entry>udt_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the schema that contains the data type</entry></row><row><entry>udt_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the data type</entry></row><row><entry>udt_gtype</entry><entry>string</entry><entry/><entry>Yes</entry><entry>GType associated to the data type</entry></row><row><entry>udt_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>udt_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>udt_full_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>udt_internal</entry><entry>boolean</entry><entry/><entry>No</entry><entry>Tells if the data type is reserved for the database implementation and should not be used in applications</entry></row><row><entry>udt_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(udt_catalog, udt_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_udt_columns">
    <title>_udt_columns table</title>
    <para>List of components for a user defined data type for composed data types (such as a complex number data type which has real and imaginary parts)</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>udt_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the catalog that contains the user defined data type for which the column is</entry></row><row><entry>udt_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the schema that contains the user defined data type for which the column is</entry></row><row><entry>udt_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the user defined data type for which the column is</entry></row><row><entry>udt_column</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the column (part)</entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry/><entry>No</entry><entry>Column position, starts at 1</entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type of the column (if the column is an array, then 'array_spec' is set, and this may be NULL)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the column is an array</entry></row><row><entry>character_maximum_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_octet_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>numeric_precision</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>numeric_scale</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>datetime_precision</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(udt_catalog, udt_schema, udt_name) references <link linkend="is:_udt">_udt</link>(udt_catalog, udt_schema, udt_name) </para>
        </listitem>
        <listitem>
          <para>(array_spec) references <link linkend="is:_element_types">_element_types</link>(specific_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_enums">
    <title>_enums table</title>
    <para>List of possible enumeration labels for enumerations</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>udt_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the catalog that contains the ENUM user defined data type</entry></row><row><entry>udt_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the schema that contains the ENUM user defined data type</entry></row><row><entry>udt_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the ENUM user defined data type</entry></row><row><entry>label</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry/><entry>No</entry><entry>Position, starts at 1</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(udt_catalog, udt_schema, udt_name) references <link linkend="is:_udt">_udt</link>(udt_catalog, udt_schema, udt_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_element_types">
    <title>_element_types table</title>
    <para>Array specific attributes for array data types</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>specific_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>No specific meaning, used as a primary key, and for joining</entry></row><row><entry>object_catalog</entry><entry>string</entry><entry/><entry>No</entry><entry>Name of the catalog that contains the object that uses the array being described</entry></row><row><entry>object_schema</entry><entry>string</entry><entry/><entry>No</entry><entry>Name of the schema that contains the object that uses the array being described</entry></row><row><entry>object_name</entry><entry>string</entry><entry/><entry>No</entry><entry>Name of the object that uses the array being described</entry></row><row><entry>object_type</entry><entry>string</entry><entry/><entry>No</entry><entry>The type of the object that uses the array being described TABLE_COL, DOMAIN, UDT_COL, ROUTINE_COL, ROUTINE_PAR</entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Base data type of the array (if the base data type is an array, then 'array_spec' is set, and this may be NULL)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the base data type is an array</entry></row><row><entry>min_cardinality</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>max_cardinality</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
  </sect3>
  <sect3 id="is:_domains">
    <title>_domains table</title>
    <para>List of domains</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>domain_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of catalog that contains the domain</entry></row><row><entry>domain_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of schema that contains the domain</entry></row><row><entry>domain_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the domain</entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type of the domain (if the domain is an array, then 'array_spec' is set, and this may be NULL)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the domain is an array</entry></row><row><entry>domain_gtype</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>character_maximum_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_octet_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of catalog that contains the associated collation</entry></row><row><entry>collation_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of schema that contains the associated collation</entry></row><row><entry>collation_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the associated collation</entry></row><row><entry>character_set_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of catalog that contains the associated character set</entry></row><row><entry>character_set_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of schema that contains the associated character set</entry></row><row><entry>character_set_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the associated character set</entry></row><row><entry>numeric_precision</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>numeric_scale</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>domain_default</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>domain_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>domain_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>domain_full_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>domain_internal</entry><entry>boolean</entry><entry/><entry>No</entry><entry></entry></row><row><entry>domain_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(domain_catalog, domain_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
        <listitem>
          <para>(array_spec) references <link linkend="is:_element_types">_element_types</link>(specific_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_tables">
    <title>_tables table</title>
    <para>List of tables (tables, views or other objects which can contain data)</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of catalog that contains the table</entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of schema that contains the table</entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the table</entry></row><row><entry>table_type</entry><entry>string</entry><entry/><entry>No</entry><entry>Type of table: BASE TABLE, VIEW, LOCAL TEMPORARY, SYSTEM TABLE, GLOBAL TEMPORARY, ALIAS or SYNONYM</entry></row><row><entry>is_insertable_into</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry>Tells if the table's contents can be modified</entry></row><row><entry>table_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>table_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>table_full_name</entry><entry>text</entry><entry/><entry>No</entry><entry></entry></row><row><entry>table_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_views">
    <title>_views table</title>
    <para>List of views and their specific information</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of catalog that contains the view</entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of schema that contains the view</entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the view</entry></row><row><entry>view_definition</entry><entry>text</entry><entry/><entry>Yes</entry><entry>View as SQL</entry></row><row><entry>check_option</entry><entry>string</entry><entry/><entry>Yes</entry><entry>CASCADE if the statement used to create the view included the WITH CHECK OPTION; otherwise, NONE</entry></row><row><entry>is_updatable</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry>Tells if the view's contents can be modified</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name) references <link linkend="is:_tables">_tables</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_collations">
    <title>_collations table</title>
    <para>List of collations methods</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>collation_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>collation_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>collation_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>collation_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>collation_full_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(collation_catalog, collation_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_character_sets">
    <title>_character_sets table</title>
    <para>List of character sets</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>character_set_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>character_set_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>character_set_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>default_collate_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>default_collate_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>default_collate_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>character_set_full_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(character_set_catalog, character_set_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
        <listitem>
          <para>(default_collate_catalog, default_collate_schema, default_collate_name) references <link linkend="is:_collations">_collations</link>(collation_catalog, collation_schema, collation_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_routines">
    <title>_routines table</title>
    <para>List of functions and stored procedures (note: the primary jey for that table is composed of (specific_catalog, specific_schema, specific_name))</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>specific_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Specific name of catalog that contains the routine</entry></row><row><entry>specific_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Specific name of schema that contains the routine</entry></row><row><entry>specific_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Specific name of the routine (may be mangled for polymorphic routines)</entry></row><row><entry>routine_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of catalog that contains the routine (may be NULL)</entry></row><row><entry>routine_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of schema that contains the routine (may be NULL)</entry></row><row><entry>routine_name</entry><entry>string</entry><entry/><entry>No</entry><entry>Name of the routine</entry></row><row><entry>routine_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>FUNCTION, PROCEDURE, AGGREGATE</entry></row><row><entry>return_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type returned by the routine (may be NULL if routine does not return any value)</entry></row><row><entry>returns_set</entry><entry>boolean</entry><entry/><entry>No</entry><entry>True if routine returns a set (i.e., multiple values of the specified data type or if data type may vary)</entry></row><row><entry>nb_args</entry><entry>gint</entry><entry/><entry>No</entry><entry>Number of arguments (-1 for variable number of arguments)</entry></row><row><entry>routine_body</entry><entry>text</entry><entry/><entry>Yes</entry><entry>If the routine is an SQL function, then SQL, else EXTERNAL</entry></row><row><entry>routine_definition</entry><entry>text</entry><entry/><entry>Yes</entry><entry>The source text of the routine</entry></row><row><entry>external_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry>If the routine is an external function, then the external name (link symbol) of the function</entry></row><row><entry>external_language</entry><entry>string</entry><entry/><entry>Yes</entry><entry>The language the routine is written in</entry></row><row><entry>parameter_style</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Parameter style (GENERAL, JAVA, SQL, GENERAL WITH NULLS)</entry></row><row><entry>is_deterministic</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry>Tells if the routine returns the same results given the same arguments forever</entry></row><row><entry>sql_data_access</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Whether the routine contains SQL and whether it reads or modifies data (NONE, CONTAINS, READS, MODIFIES)</entry></row><row><entry>is_null_call</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry>Tells if the routine will be called if any one of its arguments is NULL</entry></row><row><entry>routine_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>routine_short_name</entry><entry>text</entry><entry/><entry>No</entry><entry></entry></row><row><entry>routine_full_name</entry><entry>text</entry><entry/><entry>No</entry><entry></entry></row><row><entry>routine_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(specific_catalog, specific_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_triggers">
    <title>_triggers table</title>
    <para>List of triggers</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>trigger_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>trigger_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>trigger_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>event_manipulation</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Event that fires the trigger (INSERT, UPDATE, or DELETE)</entry></row><row><entry>event_object_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the database that contains the table that the trigger is defined on</entry></row><row><entry>event_object_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the schema that contains the table that the trigger is defined on</entry></row><row><entry>event_object_table</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry>Name of the table that the trigger is defined on</entry></row><row><entry>action_statement</entry><entry>text</entry><entry/><entry>Yes</entry><entry>Statement that is executed by the trigger</entry></row><row><entry>action_orientation</entry><entry>string</entry><entry/><entry>No</entry><entry>Identifies whether the trigger fires once for each processed row or once for each statement (ROW or STATEMENT)</entry></row><row><entry>condition_timing</entry><entry>string</entry><entry/><entry>No</entry><entry>Time at which the trigger fires (BEFORE or AFTER)</entry></row><row><entry>trigger_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>trigger_short_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>trigger_full_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(trigger_catalog, trigger_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
        <listitem>
          <para>(event_object_catalog, event_object_schema, event_object_table) references <link linkend="is:_tables">_tables</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_columns">
    <title>_columns table</title>
    <para>List of columns composing tables</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry/><entry>No</entry><entry>Column position, starts at 1</entry></row><row><entry>column_default</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>is_nullable</entry><entry>boolean</entry><entry/><entry>No</entry><entry></entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type of the column (if the column is an array, then 'array_spec' is set, and this may be NULL)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the column is an array</entry></row><row><entry>gtype</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>character_maximum_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_octet_length</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>numeric_precision</entry><entry>gint</entry><entry/><entry>Yes</entry><entry>If data_type identifies a numeric type, this column contains the precision of the type for this column (the number of significant digits)</entry></row><row><entry>numeric_scale</entry><entry>gint</entry><entry/><entry>Yes</entry><entry>If data_type identifies an exact numeric type, this column contains the scale of the type for this column (the number of significant digits to the right of the decimal point)</entry></row><row><entry>datetime_precision</entry><entry>gint</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>character_set_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>collation_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>extra</entry><entry>string</entry><entry/><entry>Yes</entry><entry>CSV string with: AUTO_INCREMENT</entry></row><row><entry>is_updatable</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>column_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name) references <link linkend="is:_tables">_tables</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
        <listitem>
          <para>(character_set_catalog, character_set_schema, character_set_name) references <link linkend="is:_character_sets">_character_sets</link>(character_set_catalog, character_set_schema, character_set_name) </para>
        </listitem>
        <listitem>
          <para>(collation_catalog, collation_schema, collation_name) references <link linkend="is:_collations">_collations</link>(collation_catalog, collation_schema, collation_name) </para>
        </listitem>
        <listitem>
          <para>(array_spec) references <link linkend="is:_element_types">_element_types</link>(specific_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_table_constraints">
    <title>_table_constraints table</title>
    <para>List of constraints applied to tables (Check, primary or foreign key, or unique constraints)</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>constraint_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the catalog that contains the constraint</entry></row><row><entry>constraint_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the schema that contains the constraint</entry></row><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>constraint_type</entry><entry>string</entry><entry/><entry>No</entry><entry>CHECK, FOREIGN KEY, PRIMARY KEY or UNIQUE</entry></row><row><entry>check_clause</entry><entry>text</entry><entry/><entry>Yes</entry><entry>The check expression if the constraint is a check constraint, NULL otherwise</entry></row><row><entry>is_deferrable</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>initially_deferred</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name) references <link linkend="is:_tables">_tables</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_referential_constraints">
    <title>_referential_constraints table</title>
    <para>List of foreign key constraints, along with some specific attributes</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ref_table_catalog</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>ref_table_schema</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>ref_table_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>ref_constraint_name</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>match_option</entry><entry>string</entry><entry/><entry>Yes</entry><entry>FULL, PARTIAL or NONE</entry></row><row><entry>update_rule</entry><entry>string</entry><entry/><entry>Yes</entry><entry>CASCADE, SET NULL, SET DEFAULT, RESTRICT, NO ACTION or NONE</entry></row><row><entry>delete_rule</entry><entry>string</entry><entry/><entry>Yes</entry><entry>CASCADE, SET NULL, SET DEFAULT, RESTRICT, NO ACTION or NONE</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name, constraint_name) references <link linkend="is:_table_constraints">_table_constraints</link>(table_catalog, table_schema, table_name, constraint_name) </para>
        </listitem>
        <listitem>
          <para>(ref_table_catalog, ref_table_schema, ref_table_name, ref_constraint_name) references <link linkend="is:_table_constraints">_table_constraints</link>(table_catalog, table_schema, table_name, constraint_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_key_column_usage">
    <title>_key_column_usage table</title>
    <para>List of primary key constraints and the name of the tables' columns involved</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry>Yes</entry><entry>No</entry><entry>Ordinal position of the column within the constraint key (count starts at 1)</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name, constraint_name) references <link linkend="is:_table_constraints">_table_constraints</link>(table_catalog, table_schema, table_name, constraint_name) </para>
        </listitem>
        <listitem>
          <para>(table_catalog, table_schema, table_name, column_name) references <link linkend="is:_columns">_columns</link>(table_catalog, table_schema, table_name, column_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:__declared_fk">
    <title>__declared_fk table</title>
    <para>List of foreign key constraints, declared in Libgda and unknown to the database</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ref_table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ref_table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ref_table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ref_column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ts</entry><entry>timestamp</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>descr</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
  </sect3>
  <sect3 id="is:_check_column_usage">
    <title>_check_column_usage table</title>
    <para>List of check constraints and the name of the tables' columns involved</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name, constraint_name) references <link linkend="is:_table_constraints">_table_constraints</link>(table_catalog, table_schema, table_name, constraint_name) </para>
        </listitem>
        <listitem>
          <para>(table_catalog, table_schema, table_name, column_name) references <link linkend="is:_columns">_columns</link>(table_catalog, table_schema, table_name, column_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_view_column_usage">
    <title>_view_column_usage table</title>
    <para>List of the tables' columns involved in a view</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>view_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>view_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>view_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(view_catalog, view_schema, view_name) references <link linkend="is:_views">_views</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
        <listitem>
          <para>(table_catalog, table_schema, table_name, column_name) references <link linkend="is:_columns">_columns</link>(table_catalog, table_schema, table_name, column_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_domain_constraints">
    <title>_domain_constraints table</title>
    <para>List of constraints applicable to domains</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>constraint_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the catalog that contains the constraint</entry></row><row><entry>constraint_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the schema that contains the constraint</entry></row><row><entry>constraint_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>domain_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>domain_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>domain_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>check_clause</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>is_deferrable</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>initially_deferred</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(domain_catalog, domain_schema, domain_name) references <link linkend="is:_domains">_domains</link>(domain_catalog, domain_schema, domain_name) </para>
        </listitem>
        <listitem>
          <para>(constraint_catalog, constraint_schema) references <link linkend="is:_schemata">_schemata</link>(catalog_name, schema_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_parameters">
    <title>_parameters table</title>
    <para>List of routines' (functions and stored procedures) parameters (may not contain data for some routines which accept any type of parameter)</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>specific_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>specific_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>specific_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>parameter_mode</entry><entry>string</entry><entry/><entry>No</entry><entry></entry></row><row><entry>parameter_name</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type of the parameter (if the parameter is an array, then 'array_spec' is set, and this may be NULL; can also be NULL if any type of parameter is accepted)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the parameter is an array</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(specific_catalog, specific_schema, specific_name) references <link linkend="is:_routines">_routines</link>(specific_catalog, specific_schema, specific_name) </para>
        </listitem>
        <listitem>
          <para>(array_spec) references <link linkend="is:_element_types">_element_types</link>(specific_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_routine_columns">
    <title>_routine_columns table</title>
    <para>List of routines' (functions and stored procedures) returned values' parts (columns) for routines returning composed values</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>specific_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>specific_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>specific_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry>Yes</entry><entry>Yes</entry><entry></entry></row><row><entry>data_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Data type of the column (if the column is an array, then 'array_spec' is set, and this may be NULL)</entry></row><row><entry>array_spec</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Array description if the column is an array</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(specific_catalog, specific_schema, specific_name) references <link linkend="is:_routines">_routines</link>(specific_catalog, specific_schema, specific_name) </para>
        </listitem>
        <listitem>
          <para>(array_spec) references <link linkend="is:_element_types">_element_types</link>(specific_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_table_indexes">
    <title>_table_indexes table</title>
    <para>List of tables' indexes which do not relate to primary keys</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>index_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the catalog that contains the index</entry></row><row><entry>index_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Name of the schema that contains the index</entry></row><row><entry>index_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>is_unique</entry><entry>boolean</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>index_def</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Index definition</entry></row><row><entry>index_type</entry><entry>string</entry><entry/><entry>Yes</entry><entry>Database specific type of index such as BTREE, ...</entry></row><row><entry>extra</entry><entry>string</entry><entry/><entry>Yes</entry><entry>CSV string with: ASCENDING, ...</entry></row><row><entry>index_owner</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>index_comments</entry><entry>text</entry><entry/><entry>Yes</entry><entry></entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(table_catalog, table_schema, table_name) references <link linkend="is:_tables">_tables</link>(table_catalog, table_schema, table_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_index_column_usage">
    <title>_index_column_usage table</title>
    <para>List of the tables' columns involved in an index listed in the _table_indexes table</para>
    <para>The following table describes the columns:<informaltable frame="all"><tgroup cols="5" colsep="1" rowsep="1" align="justify"><thead><row><entry>Column name</entry><entry>Type</entry><entry>Key</entry><entry>Can be NULL</entry><entry>description</entry></row></thead><tbody><row><entry>index_catalog</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>index_schema</entry><entry>string</entry><entry/><entry>Yes</entry><entry></entry></row><row><entry>index_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_catalog</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_schema</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>table_name</entry><entry>string</entry><entry>Yes</entry><entry>No</entry><entry></entry></row><row><entry>column_name</entry><entry>string</entry><entry>Yes</entry><entry>Yes</entry><entry></entry></row><row><entry>column_expr</entry><entry>string</entry><entry>Yes</entry><entry>Yes</entry><entry></entry></row><row><entry>ordinal_position</entry><entry>gint</entry><entry/><entry>No</entry><entry>Column position in the index, starts at 1</entry></row></tbody></tgroup></informaltable></para>
    <para>
      <itemizedlist>
        <listitem>
          <para>(index_name, table_catalog, table_schema, table_name) references <link linkend="is:_table_indexes">_table_indexes</link>(index_name, table_catalog, table_schema, table_name) </para>
        </listitem>
      </itemizedlist>
    </para>
  </sect3>
  <sect3 id="is:_all_types">
    <title>_all_types view</title>
    <para>List of all the data types</para>
    <para>Definition is:<programlisting width="80">SELECT short_type_name AS short_type_name, gtype, full_type_name AS full_type_name, comments, internal AS internal, synonyms,
       NULL AS domain_catalog, NULL AS domain_schema, NULL AS domain_name,
       NULL AS udt_catalog, NULL AS udt_schema, NULL AS udt_name
       FROM _builtin_data_types
UNION
SELECT udt_short_name, udt_gtype, udt_full_name, udt_comments, udt_internal, NULL,
       NULL, NULL, NULL, udt_catalog, udt_schema, udt_name FROM _udt
UNION
SELECT domain_short_name, domain_gtype, domain_full_name, domain_comments, domain_internal, NULL,
       domain_catalog, domain_schema, domain_name , NULL, NULL, NULL FROM _domains</programlisting></para>
  </sect3>
  <sect3 id="is:_detailed_fk">
    <title>_detailed_fk view</title>
    <para>For each foreign key constraint, lists all the tables' columns involved and the constraint name</para>
    <para>Definition is:<programlisting width="80">SELECT rc.table_catalog as fk_table_catalog, rc.table_schema as fk_table_schema, rc.table_name as fk_table_name, kc1.column_name as fk_column,
      rc.ref_table_catalog as ref_table_catalog, rc.ref_table_schema as ref_table_schema, rc.ref_table_name as ref_table_name, kc2.column_name as ref_column,
      rc.constraint_name as fk_constraint_name, kc1.ordinal_position as ordinal_position
      FROM _referential_constraints rc 
      INNER JOIN _key_column_usage kc2 ON (rc.ref_table_catalog=kc2.table_catalog AND rc.ref_table_schema=kc2.table_schema AND rc.ref_table_name=kc2.table_name AND rc.ref_constraint_name=kc2.constraint_name) 
      INNER JOIN _key_column_usage kc1 ON (rc.table_catalog=kc1.table_catalog AND rc.table_schema=kc1.table_schema AND rc.table_name=kc1.table_name AND rc.constraint_name=kc1.constraint_name) 
      WHERE kc1.ordinal_position = kc2.ordinal_position 
      ORDER BY rc.table_catalog, rc.table_schema, rc.table_name, kc1.ordinal_position
    </programlisting></para>
  </sect3>
</sect2>