mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-02 10:21:17 +02:00
317 lines
9.8 KiB
Plaintext
317 lines
9.8 KiB
Plaintext
|
<!--
|
||
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_opclass.sgml,v 1.1 2002/07/29 22:14:10 tgl Exp $
|
||
|
PostgreSQL documentation
|
||
|
-->
|
||
|
|
||
|
<refentry id="SQL-CREATEOPCLASS">
|
||
|
<refmeta>
|
||
|
<refentrytitle id="sql-createopclass-title">CREATE OPERATOR CLASS</refentrytitle>
|
||
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
||
|
</refmeta>
|
||
|
<refnamediv>
|
||
|
<refname>
|
||
|
CREATE OPERATOR CLASS
|
||
|
</refname>
|
||
|
<refpurpose>
|
||
|
define a new operator class for indexes
|
||
|
</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<refsynopsisdivinfo>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsynopsisdivinfo>
|
||
|
<synopsis>
|
||
|
CREATE OPERATOR CLASS <replaceable class="parameter">name</replaceable> [ DEFAULT ] FOR TYPE <replaceable class="parameter">data_type</replaceable> USING <replaceable class="parameter">access_method</replaceable> AS
|
||
|
{ OPERATOR <replaceable class="parameter">strategy_number</replaceable> <replaceable class="parameter">operator_id</replaceable> [ ( <replaceable class="parameter">type</replaceable>, <replaceable class="parameter">type</replaceable> ) ] [ RECHECK ]
|
||
|
| FUNCTION <replaceable class="parameter">support_number</replaceable> <replaceable class="parameter">func_name</replaceable> ( <replaceable class="parameter">parameter_types</replaceable> )
|
||
|
| STORAGE <replaceable class="parameter">storage_type</replaceable>
|
||
|
} [, ... ]
|
||
|
</synopsis>
|
||
|
|
||
|
<refsect2 id="R2-SQL-CREATEOPCLASS-1">
|
||
|
<refsect2info>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsect2info>
|
||
|
<title>
|
||
|
Inputs
|
||
|
</title>
|
||
|
<para>
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">name</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The name of the operator class to be created.
|
||
|
The name may be schema-qualified.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><literal>DEFAULT</></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
If present, the operator class will become the default index
|
||
|
operator class for its datatype. At most one operator class
|
||
|
can be the default for a specific datatype and access method.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">data_type</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The column datatype that this operator class is for.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">access_method</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The name of the index access method this operator class is for.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">strategy_number</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The index access method's strategy number for an operator associated
|
||
|
with the operator class.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">operator_id</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The identifier (optionally schema-qualified) of an operator associated
|
||
|
with the operator class.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">type</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The input datatype(s) of an operator, or <literal>NONE</> to
|
||
|
signify a left-unary or right-unary operator. The input datatypes
|
||
|
may be omitted in the normal case where they are the same as the
|
||
|
operator class's datatype.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><literal>RECHECK</></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
If present, the index is <quote>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.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">support_number</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The index access method's support procedure number for a function
|
||
|
associated with the operator class.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">func_name</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The name (optionally schema-qualified) of a function that is
|
||
|
an index access method support procedure for the operator class.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">parameter_types</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The parameter datatype(s) of the function.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry>
|
||
|
<term><replaceable class="parameter">storage_type</replaceable></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
The datatype actually stored in the index. Normally this is the
|
||
|
same as the column datatype, but some index access methods (only
|
||
|
GIST at this writing) allow it to be different. The
|
||
|
<literal>STORAGE</> clause must be omitted unless the index access
|
||
|
method allows a different type to be used.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
</para>
|
||
|
</refsect2>
|
||
|
|
||
|
<refsect2 id="R2-SQL-CREATEOPCLASS-2">
|
||
|
<refsect2info>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsect2info>
|
||
|
<title>
|
||
|
Outputs
|
||
|
</title>
|
||
|
<para>
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><computeroutput>
|
||
|
CREATE OPERATOR CLASS
|
||
|
</computeroutput></term>
|
||
|
<listitem>
|
||
|
<para>
|
||
|
Message returned if the operator class is successfully created.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
</para>
|
||
|
</refsect2>
|
||
|
</refsynopsisdiv>
|
||
|
|
||
|
<refsect1 id="R1-SQL-CREATEOPCLASS-1">
|
||
|
<refsect1info>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsect1info>
|
||
|
<title>
|
||
|
Description
|
||
|
</title>
|
||
|
<para>
|
||
|
<command>CREATE OPERATOR CLASS</command> defines a new operator class,
|
||
|
<replaceable class="parameter">name</replaceable>.
|
||
|
</para>
|
||
|
<para>
|
||
|
An operator class defines how a particular datatype can be used with
|
||
|
an index. The operator class specifies that certain operators will fill
|
||
|
particular roles or <quote>strategies</> for this datatype 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.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
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 <literal>CURRENT_SCHEMA()</>).
|
||
|
Two operator classes in the same schema can have the same name only if they
|
||
|
are for different index access methods.
|
||
|
</para>
|
||
|
<para>
|
||
|
The user who defines an operator class becomes its owner. The user
|
||
|
must own the datatype for which the operator class is being defined,
|
||
|
and must have execute permission for all referenced operators and functions.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
<command>CREATE OPERATOR CLASS</command> 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.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Refer to the chapter on interfacing extensions to indexes in the
|
||
|
<citetitle>PostgreSQL Programmer's Guide</citetitle>
|
||
|
for further information.
|
||
|
</para>
|
||
|
|
||
|
<refsect2 id="R2-SQL-CREATEOPCLASS-3">
|
||
|
<refsect2info>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsect2info>
|
||
|
<title>
|
||
|
Notes
|
||
|
</title>
|
||
|
<para>
|
||
|
Refer to
|
||
|
<xref linkend="sql-dropopclass" endterm="sql-dropopclass-title">
|
||
|
to delete user-defined operator classes from a database.
|
||
|
</para>
|
||
|
</refsect2>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1 id="R1-SQL-CREATEOPCLASS-2">
|
||
|
<title>
|
||
|
Usage
|
||
|
</title>
|
||
|
<para>
|
||
|
The following example command defines a GiST index operator class
|
||
|
for datatype <literal>_int4</> (array of int4). See
|
||
|
<filename>contrib/intarray/</> for the complete example.
|
||
|
</para>
|
||
|
|
||
|
<programlisting>
|
||
|
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 (opaque, _int4, int4),
|
||
|
FUNCTION 2 g_int_union (bytea, opaque),
|
||
|
FUNCTION 3 g_int_compress (opaque),
|
||
|
FUNCTION 4 g_int_decompress (opaque),
|
||
|
FUNCTION 5 g_int_penalty (opaque, opaque, opaque),
|
||
|
FUNCTION 6 g_int_picksplit (opaque, opaque),
|
||
|
FUNCTION 7 g_int_same (_int4, _int4, opaque);
|
||
|
</programlisting>
|
||
|
|
||
|
<para>
|
||
|
The <literal>OPERATOR</>, <literal>FUNCTION</>, and <literal>STORAGE</>
|
||
|
clauses may appear in any order.
|
||
|
</para>
|
||
|
</refsect1>
|
||
|
|
||
|
<refsect1 id="R1-SQL-CREATEOPCLASS-3">
|
||
|
<title>
|
||
|
Compatibility
|
||
|
</title>
|
||
|
|
||
|
<refsect2 id="R2-SQL-CREATEOPCLASS-4">
|
||
|
<refsect2info>
|
||
|
<date>2002-07-28</date>
|
||
|
</refsect2info>
|
||
|
<title>
|
||
|
SQL92
|
||
|
</title>
|
||
|
|
||
|
<para>
|
||
|
<command>CREATE OPERATOR CLASS</command>
|
||
|
is a <productname>PostgreSQL</productname> extension.
|
||
|
There is no <command>CREATE OPERATOR CLASS</command>
|
||
|
statement in <acronym>SQL92</acronym>.
|
||
|
</para>
|
||
|
</refsect2>
|
||
|
</refsect1>
|
||
|
</refentry>
|
||
|
|
||
|
<!-- Keep this comment at the end of the file
|
||
|
Local variables:
|
||
|
mode: sgml
|
||
|
sgml-omittag:nil
|
||
|
sgml-shorttag:t
|
||
|
sgml-minimize-attributes:nil
|
||
|
sgml-always-quote-attributes:t
|
||
|
sgml-indent-step:1
|
||
|
sgml-indent-data:t
|
||
|
sgml-parent-document:nil
|
||
|
sgml-default-dtd-file:"../reference.ced"
|
||
|
sgml-exposed-tags:nil
|
||
|
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
||
|
sgml-local-ecat-files:nil
|
||
|
End:
|
||
|
-->
|