华为云用户手册

  • 示例 --创建jim和tom用户。 openGauss=# CREATE USER jim PASSWORD '********'; openGauss=# CREATE USER tom PASSWORD '********'; --创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。 openGauss=# CREATE DATABASE music ENCODING 'GBK' template = template0; --创建数据库music2,并指定所有者为jim。 openGauss=# CREATE DATABASE music2 OWNER jim; --用模板template0创建数据库music3,并指定所有者为jim。 openGauss=# CREATE DATABASE music3 OWNER jim TEMPLATE template0; --设置music数据库的连接数为10。 openGauss=# ALTER DATABASE music CONNECTION LIMIT= 10; --将music名称改为music4。 openGauss=# ALTER DATABASE music RENAME TO music4; --将数据库music2的所属者改为tom。 openGauss=# ALTER DATABASE music2 OWNER TO tom; --设置music3的表空间为PG_DEFAULT。 openGauss=# ALTER DATABASE music3 SET TABLESPACE PG_DEFAULT; --关闭在数据库music3上缺省的索引扫描。 openGauss=# ALTER DATABASE music3 SET enable_indexscan TO off; --重置enable_indexscan参数。 openGauss=# ALTER DATABASE music3 RESET enable_indexscan; --删除数据库。 openGauss=# DROP DATABASE music2; openGauss=# DROP DATABASE music3; openGauss=# DROP DATABASE music4; --删除jim和tom用户。 openGauss=# DROP USER jim; openGauss=# DROP USER tom; --创建兼容TD格式的数据库。 openGauss=# CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C'; --创建兼容A格式的数据库。 openGauss=# CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'; --删除兼容TD、A格式的数据库。 openGauss=# DROP DATABASE td_compatible_db; openGauss=# DROP DATABASE ora_compatible_db;
  • 参数说明 database_name 数据库名称。 取值范围:字符串,要符合标识符命名规范。 OWNER [ = ] user_name 数据库所有者。缺省时,新数据库的所有者是当前用户。 取值范围:已存在的用户名。 TEMPLATE [ = ] template 模板名。即从哪个模板创建新数据库。 GaussDB 采用从模板数据库复制的方式来创建新的数据库。初始时,GaussDB包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。 取值范围:仅template0。 ENCODING [ = ] 'encoding' 指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。 不指定时,默认使用模板数据库的编码。模板数据库template0和template1的编码默认与操作系统环境相关。template1不允许修改字符编码,因此若要变更编码,请使用template0创建数据库。 常用取值:GBK、UTF8、Latin1、GB18030等,具体支持的字符集如下。 表1 GaussDB字符集 名称 描述 语言 是否服务器端? ICU(International Components for Unicode)? 字节/字符 别名 BIG5 Big Five 繁体中文 否 否 1-2 WIN950, Windows950 EUC_CN 扩展UNIX编码-中国 简体中文 是 是 1-3 - EUC_JP 扩展UNIX编码-日本 日文 是 是 1-3 - EUC_JIS_2004 扩展UNIX编码-日本, JIS X 0213 日文 是 否 1-3 - EUC_KR 扩展UNIX编码-韩国 韩文 是 是 1-3 - EUC_TW 扩展UNIX编码-中国台湾 繁体中文 是 是 1-3 - GB18030 国家标准 中文 是 否 1-4 - GBK 扩展国家标准 简体中文 是 否 1-2 WIN936, Windows936 ISO_8859_5 ISO 8859-5, ECMA 113 拉丁语/西里尔语 是 是 1 - ISO_8859_6 ISO 8859-6, ECMA 114 拉丁语/阿拉伯语 是 是 1 - ISO_8859_7 ISO 8859-7, ECMA 118 拉丁语/希腊语 是 是 1 - ISO_8859_8 ISO 8859-8, ECMA 121 拉丁语/希伯来语 是 是 1 - JOHAB JOHAB 韩语 否 否 1-3 - KOI8R KOI8-R 西里尔语(俄语) 是 是 1 KOI8 KOI8U KOI8-U 西里尔语(乌克兰语) 是 是 1 - LATIN1 ISO 8859-1, ECMA 94 西欧 是 是 1 ISO88591 LATIN2 ISO 8859-2, ECMA 94 中欧 是 是 1 ISO88592 LATIN3 ISO 8859-3, ECMA 94 南欧 是 是 1 ISO88593 LATIN4 ISO 8859-4, ECMA 94 北欧 是 是 1 ISO88594 LATIN5 ISO 8859-9, ECMA 128 土耳其语 是 是 1 ISO88599 LATIN6 ISO 8859-10, ECMA 144 日耳曼语 是 是 1 ISO885910 LATIN7 ISO 8859-13 波罗的海 是 是 1 ISO885913 LATIN8 ISO 8859-14 凯尔特语 是 是 1 ISO885914 LATIN9 ISO 8859-15 带欧罗巴和口音的LATIN1 是 是 1 ISO885915 LATIN10 ISO 8859-16, ASRO SR 14111 罗马尼亚语 是 否 1 ISO885916 MULE_INTERNAL Mule内部编码 多语种编辑器 是 否 1-4 - SJIS Shift JIS 日语 否 否 1-2 Mskanji, ShiftJIS, WIN932, Windows932 SHIFT_JIS_2004 Shift JIS, JIS X 0213 日语 否 否 1-2 - SQL_ASCII 未指定(见文本) 任意 是 否 1 - UHC 统一韩语编码 韩语 否 否 1-2 WIN949, Windows949 UTF8 Unicode, 8-bit 所有 是 是 1-4 Unicode WIN866 Windows CP866 西里尔语 是 是 1 ALT WIN874 Windows CP874 泰语 是 否 1 - WIN1250 Windows CP1250 中欧 是 是 1 - WIN1251 Windows CP1251 西里尔语 是 是 1 WIN WIN1252 Windows CP1252 西欧 是 是 1 - WIN1253 Windows CP1253 希腊语 是 是 1 - WIN1254 Windows CP1254 土耳其语 是 是 1 - WIN1255 Windows CP1255 希伯来语 是 是 1 - WIN1256 Windows CP1256 阿拉伯语 是 是 1 - WIN1257 Windows CP1257 波罗的海 是 是 1 - WIN1258 Windows CP1258 越南语 是 是 1 ABC, TCVN, TCVN5712, VSCII 需要注意并非所有的客户端API都支持上面列出的字符集。 SQL_ASCII设置与其他设置表现存在差异。如果服务器字符集是SQL_ASCII,服务器把字节值0-127根据 ASCII标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码, 因为这个声明会忽略编码。在大多数情况下,如果使用了任何非ASCII数据,那么请不要再使用SQL_ASCII进行设置,因为数据库无法转换或者校验非ASCII字符。 指定新的数据库字符集编码必须与所选择的本地环境中(LC_COLLATE和LC_CTYPE)的设置兼容。 当指定的字符编码集为GBK时,部分中文生僻字无法直接作为对象名。这是因为GBK第二个字节的编码范围在0x40-0x7E之间时,字节编码与ASCII字符@A-Z[\]^_`a-z{|}重叠。其中@[\]^_'{|}是数据库中的操作符,直接作为对象名时,会语法报错。例如“侤”字,GBK16进制编码为0x8240,第二个字节为0x40,与ASCII“@”符号编码相同,因此无法直接作为对象名使用。如果确实要使用,可以在创建和访问对象时,通过增加双引号来规避这个问题。 若客户端编码为A,服务器端编码为B,则需要满足数据库中存在编码格式A与B的转换。数据库能够支持的所有的编码格式转换详见系统表PG_CONVERSION(若无法转换,则建议客户端编码与服务器端编码保持一致,客户端编码可通过GUC参数client_encoding修改)。 LC_COLLATE [ = ] 'lc_collate' 指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。 该参数的使用会影响到对字符串的排序顺序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的字符集。 取值范围:操作系统支持的字符集。 LC_CTYPE [ = ] 'lc_ctype' 指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 取值范围:操作系统支持的字符分类。 对于lc_collate和lc_ctype参数的取值范围,取决于本地环境支持的字符集。例如:在Linux操作系统上,可通过locale -a命令获取操作系统支持的字符集列表,在应用lc_collate和lc_ctype参数时可从中选择用户需要的字符集和字符分类。 DBCOMPATIBILITY [ = ] 'compatibility_type' 指定兼容的数据库的类型,默认兼容O。 取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。 A兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。 将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。 PG兼容性下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。 TABLESPACE [ = ] tablespace_name 指定数据库对应的表空间。 取值范围:已存在表空间名。 CONNECTION LIMIT [ = ] connlimit 数据库可以接受的并发连接数。 系统管理员不受此参数的限制。 connlimit数据库主节点单独统计,数据库整体的连接数 = connlimit * 当前正常数据库主节点个数。 取值范围:[-1, 2^31-1]的整数。默认值为-1,表示没有限制。 有关字符编码的一些限制: 若区域设置为C(或POSIX),则允许所有的编码类型,但是对于其他的区域设置,字符编码必须和区域设置相同。 若字符编码方式是SQL_ASCII,并且修改者为管理员用户时,则字符编码可以和区域设置不相同。 编码和区域设置必须匹配模板数据库,除了将template0当作模板。 因为其他数据库可能会包含不匹配指定编码的数据,或者可能包含排序顺序受LC_COLLATE和LC_CTYPE影响的索引。复制这些数据会导致在新数据库中的索引失效。template0是不包含任何会受到影响的数据或者索引。
  • 语法格式 CREATE DATABASE database_name [ [ WITH ] { [ OWNER [=] user_name ] | [ TEMPLATE [=] template ] | [ ENCODING [=] 'encoding' ] | [ LC_COLLATE [=] 'lc_collate' ] | [ LC_CTYPE [=] 'lc_ctype' ] | [ DBCOMPATIBILITY [=] 'compatibilty_type' ] | [ TABLESPACE [=] tablespace_name ] | [ CONNECTION LIMIT [=] connlimit ]}[...] ];
  • GLOBAL_RECORD_RESET_TIME GLOBAL_RECORD_RESET_TIME用于获取数据库中各节点的“重置(重启,主备倒换,数据库删除)时间”的统计信息。 表1 GLOBAL_RECORD_RESET_TIME字段 名称 类型 描述 node_name text 节点名称。 reset_time timestamp with time zone 重置时间点。 父主题: Utility
  • 参数说明 CONCURRENTLY 以不加锁的方式删除索引。删除索引时,一般会阻塞其他语句对该索引所依赖表的访问。加此关键字,可实现删除过程中不做阻塞。 此选项只能指定一个索引的名称, 并且CASCADE选项不支持。 普通DROP INDEX命令可以在事务内执行,但是DROP INDEX CONCURRENTLY不可以在事务内执行。 IF EXISTS 如果指定的索引不存在,则发出一个notice而不是抛出一个错误。 index_name 要删除的索引名。 取值范围:已存在的索引。 CASCADE | RESTRICT CASCADE:表示允许级联删除依赖于该索引的对象。 RESTRICT:表示有依赖于此索引的对象存在时,该索引无法被删除。此选项为缺省值。
  • PG_ROLES PG_ROLES视图显示数据库角色的相关信息。初始化用户和具有sysadmin属性或createrole属性的用户可以查看全部角色的信息,其他用户只能查看自己的信息。 表1 PG_ROLES字段 名称 类型 引用 描述 rolname name - 角色名称。 rolsuper boolean - 该角色是否是拥有最高权限的初始系统管理员。 t(true):表示是。 f(false):表示否。 rolinherit boolean - 该角色是否继承角色的权限。 t(true):表示是。 f(false):表示否。 rolcreaterole boolean - 该角色是否可以创建其他的角色。 t(true):表示是。 f(false):表示否。 rolcreatedb boolean - 该角色是否可以创建数据库。 t(true):表示是。 f(false):表示否。 rolcatupdate boolean - 该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 t(true):表示是。 f(false):表示否。 rolcanlogin boolean - 该角色是否可以登录数据库。 t(true):表示是。 f(false):表示否。 rolreplication boolean - 该角色是否可以复制。 t(true):表示是。 f(false):表示否。 rolauditadmin boolean - 该角色是否为审计管理员。 t(true):表示是。 f(false):表示否。 rolsystemadmin boolean - 该角色是否为系统管理员。 t(true):表示是。 f(false):表示否。 rolconnlimit integer - 对于可以登录的角色,这里限制了该角色允许发起的最大并发连接数。 -1表示无限制。 rolpassword text - 密文存储后的用户密码,始终是********。 rolvalidbegin timestamp with time zone - 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 rolvaliduntil timestamp with time zone - 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 rolparentid oid PG_AUTHID.rolparentid 用户所在组用户的OID。 roltabspace text - 用户永久表存储空间限额,单位KB。 rolconfig text[] PG_DB_ROLE_SETTING.setconfig 运行时配置项的默认值。 oid oid PG_AUTHID.oid 角色的ID。 roluseft boolean PG_AUTHID.roluseft 角色是否可以操作外表。 t(true):表示是。 f(false):表示否。 rolkind "char" - 角色类型。 n:普通用户,即非永久用户。 p:永久用户。 nodegroup name - 该字段不支持。 roltempspace text - 用户临时表存储空间限额,单位为kB。 rolspillspace text - 用户算子落盘空间限额,单位为kB。 rolmonitoradmin boolean - 该角色是否为监控管理员。 t(true):表示是。 f(false):表示否。 roloperatoradmin boolean - 该角色是否为运维管理员。 t(true):表示是。 f(false):表示否。 rolpolicyadmin boolean - 该角色是否为安全策略管理员。 t(true):表示是。 f(false):表示否。 父主题: 系统视图
  • 处理方法 方法1:启动客户端环境中的haveged服务,增加系统熵池熵值以提高读取随机数的速度。启动命令为: systemctl start haveged 方法2:调整客户端jdk配置 打开$JAVA_PATH/jre/lib/security/java.security文件,修改以下两个配置项: securerandom.source=file:/dev/./urandom securerandom.strongAlgorithms=NativePRNGNonBlocking:SUN 方法2的本质是在获取强随机数时,使用伪随机数代替,减少需要消耗的熵值。会影响客户端所有使用该jdk的应用,在获取强随机数时会使用伪随机数代替。
  • SUMMARY_WORKLOAD_TRANSACTION 显示数据库内汇聚的负载事务信息。 表1 SUMMARY_WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter numeric 用户事务commit数量。 rollback_counter numeric 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total numeric 用户事务总响应时间(单位:微秒)。 bg_commit_counter numeric 后台事务commit数量。 bg_rollback_counter numeric 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total numeric 后台事务总响应时间(单位:微秒)。 父主题: Workload
  • 示例 --以默认方式启动事务。 openGauss=# START TRANSACTION; openGauss=# SELECT * FROM tpcds.reason; openGauss=# END; --以默认方式启动事务。 openGauss=# BEGIN; openGauss=# SELECT * FROM tpcds.reason; openGauss=# END; --以隔离级别为READ COMMITTED,读/写方式启动事务。 openGauss=# START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE; openGauss=# SELECT * FROM tpcds.reason; openGauss=# COMMIT;
  • 语法格式 格式一:START TRANSACTION格式 START TRANSACTION [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; 格式二:BEGIN格式 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ];
  • 参数说明 WORK | TRANSACTION BEGIN格式中的可选关键字,没有实际作用。 ISOLATION LEVEL 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 在事务中第一个数据修改语句(SELECT, INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 REPEATABLE READ: 可重复读隔离级别,仅仅看到事务开始之前提交的数据,它不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • THREAD_WAIT_STATUS 通过该视图可以检测当前节点中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。 表1 THREAD_WAIT_STATUS字段 名称 类型 描述 node_name text 当前节点的名称。 db_name text 数据库名称。 thread_name text 线程名称。 query_id bigint 查询ID,对应debug_query_id。 tid bigint 当前线程的线程号。 sessionid bigint session的ID。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。 smpid integer 并行线程的ID。 wait_status text 当前线程的等待状态。 wait_event text 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、I/O的信息;否则为空。 locktag text 当前线程正在等待锁的信息。 lockmode text 当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。 block_sessionid bigint 阻塞当前线程获取锁的会话标识。 global_sessionid text 全局会话ID。 父主题: Session/Thread
  • 功能描述 为当前事务做两阶段提交的准备。 在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到 (在事务提交的时候其效果会再次可见)。 如果PREPARE TRANSACTION因为某些原因失败,那么它就会变成一个ROLLBACK,当前事务被取消。
  • GS_MASKING_POLICY_FILTERS GS_MASKING_POLICY_FILTERS系统表记录动态数据脱敏策略对应的用户过滤条件,当用户条件满足FILTER条件时,对应的脱敏策略才会生效。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_MASKING_POLICY_FILTERS表字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 filtertype name 过滤类型。目前值仅为logical_expr。 filterlabelname name 过滤范围。目前值仅为logical_expr。 policyoid oid 该条用户过滤条件所属的脱敏策略oid,对应GS_MASKING_POLICY中的oid。 modifydate timestamp without time zone 该条用户过滤条件创建或修改的最新时间戳。 logicaloperator text 过滤条件的波兰表达式。 父主题: 系统表
  • 注意事项 只有表空间所有者或者被授予了表空间DROP权限的用户有权限执行DROP TABLESPACE命令,系统管理员默认拥有此权限。 在删除一个表空间之前,表空间里面不能有任何数据库对象,否则会报错。 DROP TABLESPACE不支持回滚,因此,不能出现在事务块内部。 执行DROP TABLESPACE操作时,如果有另外的会话执行\db查询操作,可能会由于tablespace事务的原因导致查询失败,请重新执行\db查询操作。 如果执行DROP TABLESPACE失败,需要再次执行一次DROP TABLESPACE IF EXISTS。
  • MY_TAB_COMMENTS MY_TAB_COMMENTS视图显示当前用户拥有的表和视图的注释信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 MY_TAB_COMMENTS字段 名称 类型 描述 owner character varying(64) 表或视图的所有者。 table_name character varying(64) 表或视图的名称。 comments text 注释。 父主题: 系统视图
  • macaddr函数 函数trunc(macaddr)返回一个MAC地址,该地址的最后三个字节设置为零。 trunc(macaddr) 描述:把后三个字节置为零。 返回类型:macaddr 示例: 1 2 3 4 5 openGauss=# SELECT trunc(macaddr '12:34:56:78:90:ab') AS RESULT; result ------------------- 12:34:56:00:00:00 (1 row)
  • cidr和inet函数 函数abbrev,host,text主要是为了提供可选的显示格式。 abbrev(inet) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 openGauss=# SELECT abbrev(inet '10.1.0.0/16') AS RESULT; result ------------- 10.1.0.0/16 (1 row) abbrev(cidr) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 openGauss=# SELECT abbrev(cidr '10.1.0.0/16') AS RESULT; result --------- 10.1/16 (1 row) broadcast(inet) 描述:网络广播地址。 返回类型:inet 示例: 1 2 3 4 5 openGauss=# SELECT broadcast('192.168.1.5/24') AS RESULT; result ------------------ 192.168.1.255/24 (1 row) family(inet) 描述:抽取地址族,4为IPv4。 返回类型:int 示例: 1 2 3 4 5 openGauss=# SELECT family('127.0.0.1') AS RESULT; result -------- 4 (1 row) host(inet) 描述:将主机地址类型抽出为文本。 返回类型:text 示例: 1 2 3 4 5 openGauss=# SELECT host('192.168.1.5/24') AS RESULT; result ------------- 192.168.1.5 (1 row) hostmask(inet) 描述:为网络构造主机掩码。 返回类型:inet 示例: 1 2 3 4 5 openGauss=# SELECT hostmask('192.168.23.20/30') AS RESULT; result --------- 0.0.0.3 (1 row) masklen(inet) 描述:抽取子网掩码长度。 返回类型:int 示例: 1 2 3 4 5 openGauss=# SELECT masklen('192.168.1.5/24') AS RESULT; result -------- 24 (1 row) netmask(inet) 描述:为网络构造子网掩码。 返回类型:inet 示例: 1 2 3 4 5 openGauss=# SELECT netmask('192.168.1.5/24') AS RESULT; result --------------- 255.255.255.0 (1 row) network(inet) 描述:抽取地址的网络部分。 返回类型:cidr 示例: 1 2 3 4 5 openGauss=# SELECT network('192.168.1.5/24') AS RESULT; result ---------------- 192.168.1.0/24 (1 row) set_masklen(inet, int) 描述:为inet数值设置子网掩码长度。 返回类型:inet 示例: 1 2 3 4 5 openGauss=# SELECT set_masklen('192.168.1.5/24', 16) AS RESULT; result ---------------- 192.168.1.5/16 (1 row) set_masklen(cidr, int) 描述:为cidr数值设置子网掩码长度。 返回类型:cidr 示例: 1 2 3 4 5 openGauss=# SELECT set_masklen('192.168.1.0/24'::cidr, 16) AS RESULT; result ---------------- 192.168.0.0/16 (1 row) text(inet) 描述:把IP地址和掩码长度抽取为文本。 返回类型:text 示例: 1 2 3 4 5 openGauss=# SELECT text(inet '192.168.1.5') AS RESULT; result ---------------- 192.168.1.5/32 (1 row)
  • 逻辑复制函数 pg_create_logical_replication_slot('slot_name', 'plugin_name') 描述:创建逻辑复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 plugin_name 插件名称。 取值范围:字符串,当前支持“mppdb_decoding”。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 pg_create_physical_replication_slot('slot_name', 'isDummyStandby') 描述:创建新的物理复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 isDummyStandby 当前版本暂不支持。 返回值类型:name, text 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_drop_replication_slot('slot_name') 描述:删除流复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 返回值类型:void 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数,由一系列options_name和options_value一一对应组成。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary 是否以二进制格式输出解码结果。 取值范围:0或1,默认值为0。 0:设为0时,以二进制格式输出解码结果。 white-table-list 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分隔,不允许存在任意空白符。例: select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); max-txn-in-memory 内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 max-reorderbuffer-in-memory 内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 返回值类型:text, xid, text 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。 调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并推进流复制槽。 参数说明:与pg_logical_slot_peek_changes一致,详细内容请参见•pg_logical_slot_peek_ch...。 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 pg_logical_slot_peek_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:以二进制格式解码且不推进流复制槽(下次解码可以再次获取本次解出的数据)。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数,由一系列options_name和options_value一一对应组成。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary 是否以二进制格式输出解码结果。 取值范围:0或1,默认值为0,均以二进制格式输出结果。 white-table-list 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分隔,不允许存在任意空白符。例: select * from pg_logical_slot_peek_binary_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2'); 返回值类型:text, xid, bytea 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和二进制格式的解码内容。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_logical_slot_get_binary_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:以二进制格式解码并推进流复制槽。 参数说明:与pg_logical_slot_peek_binary_changes一致,详细内容请参见•pg_logical_slot_peek_bi...。 备注:调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 pg_replication_slot_advance ('slot_name', 'LSN') 描述:直接推进流复制槽到指定LSN,不输出解码结果。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,仅支持小写字母、数字以及_?-.字符,且不支持“.”或“..”单独作为复制槽名称。 LSN 推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则报错;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。 取值范围:字符串(LSN,格式为xlogid/xrecoff)。 返回值类型:name, text 备注:返回值分别对应slot_name和实际推进至的LSN。调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。此函数目前只支持在主机调用。 pg_logical_get_area_changes('LSN_start', 'LSN_end', upto_nchanges, 'decoding_plugin', 'xlog_path', 'options_name', 'options_value') 描述:没有ddl的前提下,指定lsn区间进行解码,或者指定xLog文件进行解码。 约束条件如下: 调用接口时,日志级别wal_level=logical,且只有在wal_level=logical期间产生的日志文件才能被解析,如果使用的xLog文件为非logical级别,则解码内容没有对应的值和类型,无其他影响。 xLog文件只能被完全同构的dn的某个副本解析,确保可以找到数据对应的元信息,且没有DDL操作和VACUUM FULL。 用户可以找到需要解析的xLog。 用户需要注意一次不要读入过多xLog文件,推荐一次一个,一个xLog文件估测占用内存为xLog文件大小的2~3倍。 无法解码扩容前的xLog文件。 参数说明: LSN_start 指定开始解码的lsn。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码起始的日志位置做限制。 LSN_end 指定解码结束的lsn。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 decoding_plugin 解码插件,指定解码内容输出格式的so插件。 取值范围:提供mppdb_decoding和sql_decoding两个解码插件。 xlog_path 解码插件,指定解码文件的xLog绝对路径,文件级别 取值范围:NULL 或者 xLog文件绝对路径的字符串。 options:此项为可选参数,由一系列options_name和options_value一一对应组成,可以缺省,详见pg_logical_slot_peek_cha...。 示例: openGauss=# SELECT pg_current_xlog_location(); pg_current_xlog_location -------------------------- 0/E62E238 (1 row) openGauss=# create table t1 (a int primary key,b int,c int); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" CREATE TABLE openGauss=# insert into t1 values(1,1,1); INSERT 0 1 openGauss=# insert into t1 values(2,2,2); INSERT 0 1 openGauss=# select data from pg_logical_get_area_changes('0/E62E238',NULL,NULL,'sql_decoding',NULL); location | xid | data -----------+-------+--------------------------------------------------- 0/E62E8D0 | 27213 | COMMIT (at 2022-01-26 15:08:03.349057+08) 3020226 0/E6325F0 | 27214 | COMMIT (at 2022-01-26 15:08:07.309869+08) 3020234 …… pg_get_replication_slots() 描述:获取复制槽列表。 返回值类型:text,text,text,oid,boolean,xid,xid,text,boolean, text 示例: openGauss=# select * from pg_get_replication_slots(); slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby | confirmed_flush -----------+----------------+-----------+--------+--------+------+--------------+-------------+---------------+----------------- dn_s1 | | physical | 0 | t | | | 0/23DB14E0 | f | slot1 | mppdb_decoding | logical | 16304 | f | | 60966 | 0/1AFA1BB0 | f | 0/23DA5700 (2 rows) gs_get_parallel_decode_status() 描述:监控各个解码线程的读取日志队列和解码结果队列的长度,以便定位并行解码性能瓶颈。 返回值类型:text, int, text, text, text, int64, int64 示例: openGauss=# select * from gs_get_parallel_decode_status(); slot_name | parallel_decode_num | read_change_queue_length | decode_change_queue_length | reader_lsn | working_txn_cnt | working_txn_memory -----------+---------------------+---------------------------+----------------------------+------------+-----------------+-------------------- slot1 | 2 | queue0: 1005, queue1: 320 | queue0: 63, queue1: 748 | 0/1DCE2578 | 42 | 192927504 (1 row) 备注:返回值的slot_name代表复制槽名,parallel_decode_num代表该复制槽的并行解码线程数,read_change_queue_length列出了每个解码线程读取日志队列的当前长度,decode_change_queue_length列出了每个解码线程解码结果队列的当前长度,reader_lsn表示当前reader线程读取的日志位置,working_txn_cnt表示当前拼接-发送线程中正在拼接的事务个数,working_txn_memory代表拼接-发送线程中拼接事务占用总内存(单位字节)。 pg_replication_origin_create (node_name) 描述:用给定的外部名称创建一个复制源,并且返回分配给它的内部ID。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 待创建的复制源的名称。 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 返回值类型:oid pg_replication_origin_drop (node_name) 描述:删除一个以前创建的复制源,包括任何相关的重放进度。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 待删除的复制源的名称。 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 pg_replication_origin_oid (node_name) 描述:根据名称查找复制源并返回内部ID。如果没有发现这样的复制源,则抛出错误。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 要查找的复制源的名称 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 返回值类型:oid pg_replication_origin_session_setup (node_name) 描述:将当前会话标记为从给定的原点回放,从而允许跟踪回放进度。只能在当前没有选择原点时使用。使用pg_replication_origin_session_reset 命令来撤销。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 复制源名称。 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 pg_replication_origin_session_reset () 描述:取消pg_replication_origin_session_setup()的效果。 备注:调用该函数的用户需要具有SYSADMIN权限。 pg_replication_origin_session_is_setup () 描述:如果在当前会话中选择了复制源则返回真。 备注:调用该函数的用户需要具有SYSADMIN权限。 返回值类型:boolean pg_replication_origin_session_progress (flush) 描述:返回当前会话中选择的复制源的重放位置。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: flush 决定对应的本地事务是否被确保已经刷入磁盘。 取值范围:boolean 返回值类型:LSN pg_replication_origin_xact_setup (origin_lsn, origin_timestamp) 描述:将当前事务标记为重放在给定LSN和时间戳上提交的事务。只能在使用pg_replication_origin_session_setup选择复制源时调用。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: origin_lsn 复制源回放位置。 取值范围:LSN origin_timestamp 事务提交时间。 取值范围:timestamp with time zone pg_replication_origin_xact_reset () 描述:取消pg_replication_origin_xact_setup()的效果。 备注:调用该函数的用户需要具有SYSADMIN权限。 pg_replication_origin_advance (node_name, lsn) 描述: 将给定节点的复制进度设置为给定的位置。这主要用于设置初始位置,或在配置更改或类似的变更后设置新位置。 注意:这个函数的使用不当可能会导致不一致的复制数据。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 已有复制源名称。 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 lsn 复制源回放位置。 取值范围:LSN pg_replication_origin_progress (node_name, flush) 描述:返回给定复制源的重放位置。 备注:调用该函数的用户需要具有SYSADMIN权限。 参数说明: node_name 复制源名称。 取值范围:字符串,不支持除字母、数字以及(_?-.)以外的字符。 flush 决定对应的本地事务是否被确保已经刷入磁盘。 取值范围:boolean pg_show_replication_origin_status() 描述:获取复制源的复制状态。 备注:调用该函数的用户需要具有SYSADMIN权限。 返回值类型: local_id:oid,复制源id。 external_id:text,复制源名称。 remote_lsn:LSN,复制源的lsn位置。 local_lsn:LSN,本地的lsn位置。 父主题: 系统管理函数
  • GLOBAL_THREAD_WAIT_STATUS 通过该视图可以检测所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。 通过GLOBAL_THREAD_WAIT_STATUS视图,可以查看数据库全局各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态,从而更容易定位hang以及类似现象的原因。 GLOBAL_THREAD_WAIT_STATUS视图和THREAD_WAIT_STATUS视图列定义完全相同,这是由于GLOBAL_THREAD_WAIT_STATUS视图本质是到数据库中各个节点上查询THREAD_WAIT_STATUS视图汇总的结果。 表1 GLOBAL_THREAD_WAIT_STATUS字段 名称 类型 描述 node_name text 节点名称。 db_name text 数据库名称。 thread_name text 线程名称。 query_id bigint 查询ID,对应debug_query_id。 tid bigint 当前线程的线程号。 sessionid bigint session的ID。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。 smpid integer 并行线程的ID。 wait_status text 当前线程的等待状态。 wait_event text 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、I/O的信息。否则是空。 locktag text 当前线程正在等待锁的信息。 lockmode text 当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。 block_sessionid bigint 阻塞当前线程获取锁的会话标识。 global_sessionid text 全局会话ID。 父主题: Session/Thread
  • GS_AUDITING_POLICY GS_AUDITING_POLICY系统表记录统一审计的主体信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_AUDITING_POLICY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 polname name 策略名称,需要唯一,不可重复。 polcomments name 策略描述字段,记录策略相关的描述信息,通过COMMENTS关键字体现。 modifydate timestamp without time zone 策略创建或修改的最新时间戳。 polenabled boolean 用来表示策略启动开关。 t(true):表示策略启动。 f(false):表示策略没有启动。 父主题: 系统表
  • 参数说明 LOCAL 声明该命令只在当前事务中有效。 SESSION 声明这个命令只对当前会话起作用。 ISOLATION_LEVEL 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 在事务中第一个数据修改语句(SELECT,INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,当前事务的隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 语法格式 设置事务的隔离级别、读写模式。 { SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERIS TICS AS TRANSACTION } { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...]
  • 语法格式 CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING index_method [ FAMILY family_name ] AS { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ] [ FOR SEARCH | FOR ORDER BY sort_family_name ] | FUNCTION support_number [ ( op_type [ , op_type ] ) ] function_name ( argument_type [, ...] ) | STORAGE storage_type } [, ... ]
  • 示例 -- 定义一个函数 CREATE FUNCTION func_add_sql(num1 integer, num2 integer) RETURN integer AS BEGIN RETURN num1 + num2; END; / -- 新建一个操作符类,将上述函数作为其关联的函数 CREATE OPERATOR CLASS oc1 DEFAULT FOR TYPE _int4 USING btree AS FUNCTION 1 func_add_sql (integer, integer);
  • 参数说明 name 将要创建的操作符类的名字(可以用模式修饰)。 default 如果存在,表示该操作符类将成为它的数据类型的缺省操作符类。 对于某个数据类型和访问方式而言,最多有一个操作符类是缺省的。 data_type 操作符类处理的字段的数据类型。 index_method 操作符类处理的索引方法的名字。 family_name 操作符类添加到的现有操作符族的名字。如果没有指定,则使用与该操作符类相同名字的操作符族(如果不存在则创建它)。 strategy_number 与运算符类关联的索引方法的策略编号。 operator_name 和该操作符类关联的操作符的名字(可以用模式修饰)。 op_type 在OPERATOR子句中,表示该操作符的操作数的数据类型,或NONE表示左一元运算符或右一元运算符。在与运算符类的数据类型相同的正常情况下,可以省略操作数数据类型。 在FUNCTION子句中,如果函数的操作数数据类型和函数的输入数据类型 (对于B-tree比较函数和哈希函数)或类的数据类型不同, 那么就在该子句中写上这个函数要支持的操作数类型。这些缺省是正确的, 因此op_type 不需要在FUNCTION子句中指定, 除了B-tree排序支持函数支持交叉数据类型比较的情况。 sort_family_name 描述与排序操作符相关的排序顺序的现有btree 操作符族的名字。 缺省时是FOR SEARCH。 support_number 与运算符类关联的函数的索引方法的编号。 function_name 运算符类的索引方法的函数名称。 argument_type 函数参数的数据类型。 storage_type 实际存储在索引里的数据类型。通常它和字段数据类型相同, 但是一些索引方法允许它是不同的。 除非索引方法允许使用不同的类型,否则必须省略STORAGE子句。
  • 注意事项 CREATE OPERATOR CLASS定义一个新的操作符类。 一个操作符类定义一种特定的数据类型如何与一种索引一起使用。操作符类声明特定的操作符可以为这种数据类型以及索引方法提供特定的角色或者 "策略"。当索引列选择定义的操作符类时,操作符类还声明索引方法使用的支持程序。所有操作符类使用的函数和操作符都必须在创建操作符类之前定义。 如果指定了模式,那么操作符类就在指定的模式中创建。 否则就在当前模式中创建。在同一个模式中的两个操作符类可以有同样的名字, 但它们必须用于不同的索引方法。 定义操作符类的用户将成为其所有者。目前,创建用户必须是超级用户。 CREATE OPERATOR CLASS 既不检查这个类定义是否包含所有索引方法需要的操作符以及函数, 也不检查这些操作符和函数是否形成一个自包含的集合。 相关的操作符类可以集合成操作符族。 添加一个新的操作符类到一个已经存在的操作符族, 在CREATE OPERATOR CLASS中指定FAMILY选项。 没有这个选项时,新建的类会放置到与它同名的族中(如果不存在则创建它)。
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 – with_query_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 – column_name指定子查询结果集中显示的列名。 – 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 – 用户可以使用MATERIALIZED / NOT MATERIALIZED对CTE进行修饰。 如果声明为MATERIALIZED,WITH查询将被物化,生成一个子查询结果集的拷贝,在引用处直接查询该拷贝,因此WITH子查询无法和主干SELECT语句进行联合优化(如谓词下推、等价类传递等),对于此类场景可以使用NOT MATERIALIZED进行修饰,如果WITH查询语义上可以作为子查询内联执行,则可以进行上述优化。 如果用户没有显式声明物化属性则遵守以下规则:如果CTE只在所属主干语句中被引用一次,且语义上支持内联执行,则会被改写为子查询内联执行,否则以CTE Scan的方式物化执行。 plan_hint子句 以/*+ */的形式在DELETE关键字后,用于对DELETE对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 ONLY 如果指定ONLY则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。 table_name 目标表的名称(可以有模式修饰)。 取值范围:已存在的表名。 partition_clause 指定分区删除操作 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字详见SELECT一节介绍 示例详见CREATE TABLE SUBPARTITION alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 using_list using子句。 condition 一个返回Boolean值的表达式,用于判断哪些行需要被删除。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。 WHERE CURRENT OF cursor_name 当前不支持,仅保留语法接口。 LIMIT子句 关键字详见SELECT一节介绍。 output_expr DELETE命令删除行之后计算输出结果的表达式。该表达式可以使用表的任意字段。可以使用*返回被删除行的所有字段。 output_name 一个字段的输出名称。 取值范围:字符串,符合标识符命名规范。
  • 语法格式 [ WITH [ RECURSIVE ] with_query [, ...] ] DELETE [/*+ plan_hint */] [FROM] [ ONLY ] table_name [partition_clause] [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ LIMIT { row_count } ] [ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ];
  • PG_ATTRDEF PG_ATTRDEF系统表存储列的默认值。 表1 PG_ATTRDEF字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 adrelid oid 该列的所属表。 adnum smallint 该列的数目。 adbin pg_node_tree 字段缺省值或生成表达式的内部表现形式。 adsrc text 可读缺省值或生成表达式的内部表现形式。 adgencol "char" 标识该列是否为生成列。取值为's'表示该列为生成列,取值为'\0'表示该列为普通列,默认值为'\0'。 父主题: 系统表
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全