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

相關文章
相關標籤/搜索