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

原文地址:https://www.cnblogs.com/fanweisheng/p/11077560.html

时间: 2024-07-30 05:49:28

CREATE OPERATOR CLASS - 定义一个新的操作符类的相关文章

CREATE OPERATOR - 定义一个新的操作符

SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ] [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ] [, RESTRICT = res_proc ] [, JOIN = join_proc ] [, HASHES ] [, MERGES ] [, SORT1 = left_sort_op ] [,

CREATE FUNCTION - 定义一个新函数

SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE langname | IMMUTABLE | STABLE | VOLATILE | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, prop, descriptor) 参数 obj 需要定义属性的对象. prop 需定义或修改的属性的名字. descriptor 将被定义或修改的属性的描述符. 返回值 返回传入函数的对象,即第一个参数obj 描述EDIT 该方法允许精确添加或修改对象的属性.一般情况下,我们为对象添加属性是通过

C++中定义一个不能被继承的类

1.一种错误的解法 最开始是从构造函数开始着手(先声明这种方法不能定义一个不能被继承的类,这是一种错误的方法,但是很容易往这方面想),假设存在下面的继承体系: 现在假设B是一个不能被继承的类,那么如果存在B的子类C,那么C的构造过程应该会报错,那么如何能够让B能正常构造而C不能正常构造呢?首先A,B,C的构造函数和析构函数都假设是public的,最开始想的是让B私有继承自A,根据private继承的特性,父类中public和protected的成员在子类中都会变成private的,那么A的构造函

CREATE SCHEMA - 定义一个新的模式

SYNOPSIS CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ] DESCRIPTION 描述 CREATE SCHEMA 将在当前数据库里输入一个新的模式. 该模式名将在当前数据库里现存的所有模式名中唯一. 模式实际上是一个名字空间: 它包含命名对象(表,数据

CREATE INDEX - 定义一个新索引

SYNOPSIS CREATE [ UNIQUE ] INDEX name ON table [ USING method ] ( { column | ( expression ) } [ opclass ] [, ...] ) [ WHERE predicate ] DESCRIPTION 描述 CREATE INDEX 在指定的表上构造一个名为 index_name 的索引.索引主要用来提高数据库性能.但是如果不恰当的使用将导致性能的下降. 索引的键字字段是以字段名的方式声明的,或者是可选

CREATE TABLE - 定义一个新表

SYNOPSIS CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ] | table_constraint | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ... ] )

CREATE DOMAIN - 定义一个新域

SYNOPSIS CREATE DOMAIN name [AS] data_type [ DEFAULT expression ] [ constraint [ ... ] ] where constraint is: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK (expression) } DESCRIPTION 描述 CREATE DOMAIN 创建一个新的数据域. 定义域的用户成为其所有者. 如果给出一个模式名称(比如,

CREATE RULE - 定义一个新的重写规则

SYNOPSIS CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ INSTEAD ] { NOTHING | command | ( command ; command ... ) } DESCRIPTION 描述 CREATE RULE 定义一个适用于特定表或者视图的新规则. CREATE OR REPLACE RULE 要么是创建一个新规则, 要么是用一个同表上的同名规则替换现有规则.