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);
CREATE OPERATOR CLASS - 定义一个新的操作符类的更多相关文章
- CREATE OPERATOR - 定义一个新的操作符
SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ...
- CREATE CONSTRAINT TRIGGER - 定义一个新的约束触发器
SYNOPSIS CREATE CONSTRAINT TRIGGER name AFTER events ON tablename constraint attributes FOR EACH ROW ...
- CREATE FUNCTION - 定义一个新函数
SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE lang ...
- CREATE AGGREGATE - 定义一个新的聚集函数
SYNOPSIS CREATE AGGREGATE name ( BASETYPE = input_data_type, SFUNC = sfunc, STYPE = state_data_type ...
- Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...
- Python tricks(1) -- 动态定义一个新变量
python是动态语言, 无需声明变量即可使用. 传递一个tuple, list或者dict等等方式, 有时候这种方式的使用不是很好. 对于tuple和list来说都是用下标的访问方式(即使用[]), ...
- Hibernate的多表查询,分装到一个新的实体类中的一个方法
不知道是否还有其他方法实现,请高人指点. 如果涉及到多张表多字段查询,并且想利用查询出来的字段在界面层构建一个新的实体类,可以使用这种方法: 如果查询出来的多字段中,有多个字段的名字都相同(如想查询出 ...
- C++定义一个简单的Computer类
/*定义一个简单的Computer类 有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等, 有两个公有成员函数run.stop.cpu为CPU类的一个对象, ram为RAM类的一个对象, ...
- Directx11教程(8) 一个新的camera类
原文:Directx11教程(8) 一个新的camera类 本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类.并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的 ...
随机推荐
- HDU3642 Get The Treasury —— 求矩形交体积 线段树 + 扫描线 + 离散化
题目链接:https://vjudge.net/problem/HDU-3642 Jack knows that there is a great underground treasury in a ...
- 利用js和CSS实现网页局部打印
1 局部打印方法: 作用:将id为dayin的内容,新建页面并打印,可解决打印某页面中的部分内容的问题.使用方法:将要打印的内容通过 <span id="dayin"> ...
- 四:网络--NSURLConnection基本使用
一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... ...
- 《编程珠玑,字字珠玑》读书笔记完结篇——AVL树
写在最前面的 手贱翻开了<珠玑>的最后几章,所以这一篇更多是关于13.14.15章的内容.这篇文章的主要内容是“AVL树”,即平衡树,比红黑树低一个等次.捣乱真惹不起红黑树,情况很复杂:而 ...
- wireshark笔记(1)之工具认识
1 下载链接 https://www.wireshark.org/ 安装只需要注意同时会安装winpcap就好了 相关链接:www.wiresharkbook.com //书籍 英文 www.wik ...
- java笔记之IO4文本复制
* 复制文本文件. * * 数据源:从哪里来 * a.txt -- 读取数据 -- FileInputStream * * 目的地:到哪里去 * b.txt -- 写数据 -- FileOut ...
- Tomcat相关的LNMT和LAMT
Tomcat相关的LNMT和LAMT LNMT:Linux Nginx MySQL Tomcat Client (http) --> nginx (reverse proxy)(http) -- ...
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处 (转载)
转自:http://blog.csdn.net/reille/article/details/7161942 作者:reille 本博客网址:http://blog.csdn.net/reille/, ...
- docker学习教程
我们的docker学习教程可以分为以下几个部分,分别是: 第一:docker基础学习 第二:docker日志管理 第三:docker监控管理 第四:docker三剑客之一:docker-machine ...
- 配置Ubuntu16.04第03步:安装搜狗输入法
1.进入搜狗官网:https://pinyin.sogou.com/linux/ ,下载搜狗输入法安装包 2.使用dpkg命令安装Deb包: sudo dpkg -i sogoupinyin_2.0. ...