↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

System Catalogs / System catalogs

The catalog pg_index contains part of the information about indexes.

Reading PG 18current·documented in 24 of 24 versions, 7.4 to 20

Kind
System catalogs
Columns in this snapshot
21
Definition source
English manual
Metadata snapshot
18.6

Columns 21

As listed in the PostgreSQL 18 manual.

ColumnTypeDescription / reference
indexrelidoidNOT NULLThe OID of the pg_class entry for this index
pg_class.oid
indrelidoidNOT NULLThe OID of the pg_class entry for the table this index is for
pg_class.oid
indnattsint2NOT NULLThe total number of columns in the index (duplicates pg_class.relnatts); this number includes both key and included attributes
indnkeyattsint2NOT NULLThe number of key columns in the index, not counting any included columns, which are merely stored and do not participate in the index semantics
indisuniqueboolNOT NULLIf true, this is a unique index
indnullsnotdistinctboolNOT NULLThis value is only used for unique indexes. If false, this unique index will consider null values distinct (so the index can contain multiple null values in a column, the default PostgreSQL behavior). If it is true, it will consider null values to be equal (so the index can only contain one null value in a column).
indisprimaryboolNOT NULLIf true, this index represents the primary key of the table (indisunique should always be true when this is true)
indisexclusionboolNOT NULLIf true, this index supports an exclusion constraint
indimmediateboolNOT NULLIf true, the uniqueness check is enforced immediately on insertion (irrelevant if indisunique is not true)
indisclusteredboolNOT NULLIf true, the table was last clustered on this index
indisvalidboolNOT NULLIf true, the index is currently valid for queries. False means the index is possibly incomplete: it must still be modified by INSERT/UPDATE operations, but it cannot safely be used for queries. If it is unique, the uniqueness property is not guaranteed true either.
indcheckxminboolNOT NULLIf true, queries must not use the index until the xmin of this pg_index row is below their TransactionXmin event horizon, because the table may contain broken HOT chains with incompatible rows that they can see
indisreadyboolNOT NULLIf true, the index is currently ready for inserts. False means the index must be ignored by INSERT/UPDATE operations.
indisliveboolNOT NULLIf false, the index is in process of being dropped, and should be ignored for all purposes (including HOT-safety decisions)
indisreplidentboolNOT NULLIf true this index has been chosen as “replica identity” using ALTER TABLE ... REPLICA IDENTITY USING INDEX ...
indkeyint2vectorNOT NULLThis is an array of indnatts values that indicate which table columns this index indexes. For example, a value of 1 3 would mean that the first and the third table columns make up the index entries. Key columns come before non-key (included) columns. A zero in this array indicates that the corresponding index attribute is an expression over the table columns, rather than a simple column reference.
pg_attribute.attnum
indcollationoidvectorNOT NULLFor each column in the index key (indnkeyatts values), this contains the OID of the collation to use for the index, or zero if the column is not of a collatable data type.
pg_collation.oid
indclassoidvectorNOT NULLFor each column in the index key (indnkeyatts values), this contains the OID of the operator class to use. See pg_opclass for details.
pg_opclass.oid
indoptionint2vectorNOT NULLThis is an array of indnkeyatts values that store per-column flag bits. The meaning of the bits is defined by the index's access method.
indexprspg_node_treeExpression trees (in nodeToString() representation) for index attributes that are not simple column references. This is a list with one element for each zero entry in indkey. Null if all index attributes are simple references.
indpredpg_node_treeExpression tree (in nodeToString() representation) for partial index predicate. Null if not a partial index.
Column history across versions
Version history 11
  1. 14 → 15 changed
  2. 10 → 11 changed
  3. 9.6 → 10 reworded
  4. 9.3 → 9.4 changed
  5. 9.2 → 9.3 changed
  6. 9.1 → 9.2 reworded
  7. 9.0 → 9.1 changed
  8. 8.4 → 9.0 changed
  9. 8.2 → 8.3 changed
  10. 8.1 → 8.2 changed
  11. 8.0 → 8.1 changed

Definition snapshot: english-manuals:d827eeb0cb1d238c33ff0338ee3… · English manual source