华为云用户手册

  • vector_lt 功能说明:比较向量大小,向量1是否小于向量2。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_lt(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_lt('[1,2,3]', '[5,-1,3.5]');
  • vector_le 功能说明:比较向量大小,向量1是否小于等于向量2。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_le(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_le('[1,2,3]', '[5,-1,3.5]');
  • vector_ge 功能说明:比较向量大小,向量1是否大于等于向量2。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_ge(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_ge('[1,2,3]', '[5,-1,3.5]');
  • vector_gt 功能说明:比较向量大小,向量1是否大于向量2。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_gt(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_gt('[1,2,3]', '[5,-1,3.5]');
  • vector_accum 功能说明:返回向量累加。 入参1的类型:anyarray 入参2的类型:floatvector 出参类型:anyarray 代码示例: --系统函数,不推荐使用,若需使用,数组元素类型必须为float8类型。 gaussdb=# SELECT vector_accum(array[cast(3 as float8),1,2,3], floatvector('[5,-1,3.5]'));
  • vector_sub 功能说明:计算两个向量相减。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:floatvector 代码示例: gaussdb=# SELECT vector_sub(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_sub('[1,2,3]', '[5,-1,3.5]');
  • vector_cmp 功能说明:比较向量大小。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:int4 代码示例: gaussdb=# SELECT vector_cmp(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_cmp('[1,2,3]', '[5,-1,3.5]');
  • vector_combine 功能说明:合并向量。 入参1的类型:anyarray 入参2的类型:anyarray 出参类型:anyarray 代码示例: --系统函数,不推荐使用,若需使用,数组元素类型必须为float8类型。 gaussdb=# SELECT vector_combine(array[cast(1 as float8),2,3], array[cast(1 as float8),2,3]);
  • inner_product 功能说明:计算两个向量的内积。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:float8 代码示例: gaussdb=# SELECT inner_product(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT inner_product('[1,2,3]', '[5,-1,3.5]');
  • vector_negative_inner_product 功能说明:计算两个向量的负内积。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:float8 代码示例: gaussdb=# SELECT vector_negative_inner_product(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_negative_inner_product('[1,2,3]', '[5,-1,3.5]');
  • vector_ne 功能说明:比较两个向量是否不等。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_ne(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_ne('[1,2,3]', '[5,-1,3.5]');
  • vector_add 功能说明:计算两个向量相加。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:floatvector 代码示例: gaussdb=# SELECT vector_add(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_add('[1,2,3]', '[5,-1,3.5]');
  • vector_eq 功能说明:比较向量是否相等。 入参1的类型:floatvector 入参2的类型:floatvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT vector_eq(floatvector('[1,2,3]'), floatvector('[5,-1,3.5]')); gaussdb=# SELECT vector_eq('[1,2,3]', '[5,-1,3.5]');
  • bool_vector_eq 功能说明:比较bool向量是否一致。 入参1的类型:boolvector 入参2的类型:boolvector 出参类型:BOOLEAN 代码示例: gaussdb=# SELECT bool_vector_eq(boolvector('[1,1,1]'), boolvector('[1,1,1]')); gaussdb=# SELECT bool_vector_eq('[1,1,1]', '[1,1,1]');
  • 示例 --创建目录对象。 gaussdb=# CREATE OR REPLACE DIRECTORY dir AS '/tmp/'; --查看已创建的目录对象。 gaussdb=# select * from pg_directory; dirname | owner | dirpath | diracl ---------+-------+---------+-------- dir | 10 | /tmp | (1 row) --删除目录对象。 gaussdb=# DROP DIRECTORY dir;
  • 注意事项 当enable_access_server_directory=off时,只允许初始用户创建directory对象。当enable_access_server_directory=on时,具有SYSADMIN权限的用户和继承了内置角色gs_role_directory_create权限的用户可以创建directory对象。 创建用户默认拥有此路径的READ和WRITE操作权限。 目录的默认owner为创建directory的用户。 以下路径禁止创建: 路径含特殊字符。 路径是相对路径。 创建目录时会进行以下合法性校验: 创建时会检查添加路径是否为操作系统实际存在路径,如不存在会提示用户使用风险。 创建时会校验数据库初始化(omm)用户对于添加路径的权限(即操作系统目录权限,读/写/执行 - R/W/X),如果权限不全,会提示用户使用风险。 在数据库环境下用户指定的路径需要用户保证各节点上路径的一致性,否则在不同节点上执行会产生找不到路径的问题。 可在pg_directory表中查看已存在目录对象。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_person ( id integer, name varchar(20), sex varchar(5) CHECK(sex = '男' or sex = '女') ); gaussdb=# INSERT INTO tbl_person VALUES (1, 'Bob', '男'),(2, 'Anne', '女'),(3, 'Jack', '男'),(4, 'Danny', '男'),(5, 'Alice', '女'),(6, 'Susan', '女'); --将person表中所有男生的信息加入到新表中 gaussdb=# SELECT * INTO tbl_man FROM tbl_person WHERE sex = '男'; --查询tbl_man数据。 gaussdb=# SELECT * FROM tbl_man; id | name | sex ----+-------+----- 1 | Bob | 男 3 | Jack | 男 4 | Danny | 男 (3 rows) --删除表。 gaussdb=# DROP TABLE tbl_person, tbl_man;
  • 参数说明 new_table new_table指定新建表的名称。 UNLOGGED 指定表为非日志表。非日志表中写入的数据不会被写入到预写日志中,比普通表快很多。但是,非日志表在冲突或异常关机后会被自动删截,非日志表中的内容也不会被复制到备用服务器中,在该类表中创建的索引也不会被自动记录。 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 GLOBAL | LOCAL 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。如果指定GLOBAL关键字,GaussDB会创建全局临时表,否则GaussDB会创建本地临时表。 TEMPORARY | TEMP 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定GLOBAL关键字则为全局临时表,否则为本地临时表。 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT DELETE ROWS),当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg_temp_开头的schema。 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 本地临时表通过每个会话独立的以pg_temp_开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg_temp_、pg_toast_temp_开头的schema。 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg_temp_开头的schema,则此表会被创建为临时表。 如果其它会话正在使用全局临时表或索引,则无法对其执行ALTER/DROP操作。 全局临时表的DDL只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 SELECT INTO的其它参数可参考SELECT的参数说明。
  • 语法格式 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } INTO [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW {window_name AS ( window_definition )} [, ...] ] [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT |WAIT N]} [...] ];
  • GS_MASKING_POLICY_ACTIONS GS_MASKING_POLICY_ACTIONS系统表记录动态数据脱敏策略中相应的脱敏策略包含的脱敏行为,一个脱敏策略对应着该表的一行或多行记录。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_MASKING_POLICY_ACTIONS表字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 actiontype name 脱敏函数,标识脱敏策略使用的脱敏函数。 actparams name 向脱敏函数中传递的参数信息。 actlabelname name 被脱敏的label名称。 policyoid oid 该条记录所属的脱敏策略oid,对应GS_MASKING_POLICY中的oid。 actmodifydate timestamp without time zone 该条记录创建或修改的最新时间戳。 父主题: 动态脱敏
  • 常用方法 表1 CopyManager常用方法 方法 返回值 描述 throws 支持JDBC4 copyIn(String sql) CopyIn - SQLException Yes copyIn(String sql, InputStream from) long 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException Yes copyIn(String sql, InputStream from, int bufferSize) long 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载指定长度的数据。 SQLException,IOException Yes copyIn(String sql, Reader from) long 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException Yes copyIn(String sql, Reader from, int bufferSize) long 使用COPY FROM STDIN从Reader中快速向数据库中的表加载指定长度的数据。 SQLException,IOException Yes copyOut(String sql) CopyOut - SQLException Yes copyOut(String sql, OutputStream to) long 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException Yes copyOut(String sql, Writer to) long 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException Yes
  • GLOBAL_STAT_DATABASE 显示数据库各节点的统计信息(不同节点下数据库的状态信息不汇总),如表1所示。 表1 GLOBAL_STAT_DATABASE字段 名称 类型 描述 node_name name 节点名称。 datid oid 数据库的OID。 datname name 这个数据库的名称。 numbackends integer 当前连接到该数据库的后端数。 xact_commit bigint 此数据库中已经提交的事务数。 xact_rollback bigint 此数据库中已经回滚的事务数。 blks_read bigint 在这个数据库中读取的磁盘块的数量。 blks_hit bigint 高速缓存中已经命中的磁盘块的次数,这种情况下不需要从磁盘读取(高速缓存只包括数据库内核缓冲区高速缓存,不包括操作系统的文件系统缓存)。 tup_returned bigint 该数据库中顺序扫描获取的活跃行数和索引扫描返回的索引行数。 tup_fetched bigint 当前数据库通过索引返回的行数。 tup_inserted bigint 插入的行数。 tup_updated bigint 更新的行数。 tup_deleted bigint 删除的行数。 conflicts bigint 由于与数据库回放发生冲突而取消的查询数量(冲突仅在备机上发生)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files bigint 该数据库中查询语句创建的临时文件数量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 temp_bytes bigint 该数据库中查询语句写入临时文件的数据总量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • 注意事项 只有存储过程的所有者或者被授予了存储过程ALTER权限的用户才能执行ALTER PROCEDURE命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束: 如果存储过程中涉及对临时表相关的操作,则无法使用ALTER PROCEDURE。 修改存储过程的所有者或修改存储过程的模式,当前用户必须是该存储过程的所有者或者系统管理员,且该用户是新所有者角色的成员。 只有系统管理员和初始化用户可以将procedure的schema修改成public。
  • 参数说明 procedure_name 要修改的存储过程名称。 取值范围:已存在的存储过程名。 argmode 标识该参数是输入、输出参数。 取值范围:IN/OUT/INOUT/VARIADIC。 argname 参数名称。 取值范围:字符串,符合标识符命名规范。 argtype 存储过程参数的类型。 CALLED ON NULL INPUT 表明该存储过程的某些参数是NULL的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。 IMMUTABLE 表示该存储过程在给出同样的参数值时总是返回同样的结果。 STABLE 表示该存储过程不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 VOLATILE 表示该存储过程值可以在一次表扫描内改变,不会做任何优化。 LEAKPROOF 表示该存储过程没有副作用,指出参数只包括返回值。LEAKPROOF只能由系统管理员设置。 EXTERNAL (可选)目的是和SQL兼容,这个特性适合于所有函数,而不仅是外部函数。 SECURITY INVOKER AUTHID CURRENT_USER 表明该存储过程将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。 SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。 SECURITY DEFINER AUTHID DEFINER 声明该存储过程将以创建它的用户的权限执行。 AUTHID DEFINER和SECURITY DEFINER的功能相同。 COST execution_cost 用来估计存储过程的执行成本。 execution_cost以cpu_operator_cost为单位。 取值范围:正数。 ROWS result_rows 估计存储过程返回的行数。用于存储过程返回的是一个集合。 取值范围:正数,默认值是1000行。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 new_name 存储过程的新名称。要修改存储过程的所属模式,必须拥有新模式的CREATE权限。 取值范围:字符串,符合标识符命名规范。 new_owner 存储过程的新所有者。要修改存储过程的所有者,新所有者必须拥有该存储过程所属模式的CREATE权限。 取值范围:已存在的用户角色。 new_schema 存储过程的新模式。 取值范围:已存在的模式。
  • 示例 请参见CREATE PROCEDURE的示例。 重编译示例: --开启依赖功能。 gaussdb=# SET behavior_compat_options ='plpgsql_dependency'; --创建存储过程。 gaussdb=# CREATE OR REPLACE PROCEDURE test_proc(a int) IS proc_var int; BEGIN proc_var := a; END; / --用存储过程名重编译存储过程。 gaussdb=# ALTER PROCEDURE test_proc COMPILE; --用存储过程带类型签名重编译存储过程。 gaussdb=# ALTER PROCEDURE test_proc(int) COMPILE; --删除存储过程。 gaussdb=# DROP PROCEDURE test_proc;
  • 语法格式 修改自定义存储过程的附加参数。 ALTER PROCEDURE procedure_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) action [ ... ] [ RESTRICT ]; 其中附加参数action子句语法为: {CALLED ON NULL INPUT | STRICT} | {IMMUTABLE | STABLE | VOLATILE} | {SHIPPABLE | NOT SHIPPABLE} | {NOT FENCED | FENCED} | [ NOT ] LEAKPROOF | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } | AUTHID { DEFINER | CURRENT_USER } | COST execution_cost | ROWS result_rows | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} | RESET {configuration_parameter | ALL} 修改自定义存储过程的名称。 ALTER PROCEDURE proname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) RENAME TO new_name; 修改自定义存储过程的所属者。 ALTER PROCEDURE proname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) OWNER TO new_owner; 修改自定义存储过程的模式。 ALTER PROCEDURE proname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) SET SCHEMA new_schema;
  • acceleration_with_compute_pool 参数说明:在查询包含OBS时,通过该参数决定查询是否通过计算资源池进行加速。(由于规格变更,当前版本已经不再支持本特性,请不要使用) 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示包含有OBS或的查询在计算资源池可用时,会根据代价评估决定是否通过计算资源池对查询加速。 off表示任何查询都不会通过计算资源池进行加速。 默认值:off
  • enable_gsplsql_execopt 参数说明:控制是否优化Tuple模式存储过程函数的执行。 存储过程函数的执行模式: Statement模式:通过perform或者call procedure()调用,存储过程函数执行过程为单独SQL语句。 Tuple模式:通过targetlist,trigger方式调用,调用环境为执行态的1个元组输入。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示使用Tuple模式进行存储过程函数循环执行时,在存储过程初始化时分配并记录运行过程中不改变的信息,避免执行过程中无效的重复调用。 off表示使用默认调用逻辑,每次循环都重新初始化信息。 默认值:on
  • enable_force_smp 参数说明:控制是否强制开启SMP。参数开启时,代价模型默认拉起stream线程的代价为空,当设置并行度并算子支持并行时强制选择并行路径。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on:表示使用强制开启SMP计划。 off:表示不开启强制SMP计划。 默认值:off 该参数只对支持SMP的算子有效,具体请联系管理员。 另外,使用强制开启SMP还存在以下约束: SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,合理设置并行度来较好地提升性能。 如果在不合适的场景下(如数据量较少),或资源不足的情况下,可能引起性能的劣化。 SMP非适用场景不支持此参数。
  • enable_gpi_auto_update 参数说明:控制在分区DDL命令中是否默认更新Global索引。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示默认更新Global索引,此时分区DDL无论带不带UPDATE GLOBAL INDEX子句,都会更新Global索引。 off表示默认不更新Global索引,此时只有当分区DDL带UPDATE GLOBAL INDEX子句,才会更新Global索引。 默认值:off
共100000条