The catalog pg_opclass defines index access method operator classes. Each operator class defines semantics for index columns of a particular data type and a particular index access method. Note that there can be multiple operator classes for a given data type/access method combination, thus supporting multiple behaviors.
Operator classes are described at length in Section 31.14.
Table 41-22. pg_opclass Columns
|opcamid||oid||pg_am.oid||Index access method operator class is for|
|opcname||name||Name of this operator class|
|opcnamespace||oid||pg_namespace.oid||Namespace of this operator class|
|opcowner||int4||pg_shadow.usesysid||Operator class owner|
|opcintype||oid||pg_type.oid||Data type that the operator class indexes|
|opcdefault||bool||True if this operator class is the default for opcintype|
|opckeytype||oid||pg_type.oid||Type of data stored in index, or zero if same as opcintype|
The majority of the information defining an operator class is actually not in its pg_opclass row, but in the associated rows in pg_amop and pg_amproc. Those rows are considered to be part of the operator class definition — this is not unlike the way that a relation is defined by a single pg_class row plus associated rows in pg_attribute and other tables.