华为云用户手册

  • 示例 修改函数示例: --开启依赖功能。 gaussdb=# SET behavior_compat_options ='plpgsql_dependency'; --创建函数。 gaussdb=# CREATE OR REPLACE FUNCTION test_func(a int) RETURN int IS proc_var int; BEGIN proc_var := a; return 1; END; / --将函数test_func(a int)的名称修改为test_func_tk(a int)。 gaussdb=# ALTER FUNCTION test_func(a int) RENAME TO test_func_tk; --创建jim用户。 gaussdb=# CREATE USER jim PASSWORD '********'; --将函数的所有者改为jim。 gaussdb=# ALTER FUNCTION test_func_tk(a int) OWNER TO jim; --新建模式test。 gaussdb=# CREATE SCHEMA test; --将函数模式改为test。 gaussdb=# ALTER FUNCTION test_func_tk(a int) SET SCHEMA test; 重编译函数译示例: --用函数名重编译函数。 gaussdb=# ALTER FUNCTION test.test_func_tk COMPILE; --用函数带类型签名重编译存储过程。 gaussdb=# ALTER FUNCTION test.test_func_tk(a int) COMPILE; --删除函数。 gaussdb=# DROP FUNCTION test.test_func_tk(a int); --删除jim用户。 gaussdb=# DROP USER jim; --删除SCHEMA。 gaussdb=# DROP SCHEMA test;
  • 示例 更新 plpgsql 扩展到版本 2.0: gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0'; --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 更新 plpgsql 扩展的模式为utils: --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --更新 plpgsql 扩展的模式为utils。 gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 添加一个已存在的函数给 plpgsql 扩展: gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);
  • 参数说明 name 已安装扩展的名称。 new_version 扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本,ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。 new_schema 扩展的新模式。 object_name agg_name function_name operator_name 从扩展里被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。 agg_type 在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 * 代替这些输入数据类型列表。 source_type 强制转换的源数据类型的名称。 target_type 强制转换的目标数据类型的名称。 argmode 这个函数参数的模型:IN、OUT、INOUT或者 VARIADIC。如果省略的话,默认值为IN。ALTER EXTENSION 不关心OUT参数,因为确认函数的一致性只需要输入参数,因此列出 IN、INOUT和 VARIADIC参数就足够了。 argname 函数参数的名称。ALTER EXTENSION不关心参数名称,确认函数的一致性只需要参数数据类型。 argtype 函数参数的数据类型(可以有模式修饰)。 left_type right_type 操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写NONE。
  • 注意事项 UPDATE 更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本), 才能修改当前安装版本到一个要求的版本。 SET SCHEMA 移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。 ADD member_object 添加一个已存在对象到扩展主要适用于扩展更新脚本上。这个对象接着会被视为扩展的成员, 该对象只能通过取消扩展来取消 。 DROP member_object 从扩展上移除一个成员对象。主要适用于扩展更新脚本上,这个对象没有被取消,只是从扩展里被移除。 您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。 要使用该功能,需要设置support_extended_features为true。
  • 语法格式 修改扩展的版本。 ALTER EXTENSION name UPDATE [ TO new_version ]; 修改扩展的模式。 ALTER EXTENSION name SET SCHEMA new_schema; 添加或删除扩展的成员对象。 ALTER EXTENSION name { ADD | DROP } member_object; 其中成员对象member_object写法为: {AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | CONVERSION object_name | DOMAIN object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type, right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | TABLE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TYPE object_name | VIEW object_name}
  • 参数说明 DEFINER 定时任务待执行语句在执行时使用的权限。默认情况下使用当前创建定时任务者的权限,当definer被指定时,使用被指定用户user的用户权限。 definer参数只有具有sysadmin权限的用户有权指定。 ON SCHEDULE 定时任务执行时刻。其中schedule子句与CREATE EVENT中schedule一致。 RENAME TO 更新定时任务名。 ON COMPLETION [NOT] PRESERVE 默认情况下,一旦事务处于完成状态,系统表中就会立刻删除该定时任务。用户可以通过设置ON COMPLETION PRESERVE来覆盖默认行为。 ENABLE | DISABLE | DISABLE ON SLAVE 创建定时任务后,定时任务默认处于ENABLE状态,即到规定时间立即执行待执行语句。用户可以使用DISABLE关键字,改变定时任务的活动状态。DISABLE ON SLAVE表现与DISABLE一致。 COMMENT 用户可以给定时任务添加注释,注释内容在GS_JOB_ATTRIBUTE表中查看。 DO 定时任务待执行语句。
  • 注意事项 定时任务相关操作只有sql_compatibility = 'B'时支持。 只有定时任务的所有者有权修改对应的定时任务,系统管理员默认拥有修改所有定时任务的权限。 可以通过SHOW EVENTS或在PG_JOB表中查看log_user列来获得job的所有者信息。 每次修改定时任务成功后,会更新被修改job的所有者为当前用户,若修改定时任务时指定了definer,则更新为被指定的definer。 definer选项场景限制与CREATE EVENT章节中对definer限制场景一致。 系统管理员修改其他用户创建的定时任务后,被修改定时任务的所有者将切换为系统管理员,待执行语句将使用系统管理员的权限执行。
  • 示例 --创建并切换至测试数据库。 gaussdb=# CREATE DATABASE test_event WITH DBCOMPATIBILITY = 'b'; gaussdb=# \c test_event --创建表。 test_event=# CREATE TABLE t_ev(num int); --创建一个状态为DISABLE的定时任务,表示此定时任务不开启。 test_event=# CREATE EVENT IF NOT EXISTS event_e1 ON SCHEDULE AT sysdate + interval 5 second DISABLE DO insert into t_ev values(0); --查询定时任务,ENABLE值为'f'。 test_event=# SHOW EVENTS; job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg ----------+-------------+----------+-----------+------------+---------------------+----------+---------------------+--------+------------- event_e1 | public | omm | omm | s | 2023-11-28 09:10:58 | null | 3999-12-31 16:00:00 | f | (1 row) --修改定时任务状态为ENABLE,并五秒后查询表。 test_event=# ALTER EVENT event_e1 ENABLE; test_event=# SELECT * FROM t_ev; num ----- 0 (1 row) --创建一个每隔一分钟执行一次的定时任务。 test_event=# CREATE EVENT IF NOT EXISTS event_e2 ON SCHEDULE EVERY 1 minute DO insert into t_ev values(1); --每隔一分钟查询表,会看到新增一条数据。 test_event=# SELECT * FROM t_ev; num ----- 0 1 1 (3 rows) --修改定时任务中待执行语句并查询表。 test_event=# ALTER EVENT event_e2 DO insert into t_ev values(3); test_event=# SELECT * FROM t_ev; num ----- 0 1 1 3 (4 rows) --修改定时任务名称。 test_event=# ALTER EVENT event_e2 RENAME TO event_ee; --删除定时任务。 test_event=# DROP EVENT event_ee; --删除表。 test_event=# DROP TABLE t_ev; --切换回初始数据库,并删除测试数据库。请用真实的数据库名替换postgres。 test_event=# \c postgres gaussdb=# DROP DATABASE test_event;
  • 语法格式 ALTER [DEFINER = user] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] [DO event_body] schedule: 1 2 3 4 5 6 { AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] } interval: quantity {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
  • 示例 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC; --创建用户普通用户jack。 gaussdb=# CREATE USER jack PASSWORD '********'; --将tpcds下的所有表的插入权限授予用户jack。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; --将tpcds下由jack创建的所有表的插入权限授予用户jack。 gaussdb=# GRANT USAGE,CREATE ON SCHEMA tpcds TO jack; gaussdb=# ALTER DEFAULT PRIVILEGES FOR ROLE jack IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; --撤销上述权限。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC; gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack; --删除用户jack。 gaussdb=# DROP USER jack CASCADE; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds;
  • 语法格式 修改数据库的最大连接数。 ALTER DATABASE database_name [ WITH ] CONNECTION LIMIT connlimit; 修改数据库名称。 ALTER DATABASE database_name RENAME TO new_name; 修改数据库所有者。 ALTER DATABASE database_name OWNER TO new_owner; 修改数据库默认表空间。 ALTER DATABASE database_name SET TABLESPACE new_tablespace; 如果该数据库中的某些表或对象已经创建在new_tablespace下,则无法将该数据库的默认表空间修改为new_tablespace,执行会报错。 修改数据库指定会话参数值。 ALTER DATABASE database_name SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; 数据库配置参数重置。 ALTER DATABASE database_name RESET { configuration_parameter | ALL };
  • 参数说明 database_name 需要修改属性的数据库名称。 取值范围:字符串,要符合标识符命名规范。 connlimit 数据库可以接收的最大并发连接数(管理员用户连接除外)。 取值范围:[-1, 2^31-1]的整数,建议填写1~50的整数。-1(缺省)表示没有限制。 new_name 数据库的新名称。 取值范围:字符串,要符合标识符命名规范。 new_owner 数据库的新所有者。 取值范围:字符串,有效的用户名。 new_tablespace 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg_default。 取值范围:字符串,有效的表空间名。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制。 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 time_zone 设置database_name的数据库的时区值,需要有对应的数据库的权限。 取值范围:字符串。 系统支持的时区和其相应的缩写。 -15:59~+15:00 RESET configuration_parameter 重置指定的数据库会话参数值。 RESET ALL 重置全部的数据库会话参数值。 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 修改的数据库会话参数值,将在下一次会话中生效。
  • 示例 --创建表customer_demographics_t1。 gaussdb=# CREATE TABLE customer_demographics_t1 ( CD_DEMO_SK INTEGER NOT NULL, CD_GENDER CHAR(1) , CD_MARITAL_STATUS CHAR(1) , CD_EDUCATION_STATUS CHAR(20) , CD_PURCHASE_ESTIMATE INTEGER , CD_CREDIT_RATING CHAR(10) , CD_DEP_COUNT INTEGER , CD_DEP_EMPLOYED_COUNT INTEGER , CD_DEP_COLLEGE_COUNT INTEGER ) ; --插入记录。 gaussdb=# INSERT INTO customer_demographics_t1 VALUES(1920801,'M', 'U', 'DOCTOR DEGREE', 200, 'GOOD', 1, 0,0); --开启事务。 gaussdb=# START TRANSACTION; --更新字段值。把cd_education_status字段值更新为Unknown。 gaussdb=# UPDATE customer_demographics_t1 SET cd_education_status= 'Unknown'; --终止事务,上面所执行的更新会被撤销掉。 gaussdb=# ABORT; --查询数据。发现cd_education_status字段的值未被修改成Unknown。 gaussdb=# SELECT * FROM customer_demographics_t1 WHERE cd_demo_sk = 1920801; cd_demo_sk | cd_gender | cd_marital_status | cd_education_status | cd_purchase_estimate | cd_credit_rating | cd_dep_count | cd_dep_employed_count | cd_dep_college_count ------------+-----------+-------------------+----------------------+----------------------+------------------+--------------+-----------------------+---------------------- 1920801 | M | U | DOCTOR DEGREE | 200 | GOOD | 1 | 0 | 0 (1 row) --删除表。 gaussdb=# DROP TABLE customer_demographics_t1;
  • 值存储数据类型解析 查找与目标字段准确的匹配。 试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已注册的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。 检查目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在表达式上应用。这样的转换函数总是接受一个额外的类型为integer的参数,它接收目标字段的atttypmod值(实际上是其声明长度,atttypmod的解释随不同的数据类型而不同),并且它可能接受一个Boolean类型的第三个参数,表示转换是显式的还是隐式的。转换函数负责施加那些长度相关的语义,比如长度检查或者截断。
  • 示例 character存储类型转换。对一个目标列定义为character(20)的语句,下面的语句显示存储值的长度正确: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE SCHEMA tpcds; gaussdb=# CREATE TABLE tpcds.value_storage_t1 ( VS_COL1 CHARACTER(20) ); gaussdb=# INSERT INTO tpcds.value_storage_t1 VALUES('abcdef'); gaussdb=# SELECT VS_COL1, octet_length(VS_COL1) FROM tpcds.value_storage_t1; vs_col1 | octet_length ----------------------+-------------- abcdef | 20 (1 row) ) gaussdb=# DROP TABLE tpcds.value_storage_t1; gaussdb=# DROP SCHEMA tpcds; 两个unknown文本缺省解析成text,这样就允许||操作符解析成text连接。然后操作符的text结果转换成bpchar("空白填充的字符型", character类型内部名称)以匹配目标字段类型。从text到bpchar的转换是二进制兼容的,这样的转换是隐含的并且实际上不做任何函数调用。在系统表里找到长度转换函数bpchar(bpchar, integer, Boolean) 并且应用于该操作符的结果和存储的字段长。这个类型相关的函数执行所需的长度检查和额外的空白填充。
  • 示例 示例1:圆整函数参数类型解析。只有一个round函数有两个参数(第一个是numeric,第二个是integer)。所以下面的查询自动把第一个类型为integer的参数转换成numeric类型。 1 2 3 4 5 gaussdb=# SELECT round(4, 4); round -------- 4.0000 (1 row) 实际上它被分析器转换成: 1 gaussdb=# SELECT round(CAST (4 AS numeric), 4); 因为带小数点的数值常量初始时被赋予numeric类型,因此下面的查询将不需要类型转换,并且可能会略微高效一些: 1 gaussdb=# SELECT round(4.0, 4); 示例2:子字符串函数类型解析。有好几个substr函数,其中一个接受text和integer类型。如果用一个未声明类型的字符串常量调用它,系统将选择接受string类型范畴的首选类型(也就是text类型)的候选函数。 1 2 3 4 5 gaussdb=# SELECT substr('1234', 3); substr -------- 34 (1 row) 如果该字符串声明为varchar类型,就像从表中取出来的数据一样,分析器将试着将其转换成text类型: 1 2 3 4 5 gaussdb=# SELECT substr(varchar '1234', 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 gaussdb=# SELECT substr(CAST (varchar '1234' AS text), 3); 分析器从pg_cast表中了解到text和varchar是二进制兼容的,意思是说一个可以传递给接受另一个的函数而不需要做任何物理转换。因此,在这种情况下,实际上没有做任何类型转换。 而且,如果以integer为参数调用函数,分析器将试图将其转换成text类型: 1 2 3 4 5 gaussdb=# SELECT substr(1234, 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 2 3 4 5 gaussdb=# SELECT substr(CAST (1234 AS text), 3); substr -------- 34 (1 row)
  • 函数类型解析 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。 如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。 查找和输入参数类型完全匹配的函数。如果找到一个,则用之。如果输入的实参类型都是unknown类型,则不会找到匹配的函数。 如果未找到完全匹配,请查看该函数是否为一个特殊的类型转换函数。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选函数。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些输入类型匹配最准确的。此时,域被看作和它们的基本类型相同。如果没有一个函数能准确匹配,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些需要类型转换时接受首选类型位置最多的函数。如果没有接受首选类型的函数,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选函数对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。另外,如果所有剩下的候选函数都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法作出正确的选择)。现在抛弃不接受选定的类型范畴的候选函数,然后,如果任意候选函数在该范畴接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选函数。如果没有一个候选符合这些测试则保留所有候选。如果只有一个候选函数符合,则使用它;否则,继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数有相同的类型,假设unknown参数也是这种类型,检查哪一个候选函数可以在unknown参数位置接受这种类型。如果正好一个候选符合,那么使用它。否则,产生一个错误。
  • 操作符类型解析 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选操作符。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选操作符,保留那些输入类型匹配最准确的。此时,域类型看做和域类型的基本类型相同。如果没有一个操作符能被保留,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选操作符,保留那些需要类型转换时接受(属于输入数据类型的类型范畴的)首选类型位置最多的操作符。如果没有接受首选类型的操作符,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选操作符对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。如果所有剩下的候选操作符都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法作出正确的选择)。现在抛弃不接受选定的类型范畴的候选操作符,如果任意候选操作符在某个给定的参数位置接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选操作符。如果没有一个操作符能被保留,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数都是相同的类型,那么假设unknown参数也是那种类型,并检查哪一个候选操作符在unknown参数位置接受该类型。如果只有一个操作符符合,那么使用它。否则产生一个错误。 在找到一个操作符后,如果输入的参数类型和操作符的参数类型不一致,可能会发生隐式类型转换,转换后可能发生不可预知的行为。如果隐式转换后行为有问题,可以通过显式类型转换规避此问题。例如,定长类型bpchar转换为变长类型text后,会消除字符串行尾空格,如果再和其它字符串比较时可能会发生错误行为。
  • NOT IN expression NOT IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。 示例如下: 1 2 3 4 5 gaussdb=# SELECT 8000+500 NOT IN (10000, 9000) AS RESULT; result ---------- t (1 row) 如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 在所有情况下X NOT IN Y等价于NOT(X IN Y)。 不支持对XML类型数据操作。
  • 废弃函数 GaussDB 中下列函数在最新版本中已废弃: gs_wlm_get_session_info gs_wlm_get_user_session_info pgxc_get_csn pgxc_get_stat_dirty_tables pgxc_get_thread_wait_status pgxc_gtm_snapshot_status pgxc_is_committed pgxc_lock_for_backup pgxc_lock_for_sp_database pgxc_lock_for_transfer pgxc_log_comm_status pgxc_max_datanode_size pgxc_node_str pgxc_pool_check pgxc_pool_connection_status pgxc_pool_reload pgxc_prepared_xact pgxc_snapshot_status pgxc_stat_dirty_tables pgxc_unlock_for_sp_database pgxc_unlock_for_transfer pgxc_version array_extend prepare_statement_status remote_rto_stat dbe_perf.global_slow_query_info dbe_perf.global_slow_query_info_bytime dbe_perf.global_slow_query_history pg_stat_get_pooler_status pg_stat_get_wlm_node_resource_info pg_stat_get_wlm_session_info_internal DBE_PERF.get_wlm_controlgroup_ng_config() DBE_PERF.get_wlm_user_resource_runtime() global_space_shrink pg_pool_validate gs_stat_ustore table_skewness(text) table_skewness(text, text, text) local_segment_space_info pg_stat_segment_extent_usage GS_ALL_NODEGROUP_CONTROL_GROUP_INFO(text) create_wlm_operator_info(int flag) create_wlm_session_info(int flag) pg_stat_get_wlm_session_info(int flag) gs_wlm_get_resource_pool_info(int) gs_wlm_get_all_user_resource_info() gs_wlm_get_workload_records() gs_wlm_persistent_user_resource_info() gs_wlm_session_respool(bigint) gs_total_nodegroup_memory_detail gs_wlm_user_resource_info(name text) create_wlm_instance_statistics_info pg_stat_get_session_wlmstat pg_stat_get_wlm_ec_operator_info pg_stat_get_wlm_instance_info pg_stat_get_wlm_instance_info_with_cleanup pg_stat_get_wlm_statistics pg_stat_get_wlm_operator_info pg_stat_get_wlm_realtime_ec_operator_info pg_stat_get_wlm_realtime_operator_info pg_stat_get_wlm_realtime_session_info get_node_modulo check_murmurhash_route_node gs_redis_set_bucketxid(bigint) 父主题: 函数和操作符
  • - 功能说明:计算两个维度相同的向量按位相减。 左参数类型:floatvector 右参数类型:floatvector 返回值类型:floatvector 代码示例: gaussdb=# SELECT floatvector('[1,1,3,2]') + floatvector('[1,1,3,2]'); gaussdb=# SELECT '[1,2,3,2]'+ floatvector('[1,1,3,2]');
  • = 场景1: 功能说明:判断两个维度相同的向量是否相等。 左参数类型:floatvector 右参数类型:floatvector 返回值类型:BOOLEAN 代码示例: gaussdb=# SELECT floatvector('[1,1,3,2]') = floatvector('[1,1,3,2]'); gaussdb=# SELECT '[1,2,3,2]'= floatvector('[1,1,3,2]'); 场景2: 功能说明:判断两个维度相同的布尔向量是否一致。 左参数类型:boolvector 右参数类型:boolvector 返回值类型:BOOLEAN 代码示例: gaussdb=# SELECT boolvector('[1,0,1,0]') = boolvector('[1,1,1,0]'); gaussdb=# SELECT '[1,0,1,0]' = boolvector('[1,1,1,0]');
  • gs_vector_index_options 功能说明:显示相关向量索引的超参取值。 入参类型:text 出参类型:text 代码示例: --创建表。 gaussdb=# CREATE TABLE t1 (id int unique,repr floatvector(960)) with (storage_type=astore); 插入数据: gaussdb=# copy t1 from '/data/gist1w.txt' delimiter '^'; 创建索引: gaussdb=# CREATE INDEX test1v on t1 using gsdiskann (repr l2) with (pq_nseg=120,pq_nclus=64,queue_size=120,num_parallels=30,enable_pq=true,using_clustering_for_parallel=false); gaussdb=# SELECT gs_vector_index_options('test1v');
  • + 功能说明:计算两个维度相同的向量按位相加。 左参数类型:floatvector 右参数类型:floatvector 返回值类型:floatvector 代码示例: gaussdb=# SELECT floatvector('[1,1,3,2]') + floatvector('[1,1,3,2]'); gaussdb=# SELECT '[1,2,3,2]'+ floatvector('[1,1,3,2]');
  • 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]);
  • 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]');
  • 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]');
共100000条