CREATE OPERATOR CLASS(7)

NAME
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()）。 在同一個模式中的兩個運算子表可以有同樣的名字，但它們必須用於不同的索引方法。

 定義運算子表的使用者成為其所有者。目前，創造者必須是超級使用者。 （作這樣的限制是因為一個有問題的運算子表定義會讓伺服器困惑，甚至崩潰。）

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 子句可以按照任意順序出現。

EXAMPLES 例子

 下面的例子命令為資料型別 _int4（int4 的陣列）定義了一個 GiST 索引運算子表。 參閱 contrib/intarray/ 獲取完整的例子。

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

COMPATIBILITY 相容性

CREATE OPERATOR CLASS 是一個 PostgreSQL 擴充套件。 在 SQL 標準中沒有 CREATE OPERATOR CLASS。

SEE ALSO 參見
ALTER OPERATOR CLASS [alter_operator_class(7)], DROP OPERATOR CLASS [drop_operator_class(l)]

譯者
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh