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

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

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

    SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ...

  2. CREATE CONSTRAINT TRIGGER - 定义一个新的约束触发器

    SYNOPSIS CREATE CONSTRAINT TRIGGER name AFTER events ON tablename constraint attributes FOR EACH ROW ...

  3. CREATE FUNCTION - 定义一个新函数

    SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE lang ...

  4. CREATE AGGREGATE - 定义一个新的聚集函数

    SYNOPSIS CREATE AGGREGATE name ( BASETYPE = input_data_type, SFUNC = sfunc, STYPE = state_data_type ...

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

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

  6. Python tricks(1) -- 动态定义一个新变量

    python是动态语言, 无需声明变量即可使用. 传递一个tuple, list或者dict等等方式, 有时候这种方式的使用不是很好. 对于tuple和list来说都是用下标的访问方式(即使用[]), ...

  7. Hibernate的多表查询,分装到一个新的实体类中的一个方法

    不知道是否还有其他方法实现,请高人指点. 如果涉及到多张表多字段查询,并且想利用查询出来的字段在界面层构建一个新的实体类,可以使用这种方法: 如果查询出来的多字段中,有多个字段的名字都相同(如想查询出 ...

  8. C++定义一个简单的Computer类

    /*定义一个简单的Computer类 有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等, 有两个公有成员函数run.stop.cpu为CPU类的一个对象, ram为RAM类的一个对象, ...

  9. Directx11教程(8) 一个新的camera类

    原文:Directx11教程(8) 一个新的camera类      本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类.并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的 ...

随机推荐

  1. [原创] [C#] 转换Excel数字列号为字母列号

    转换Excel数字列号为字母列号 例如: 0 -> A 26 -> AA private static string GetColumnChar(int col) { ; ; ) ) + ...

  2. YTU 2958: 代码填充--雨昕学画画

    2958: 代码填充--雨昕学画画 时间限制: 1 Sec  内存限制: 128 MB 提交: 156  解决: 102 题目描述 雨昕开始学画水彩画,老师给雨昕一个形状(Shape)类,雨昕在Sha ...

  3. BZOJ1854:游戏(二分图匹配)

    lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...

  4. Watir: 右键点击实例(某些如果应用AutoIt来做会更加简单高效)

    require 'watir' module Watir class Element def top_edge assert_exists assert_enabled ole_object.getB ...

  5. memcached value最大限制只能是1M吗

    关于memcached的value最大是1M的限制很多人都知道,但是如果你以为我还要说这个事情,那你就错了. 之前的老版本确实是只能是1M,但是根据git记录,其实2009年以后的版本这个value最 ...

  6. form的一个特性

    在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一个特性

  7. 彻底解决SysFader:IEXPLORE.EXE应用程序错误

    彻底解决SysFader:IEXPLORE.EXE应用程序错误 转载于 西部e网(weste.net) 最近安装了IE8浏览器玩玩,但是发现一个严重的问题,就是在访问某些页面的时候,经常会出现“ysF ...

  8. 【黑金教程笔记之002】【建模篇】【Lab 01 永远的流水灯】—笔记&勘误

    学习并行操作的思想. 勘误001: Page 17,模块图下方,“扫描频配置定为100Hz”应为10Hz. 勘误002: Page 17,最后一行 “10ms”应为100ms:“2.5ms”应为25m ...

  9. mysql 里面的isnull()和ifnull() is null 和 is not null

    usergrade表 1.找到里面username是null的行 SELECT * FROM usergrade WHERE ISNULL(USERNAME) SELECT * FROM usergr ...

  10. C# DateTime.Now 详解

    //2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...