pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
CREATE OPERATOR CLASS — 定义一个新的操作符类
CREATE OPERATOR CLASSname[ DEFAULT ] FOR TYPEdata_typeUSINGindex_methodAS { OPERATORstrategy_numberoperator_name[ (op_type,op_type) ] [ RECHECK ] | FUNCTIONsupport_numberfuncname(argument_type[, ...] ) | STORAGEstorage_type} [, ... ]
CREATE OPERATOR CLASS 创建一个新的操作符类。 操作符类定义一种特定的数据类型如何与 索引一起使用。操作符类指定某些操作符将 为这种数据类型和这种索引方法填充特定的角色或 “策略”。操作符类还指定当为一个 索引列选择该操作符类时索引方法要使用的 支持过程。操作符类使用的所有操作符和函数 都必须在创建操作符类之前定义。
如果给出了模式名,则操作符类在 指定的模式中创建。否则它在当前模式中创建。 同一模式中的两个操作符类只有在 用于不同索引方法时才能同名。
定义操作符类的用户成为它的拥有者。目前, 创建者必须是超级用户。(这个限制是因为 一个错误的操作符类定义可能混淆甚至使 服务器崩溃。)
CREATE OPERATOR CLASS 目前不 检查操作符类定义是否包含该索引方法所需的全部操作符和函数。定义一个有效的操作符类是 用户的责任。
进一步的信息请参阅 第 33.13 节。
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 子句可以按任意顺序出现。
下面的示例命令为数据类型 _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);
CREATE OPERATOR CLASS 是一种 PostgreSQL 扩展。SQL 标准中没有 CREATE OPERATOR CLASS 语句。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。