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