↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

CREATE OPERATOR CLASS

CREATE OPERATOR CLASS — 为索引定义一个新的操作符类

大纲

CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING access_method AS
  {  OPERATOR strategy_number operator_id [ ( type, type ) ] [ RECHECK ]
   | FUNCTION support_number func_name ( parameter_types )
   | STORAGE storage_type
  } [, ... ]
  

输入

name

要创建的操作符类的名称。 该名称可以带模式限定。

DEFAULT

如果出现,该操作符类将成为其数据类型的默认 索引操作符类。对于一种特定的数据类型和访问方法, 最多只有一个操作符类可以是默认的。

data_type

该操作符类所针对的列数据类型。

access_method

该操作符类所针对的索引访问方法的名称。

strategy_number

与操作符类关联的操作符的索引访问方法 策略号。

operator_id

与操作符类关联的操作符的 标识符(可带模式限定)。

type

操作符的输入数据类型,或 NONE 表示 左一元或右一元操作符。在输入数据类型与 操作符类的数据类型相同的正常情况下, 可以省略输入数据类型。

RECHECK

如果出现,索引对该操作符是 “有损的”,因此使用该索引检索出的 元组必须重新检查,以验证它们确实满足涉及 该操作符的限定子句。

support_number

与操作符类关联的函数的 索引访问方法支持过程号。

func_name

作为该操作符类的索引访问方法支持过程的 函数的名称(可带模式限定)。

parameter_types

函数的参数数据类型。

storage_type

实际存储在索引中的数据类型。通常它与列数据类型 相同,但某些索引访问方法(本文撰写时只有 GIST)允许它不同。除非索引访问方法 允许使用不同的类型,否则必须省略 STORAGE 子句。

输出

CREATE OPERATOR CLASS

操作符类被成功创建时返回的消息。

描述

CREATE OPERATOR CLASS 定义一个新的操作符类 name。

操作符类定义一种特定的数据类型如何与 索引一起使用。操作符类指定某些操作符将 为这种数据类型和这种访问方法填充特定的角色或 “策略”。操作符类还指定当为一个 索引列选择该操作符类时索引访问方法要使用的 支持过程。操作符类使用的所有操作符和函数 都必须在创建操作符类之前定义。

如果给出了模式名,则操作符类在 指定的模式中创建。否则它在当前模式中创建(即 搜索路径最前面的那个模式;见 CURRENT_SCHEMA())。同一模式中的两个操作符类只有在 用于不同索引访问方法时才能同名。

定义操作符类的用户成为它的拥有者。目前, 创建者必须是超级用户。(这个限制是因为 一个错误的操作符类定义可能混淆甚至使 服务器崩溃。)

CREATE OPERATOR CLASS 目前不 检查该类定义是否包含索引访问方法所需的全部操作符和函数。定义一个有效的操作符类是 用户的责任。

进一步的信息请参阅PostgreSQL 程序员指南 中关于把扩展接入索引的一章。

注意

要从数据库中删除用户定义的操作符类,请参阅 DROP OPERATOR CLASS 。

用法

下面的示例命令为数据类型 _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);
  

OPERATOR、FUNCTION 和 STORAGE 子句可以按任意顺序出现。

兼容性

SQL92

CREATE OPERATOR CLASS 是一种 PostgreSQL 扩展。 SQL92 中没有 CREATE OPERATOR CLASS 语句。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。