September 26, 2024: PostgreSQL 17 Released!
Supported Versions: Current (17) / 16 / 15 / 14 / 13 / 12
Development Versions: devel
Unsupported versions: 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

3.22. pg_opclass

pg_opclass defines index access method operator classes. Each operator class defines semantics for index columns of a particular datatype and a particular index access method. Note that there can be multiple operator classes for a given datatype/access method combination, thus supporting multiple behaviors.

Operator classes are described at length in the Programmer's Guide.

Table 3-22. pg_opclass Columns

Name Type References Description
opcamid oid pg_am.oid index access method opclass is for
opcname name   name of this opclass
opcnamespace oid pg_namespace.oid namespace of this opclass
opcowner int4 pg_shadow.usesysid opclass owner
opcintype oid pg_type.oid type of input data for opclass
opcdefault bool   true if opclass is default for opcintype
opckeytype oid pg_type.oid type of index data, 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.