CREATE OPERATOR CLASS - 定义一个新的操做符类

SYNOPSIS

 

CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING index_method AS
  {  OPERATOR strategy_number operator_name [ ( op_type, op_type ) ] [ RECHECK ]
   | FUNCTION support_number funcname ( argument_type [, ...] )
   | STORAGE storage_type
  } [, ... ]

DESCRIPTION 描述

CREATE OPERATOR CLASS 定义一个新的操做符表。 一个操做符表定义一种特定的数据类型能够如何与一种索引一块儿使用。 操做符表声明特定的操做符能够为这种数据类型以及这种索引方法填充特定角色或者"策略"。 操做符表还声明索引方法在为一个索引字段选定该操做符表的时候要使用的支持过程。 全部操做符表使用的函数和操做符都必须在建立操做符表以前定义。数组


 若是给出了模式名字,那么操做符表就在指定的模式中建立。 不然就在当前模式中建立(在搜索路径前面的那个;参阅 CURRENT_SCHEMA())。 在同一个模式中的两个操做符表能够有一样的名字,但它们必须用于不一样的索引方法。服务器


 定义操做符表的用户成为其全部者。目前,创造者必须是超级用户。 (做这样的限制是由于一个有问题的操做符表定义会让服务器困惑,甚至崩溃。)ide

CREATE OPERATOR CLASS 目前并不检查这个类定义是否包含全部索引方法须要操做符以及函数。 定义一个合法的操做符表是用户的责任。函数


 参考 ``Interfacing Extensions to Indexes'' 获取更多信息。索引

PARAMETERS 参数

name

 将要建立的操做符表的名字。名字能够用模式修饰。
DEFAULT

 若是出现了这个键字,那么该操做符表将成为它的数据类型的缺省操做符表。 对于某个数据类型和访问方式而言,最多能够有一个操做符表是缺省的。
data_type

 这个操做符表处理的字段数据类型。
index_method

 这个操做符表处理的索引访问方式的名字。
strategy_number

 一个操做符和这个操做符表关联的索引访问方式的策略数。
operator_name

 一个和该操做符表关联的操做符的名字(能够用模式修饰)。
op_type

 一个操做符的输入数据类型,或者是 NONE 表示左目或者右目操做符。 一般状况下能够省略输入数据类型,由于这个时候它们和操做符表的数据类型相同。
RECHECK

 若是出现,那么索引对这个操做符是"lossy"(有损耗的), 所以,使用这个索引检索的行必须从新检查,以保证它们真正知足和此操做符相关的条件子句。
support_number

 索引方法对一个与操做符表关联的函数的支持过程数。
funcname

 一个函数的名字(能够有模式修饰),这个函数是索引访问方式对此操做符表的支持过程。
argument_types

 函数的参数数据类型。
storage_type

 实际存储在索引里的数据类型。一般它和字段数据类型相同, 可是一些索引方法(到目前为止只有 GIST)容许它是不一样的。 除非索引方法容许使用一种不一样的类型,不然必须省略 STORAGE 子句。

OPERATOR,FUNCTION,和 STORAGE 子句能够按照任意顺序出现。ci

 

EXAMPLES 例子


 下面的例子命令为数据类型 _int4(int4 的数组)定义了一个 GiST 索引操做符表。 参阅 contrib/intarray/ 获取完整的例子。it

 

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);

相关文章
相关标签/搜索