COLUMNS

Provides table column information.

Provides table column information.

Column Name Data Type Description
TABLE_ID INTEGER Catalog-assigned numeric value that uniquely identifies the table.
TABLE_SCHEMA VARCHAR Schema name for which information is listed in the database.
TABLE_NAME VARCHAR Table name for which information is listed in the database.
IS_SYSTEM_TABLE BOOLEAN Specifies whether the table is a system table.
COLUMN_ID VARCHAR Catalog-assigned VARCHAR value that uniquely identifies a table column.
COLUMN_NAME VARCHAR The column name for which information is listed in the database.
DATA_TYPE VARCHAR

Column's data type, for example VARCHAR(16), INTEGER, or FLOAT.

Arrays of primitive types show the name Array[type]. Other complex types show the inline name of the type, which match type_name values in the system table COMPLEX_TYPES. For example:

_ct_45035996273833610

DATA_TYPE_ID INTEGER Unique numeric ID assigned by the Vertica catalog, which identifies the data type.
DATA_TYPE_LENGTH INTEGER Maximum allowable length of the data type.
CHARACTER_MAXIMUM_LENGTH VARCHAR Maximum allowable length of the column.
NUMERIC_PRECISION INTEGER Number of significant decimal digits.
NUMERIC_SCALE INTEGER Number of fractional digits.
DATETIME_PRECISION INTEGER For TIMESTAMP data type, returns the declared precision; returns NULL if no precision was declared.
INTERVAL_PRECISION INTEGER Number of fractional digits retained in the seconds field.
ORDINAL_POSITION INTEGER Column position respective to other columns in the table.
IS_NULLABLE BOOLEAN Whether the column can contain NULL values.
COLUMN_DEFAULT VARCHAR Expression set on a column with the DEFAULT constraint.
COLUMN_SET_USING VARCHAR Expression set on a column with the SET USING constraint.
IS_IDENTITY BOOLEAN Whether the column is an IDENTITY column.

Examples

Retrieve table and column information from the COLUMNS table:

=> SELECT table_schema, table_name, column_name, data_type, is_nullable
   FROM columns WHERE table_schema = 'store'
   AND data_type = 'Date';
 table_schema |    table_name     |      column_name       | data_type | is_nullable
--------------+-------------------+------------------------+-----------+-------------
 store        | store_dimension   | first_open_date        | Date      | f
 store        | store_dimension   | last_remodel_date      | Date      | f
 store        | store_orders_fact | date_ordered           | Date      | f
 store        | store_orders_fact | date_shipped           | Date      | f
 store        | store_orders_fact | expected_delivery_date | Date      | f
 store        | store_orders_fact | date_delivered         | Date      | f
6 rows)

datetime_precision is NULL because the table definition declares no precision:

=> CREATE TABLE c (c TIMESTAMP);
CREATE TABLE
=> SELECT table_name, column_name, datetime_precision FROM columns
   WHERE table_name = 'c';
 table_name | column_name | datetime_precision
------------+-------------+--------------------
 c          | c           |
(1 row)

datetime_precision is 4 because the table definition declares precision as 4:

=> DROP TABLE c;
=> CREATE TABLE c (c TIMESTAMP(4));
CREATE TABLE
=> SELECT table_name, column_name, datetime_precision FROM columns
   WHERE table_name = 'c';
 table_name | column_name | datetime_precision
------------+-------------+--------------------
 c          | c           |                  4

An IDENTITY column sequence is defined in a table's DDL. Column values automatically increment as new rows are added. To identify tables with IDENTITY columns, query the is_identity column in COLUMNS:

=> CREATE TABLE employees (employeeID IDENTITY, fname varchar(36), lname varchar(36));
CREATE TABLE
=> SELECT table_name, column_name, is_identity FROM columns WHERE is_identity = 't';
 table_name | column_name | is_identity
------------+-------------+-------------
 employees  | employeeID  | t
(1 row)

You can query the SEQUENCES table to get detailed information about the IDENTITY column sequence in employees:

=> SELECT sequence_schema, sequence_name, identity_table_name, sequence_id FROM sequences WHERE identity_table_name ='employees';
 sequence_schema |      sequence_name       | identity_table_name |    sequence_id
-----------------+--------------------------+---------------------+-------------------
 public          | employees_employeeID_seq | employees           | 45035996273848816
(1 row)

For details about sequences and IDENTITY columns, see Sequences.