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 } [, ... ]
CREATE OPERATOR CLASS 定义一个新的操做符表。 一个操做符表定义一种特定的数据类型能够如何与一种索引一块儿使用。 操做符表声明特定的操做符能够为这种数据类型以及这种索引方法填充特定角色或者"策略"。 操做符表还声明索引方法在为一个索引字段选定该操做符表的时候要使用的支持过程。 全部操做符表使用的函数和操做符都必须在建立操做符表以前定义。数组
若是给出了模式名字,那么操做符表就在指定的模式中建立。 不然就在当前模式中建立(在搜索路径前面的那个;参阅 CURRENT_SCHEMA())。 在同一个模式中的两个操做符表能够有一样的名字,但它们必须用于不一样的索引方法。服务器
定义操做符表的用户成为其全部者。目前,创造者必须是超级用户。 (做这样的限制是由于一个有问题的操做符表定义会让服务器困惑,甚至崩溃。)ide
CREATE OPERATOR CLASS 目前并不检查这个类定义是否包含全部索引方法须要操做符以及函数。 定义一个合法的操做符表是用户的责任。函数
参考 ``Interfacing Extensions to Indexes'' 获取更多信息。索引
OPERATOR,FUNCTION,和 STORAGE 子句能够按照任意顺序出现。ci
下面的例子命令为数据类型 _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);