The procedures described thus far let you define new types, new
functions, and new operators. However, we cannot yet define a
secondary index (such as a B-tree, R-tree, or hash access method)
over a new type, nor associate operators of a new type with secondary
To do these things, we must define an operator class
for the new data type. We will describe operator classes in the
context of a running example: a new operator
class for the B-tree access method that stores and
sorts complex numbers in ascending absolute value order.
Note: Prior to PostgreSQL release 7.3, it was
necessary to make manual additions to
pg_amop, pg_amproc, and
pg_opclass in order to create a user-defined
operator class. That approach is now deprecated in favor of
using CREATE OPERATOR CLASS, which is a much simpler
and less error-prone way of creating the necessary catalog entries.