CREATE OPERATOSQLL-SLanguage Statements (CREATE1OPERATOR CLASS(l)
NAME
CREATE OPERATOR CLASS - define a new operator class for
indexes
SYNOPSIS
CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING access_method AS
{ OPERATOR strategy_number operator_id [ ( type, type ) ] [ RECHECK ]
| FUNCTION support_number func_name ( parameter_types )
| STORAGE storage_type
} [, ... ]
INPUTS
name The name of the operator class to be created. The name
may be schema-qualified.
DEFAULT
If present, the operator class will become the default
index operator class for its data type. At most one
operator class can be the default for a specific data
type and access method.
data_type
The column data type that this operator class is for.
access_method
The name of the index access method this operator class
is for.
strategy_number
The index access method's strategy number for an
operator associated with the operator class.
operator_id
The identifier (optionally schema-qualified) of an
operator associated with the operator class.
type The input data type(s) of an operator, or NONE to
signify a left-unary or right-unary operator. The input
data types may be omitted in the normal case where they
are the same as the operator class's data type.
RECHECK
If present, the index is ``lossy'' for this operator,
and so the tuples retrieved using the index must be
rechecked to verify that they actually satisfy the
qualification clause involving this operator.
support_number
The index access method's support procedure number for
a function associated with the operator class.
Page 1 (printed 3/24/03)
CREATE OPERATOSQLL-SLanguage Statements (CREATE1OPERATOR CLASS(l)
func_name
The name (optionally schema-qualified) of a function
that is an index access method support procedure for
the operator class.
parameter_types
The parameter data type(s) of the function.
storage_type
The data type actually stored in the index. Normally
this is the same as the column data type, but some
index access methods (only GIST at this writing) allow
it to be different. The STORAGE clause must be omitted
unless the index access method allows a different type
to be used.
OUTPUTS
CREATE OPERATOR CLASS
Message returned if the operator class is successfully
created.
DESCRIPTION
CREATE OPERATOR CLASS defines a new operator class, name.
An operator class defines how a particular data type can be
used with an index. The operator class specifies that
certain operators will fill particular roles or
``strategies'' for this data type and this access method.
The operator class also specifies the support procedures to
be used by the index access method when the operator class
is selected for an index column. All the operators and
functions used by an operator class must be defined before
the operator class is created.
If a schema name is given then the operator class is created
in the specified schema. Otherwise it is created in the
current schema (the one at the front of the search path; see
CURRENT_SCHEMA()). Two operator classes in the same schema
can have the same name only if they are for different index
access methods.
The user who defines an operator class becomes its owner.
Presently, the creating user must be a superuser. (This
restriction is made because an erroneous operator class
definition could confuse or even crash the server.)
CREATE OPERATOR CLASS does not presently check whether the
class definition includes all the operators and functions
required by the index access method. It is the user's
responsibility to define a valid operator class.
Refer to the chapter on interfacing extensions to indexes in
Page 2 (printed 3/24/03)
CREATE OPERATOSQLL-SLanguage Statements (CREATE1OPERATOR CLASS(l)
the PostgreSQL Programmer's Guide for further information.
NOTES
Refer to DROP OPERATOR CLASS [drop_operator_class(l)] to
delete user-defined operator classes from a database.
USAGE
The following example command defines a GiST index operator
class for data type _int4 (array of int4). See
contrib/intarray/ for the complete example.
CREATE OPERATOR CLASS gist__int_ops
DEFAULT FOR TYPE _int4 USING gist AS
OPERATOR 3 &&,
OPERATOR 6 = RECHECK,
OPERATOR 7 @,
OPERATOR 8 ~,
OPERATOR 20 @@ (_int4, query_int),
FUNCTION 1 g_int_consistent (internal, _int4, int4),
FUNCTION 2 g_int_union (bytea, internal),
FUNCTION 3 g_int_compress (internal),
FUNCTION 4 g_int_decompress (internal),
FUNCTION 5 g_int_penalty (internal, internal, internal),
FUNCTION 6 g_int_picksplit (internal, internal),
FUNCTION 7 g_int_same (_int4, _int4, internal);
The OPERATOR, FUNCTION, and STORAGE clauses may appear in
any order.
COMPATIBILITY
SQL92
CREATE OPERATOR CLASS is a PostgreSQL extension. There is
no CREATE OPERATOR CLASS statement in SQL92.
Page 3 (printed 3/24/03)