51.26. pg_index
  The catalog
  
   pg_index
  
  contains part of the information
   about indexes.  The rest is mostly in
  
   pg_class
  
  .
 
   
    Table 51.26. 
    
     pg_index
    
    Columns
   
  
| Name | Type | References | Description | 
|---|---|---|---|
| 
        indexrelid
        | 
        oid
        | 
        
          | The OID of the 
        pg_class
       entry for this index | 
| 
        indrelid
        | 
        oid
        | 
        
          | The OID of the 
        pg_class
       entry for the table this index is for | 
| 
        indnatts
        | 
        int2
        | The total number of columns in the index (duplicates 
        pg_class.relnatts
       ); this number includes both key and included attributes | |
| 
        indnkeyatts
        | 
        int2
        | The number of key columns in the index, not counting any included columns , which are merely stored and do not participate in the index semantics | |
| 
        indisunique
        | 
        bool
        | If true, this is a unique index | |
| 
        indisprimary
        | 
        bool
        | If true, this index represents the primary key of the table
      ( 
        indisunique
       should always be true when this is true) | |
| 
        indisexclusion
        | 
        bool
        | If true, this index supports an exclusion constraint | |
| 
        indimmediate
        | 
        bool
        | If true, the uniqueness check is enforced immediately on
       insertion
       (irrelevant if 
        indisunique
       is not true) | |
| 
        indisclustered
        | 
        bool
        | If true, the table was last clustered on this index | |
| 
        indisvalid
        | 
        bool
        | If 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. | |
| 
        indcheckxmin
        | 
        bool
        | If 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 | |
| 
        indisready
        | 
        bool
        | If true, the index is currently ready for inserts.  False means the
       index must be ignored by 
        INSERT
       /
        UPDATE
       operations. | |
| 
        indislive
        | 
        bool
        | If false, the index is in process of being dropped, and should be ignored for all purposes (including HOT-safety decisions) | |
| 
        indisreplident
        | 
        bool
        | If true this index has been chosen as
       
        "
        
         replica identity
        
        "
       
       using 
        ALTER TABLE ... REPLICA IDENTITY USING INDEX
       ...
        | |
| 
        indkey
        | 
        int2vector
        | 
        
          | This 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. | 
| 
        indcollation
        | 
        oidvector
        | 
        
          | For 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. | 
| 
        indclass
        | 
        oidvector
        | 
        
          | For each column in the index key
       ( 
        indnkeyatts
       values), this contains the OID
       of the operator class to use.  See
         pg_opclass
        for details. | 
| 
        indoption
        | 
        int2vector
        | This 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. | |
| 
        indexprs
        | 
        pg_node_tree
        | Expression 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. | |
| 
        indpred
        | 
        pg_node_tree
        | Expression tree (in 
        nodeToString()
       representation) for partial index predicate.  Null if not a
       partial index. |