华为云用户手册

  • b_format_version 参数说明:数据库平台兼容性行为配置项,用于控制B兼容模式下的前向兼容性。 仅当sql_compatibility兼容性参数设置为B时,b_format_version参数才会生效。 当该参数设置不为空字符串生效时,会同时设置参数b_format_behavior_compat_options为'ALL'值,参数bytea_output为'escape'值。当该参数重新设置为空字符串生效时,会将b_format_behavior_compat_options、bytea_output参数设为原来的值。 参数类型:字符串 参数单位:无 取值范围:空字符串''或 '5.7' 默认值:空字符串'' 设置方式:该参数属于USERSET类型参数,请参考表 GUC参数分类中对应设置方法进行设置。 设置建议:无。
  • m_format_dev_version 参数说明:数据库平台迭代小版本兼容性行为配置项。 依赖sql_compatibility兼容性参数设置为M时,m_format_dev_version才会生效。 参数类型:字符串 参数单位:无 取值范围:空字符串''或 表8中的兼容性配置项。 表8 兼容性配置项 兼容性配置项 兼容性行为控制 s1 影响如下语法: 禁用SELECT FETCH FIRST WORS ONLY语法。 禁用TRUNCATE CASCADE/RESTRICT语法。 禁用CREATE TABLE中定义主键时指定USING INDEX TABLESPACE tablespace_name语法。 DROP TABLE/VIEW/COLUMN中CASCADE/RESTRICT语法语义改变,改为忽略CASCADE/RESTRICT的语义,且默认行为为RESTRICT。 CREATE TABLE REFEREN CES 作为列约束时,语法语义改变,改为忽略该外键定义。 默认值:空字符串'' 设置方式:该参数属于USERSET类型参数,请参考表 GUC参数分类中对应设置方法进行设置。 设置建议:无。
  • sql_mode 参数说明:B兼容模式下和M-Compatibility模式下SQL行为控制配置项。 依赖sql_compatibility兼容性参数设置为B、b_format_version设置为'5.7'、b_format_dev_version 设置为's1'时,sql_mode才会生效;或者sql_compatibility兼容性参数设置为M时生效。 参数类型:字符串 参数单位:无 取值范围: B模式下空字符串''或 'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution,pad_char_to_full_length,no_auto_value_on_zero'中的选项值。 M-Compatibility模式下除支持B模式参数外,还新增了no_unsigned_subtraction、ansi_quotes、allow_invalid_dates、real_as_float。 每个选项值的含义如表9所述。 表9 兼容性配置项 兼容性配置项 兼容性行为控制 B模式参数配置说明 M-Compatibility模式参数配置说明 strict_trans_tables 设置时,对输入的参数格式和范围做严格校验。无效值输入或者超过范围时,解析报error。 不设置时,对输入的参数格式和范围做宽松校验,无效值输入或者超过范围时,解析报warning,返回对应数据的0值。 可独立设置和取消。 可独立设置和取消。 only_full_group_by 不允许出现非GROUP BY的key值、且不是常量和聚集函数的投影列。 可独立设置和取消,但无实际作用。 可独立设置和取消。 no_zero_in_date 不允许日期中的年、月、日是0值。 可独立设置和取消,但无实际作用。 可独立设置和取消。 no_zero_date 不允许日期是0值(0000-00-00)。 可独立设置和取消,但无实际作用。 可独立设置和取消。 error_for_division_by_zero 不允许被0除。 可独立设置和取消,但无实际作用。 可独立设置和取消。 no_auto_create_user 无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 可独立设置和取消。 可独立设置和取消。 no_engine_substitution 无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 可独立设置和取消。 可独立设置和取消。 pad_char_to_full_length 用于表中的char类型列格式化输出,包含时输出带有尾部空格的字符串,否则输出不带尾部空格字符串。 可独立设置和取消。 可独立设置和取消。 no_auto_value_on_zero 包含此选项后,向AUTO_INCREMENT自动增长列插入0值将不会自增。 可独立设置和取消。 可独立设置和取消。 no_unsigned_subtraction 禁止无符号数减法,如果使用无符号整数进行减法操作,且结果为负数,则会返回一个错误。 可独立设置和取消,但无实际作用。 可独立设置和取消。 ansi_quotes 启用ANSI_QUOTES模式,该模式下双引号被视为标识符引用符号,而不是字符串引用符号。在该模式下,如果使用双引号引用表名或列名,则必须使用双引号引用整个名称,而不能使用反引号。 可独立设置和取消,但无实际作用。 可独立设置和取消。 allow_invalid_dates 允许插入无效日期,如果启用该选项,则MySQL将允许插入无效的日期,例如'0000-00-00'。 可独立设置和取消,但无实际作用。 可独立设置和取消。 real_as_float 默认将REAL类型视为DOUBLE类型,如果启用该选项,则将REAL类型视为FLOAT类型。 可独立设置和取消,但无实际作用。 可独立设置和取消。 默认值:'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution' 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:无。
  • nls_timestamp_tz_format 参数说明:设置带时区时间戳默认格式。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串,支持格式同nls_timestamp_format。 默认值:DD-Mon-YYYY HH:MI:SS.FF AM 此参数与在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效
  • group_concat_max_len 参数说明:搭配函数GROUP_CONCAT使用,限制其返回值长度,超长截断。 参数类型:整型 参数单位:无 取值范围:0~9223372036854775807,目前实际生效的最大长度是1073741823,超出此长度后会有out of memory的报错。 默认值:1024 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • b_format_behavior_compat_options 参数说明:数据库B模式兼容性行为配置项。 参数类型:字符串 参数单位:无 取值范围:当前只支持表1 B模式兼容性配置项,当设置多个兼容性配置项时,相邻配置项之间用逗号隔开,例如:set b_format_behavior_compat_options="enable_set_variables,set_session_transaction";。 默认值:"" 当参数b_format_version不为''时,b_format_behavior_compat_options会被设置为all,而且不能被修改。 表1 B模式兼容性配置项 兼容性配置项 兼容性行为控制 enable_set_variables set语法增强控制开关。 不设置此配置时,不支持set自定义变量、set [global | session]语法。 设置此配置时,支持B兼容模式下使用上述语法,比如 set @v1 = 1;。 set_session_transaction set session transaction控制开关。 不设置此配置时,set session transaction等效于set local transaction。 设置此配置时,支持B兼容模式下使用上述语法,修改当前会话事务特性。 enable_modify_column ALTER TABLE MODIFY语义控制开关。 不设置此配置时,“ALTER TABLE table_name MODIFY column_name data_type;”只修改列的数据类型。 设置此配置时,“ALTER TABLE table_name MODIFY column_name data_type;”修改整个列定义。 default_collation 默认字符序前向兼容开关。 若不设置此配置项,在未显式指定字符类型字段的字符集或字符序且表级字符序也为空时,字段为default字符序。 若设置此配置项,当表级字符序不为空时,字符类型字段的字符序继承表级字符序,当表级字符序为空时,字符类型字段的字符序设置为数据库编码对应的默认字符序。 all 打开所有语法控制开关。 all不能同时和其他配置项一起指定。表格中除all外所有配置项逗号隔开的含义和取值为all含义相同。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:控制一些B兼容性特性是否可用,若要更改,请在理解参数含义后谨慎操作,避免因误操作产生意料之外的风险。
  • transform_null_equals 参数说明:控制表达式expr = NULL(或NULL = expr)当做expr IS NULL处理。如果expr得出NULL值则返回真,否则返回假。 正确的SQL标准兼容的expr = NULL总是返回NULL(未知)。 Microsoft Access里的过滤表单生成的查询使用expr = NULL来测试空值。打开这个选项,可以使用该接口来访问数据库。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示控制表达式expr = NULL(或NULL = expr)当做expr IS NULL处理。 off表示不控制,即expr = NULL总是返回NULL(未知)。 默认值:off 新用户经常在涉及NULL的表达式上语义混淆,故默认值设为off。
  • nls_nchar_characterset 参数说明:搭配nchr(cvalue int|bigint)系统函数使用,设置国家字符集,该参数的值为字符串枚举值。 参数类型:字符串 参数单位:无 取值范围:'AL16UTF16'和'UTF8',不区分大小写。 默认值:'AL16UTF16' 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 数据库不支持国家字符集,该参数只是为了兼容A数据库,获取用户想使用的国家字符集。 该GUC参数仅限于nchr(cvalue int|bigint)函数的使用。
  • 示例 重命名用户组。 --创建用户test。 gaussdb=# CREATE ROLE test PASSWORD '********'; --修改用户名,等效于ALTER ROLE RENAME。 gaussdb=# ALTER GROUP test RENAME TO tu_a1; 向用户组中添加或者删除用户。 --创建用户tu_a2、tu_a3。 gaussdb=# CREATE ROLE tu_a2 PASSWORD '********'; gaussdb=# CREATE ROLE tu_a3 PASSWORD '********'; --向用户组tu_a1中添加用户tu_a2。 gaussdb=# ALTER GROUP tu_a1 ADD USER tu_a2; --如上SQL等效于GRANT语句。 gaussdb=# GRANT tu_a1 TO tu_a3; --查询。 gaussdb=# SELECT groname, grolist FROM pg_group WHERE groname = 'tu_a1'; groname | grolist ---------+--------------- tu_a1 | {25590,25593} (1 row) gaussdb=# SELECT rolname, oid FROM pg_roles WHERE oid IN (25590,25593); rolname | oid ---------+------- tu_a2 | 25590 tu_a3 | 25593 (2 rows) --删除。 gaussdb=# DROP ROLE tu_a1,tu_a2,tu_a3;
  • 示例 gaussdb=# DROP SCHEMA IF EXISTS hr CASCADE; gaussdb=# CREATE SCHEMA hr; CREATE SCHEMA gaussdb=# SET CURRENT_SCHEMA = hr; SET gaussdb=# CREATE TABLE staffs ( staff_id NUMBER, first_name VARCHAR2, salary NUMBER ); CREATE TABLE gaussdb=# INSERT INTO staffs VALUES (200, 'mike', 5800); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (201, 'lily', 3000); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (202, 'john', 4400); INSERT 0 1 --创建重载函数 gaussdb=# CREATE OR REPLACE PACKAGE pkg1 IS PROCEDURE plus(var1 in int, var2 int, var3 out int); PROCEDURE plus(var1 in out int); END pkg1; / CREATE PACKAGE gaussdb=# CREATE OR REPLACE PACKAGE BODY pkg1 IS PROCEDURE plus(var1 in int, var2 int, var3 out int) AS BEGIN var3 = var1 + var2 + 1; END; PROCEDURE plus(var1 in out int) AS BEGIN var1 = var1 + 1; END; END pkg1; / CREATE PACKAGE BODY --创建存储过程dynamic_proc gaussdb=# CREATE OR REPLACE PROCEDURE dynamic_proc AS staff_id NUMBER(6) := 200; first_name VARCHAR2(20); salary NUMBER(8,2); BEGIN --执行匿名块 EXECUTE IMMEDIATE 'begin select first_name, salary into :first_name, :salary from hr.staffs where staff_id= :dno; end;' USING OUT first_name, OUT salary, IN staff_id; dbe_output.print_line(first_name|| ' ' || salary); END; / CREATE PROCEDURE --创建存储过程调用重载函数 gaussdb=# CREATE OR REPLACE PROCEDURE dynamic_proc1 AS v_sql VARCHAR2(200); var1 NUMBER(6) := 1; var2 NUMBER(6) := 2; var3 NUMBER(6); BEGIN v_sql := 'begin pkg1.plus(:1, :2, :3); end;'; EXECUTE IMMEDIATE v_sql USING var1, var2, out var3; dbe_output.print_line('var3: ' || var3); END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL dynamic_proc(); mike 5800.00 dynamic_proc -------------- (1 row) gaussdb=# CALL dynamic_proc1(); var3: 4 dynamic_proc1 --------------- (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE dynamic_proc; DROP PROCEDURE gaussdb=# DROP PROCEDURE dynamic_proc1; DROP PROCEDURE --开启dynamic_sql_check时报错示例 gaussdb=# SET behavior_compat_options = 'dynamic_sql_check'; SET gaussdb=# CREATE OR REPLACE PROCEDURE test_proc_exception001(a out integer, b inout integer, c integer) as BEGIN a := 1; begin b := 1/0; end; EXCEPTION WHEN others THEN b := 2; END; / CREATE PROCEDURE gaussdb=# DECLARE a integer := 1; c integer; BEGIN execute immediate 'begin test_proc_exception001(:1,:2,:1); end;' using in out a, out c, a; END; / ERROR: argnum not match in Dynamic SQL, using args num : 3 , actual sql args num : 2 CONTEXT: PL/pgSQL function inline_code_block line 4 at EXECUTE statement --修改同名占位符 gaussdb=# DECLARE a integer := 1; c integer; BEGIN execute immediate 'begin test_proc_exception001(:1,:2,:3); end;' using in out a, out c, a; END; / ANONYMOUS BLOCK EXECUTE gaussdb=# DROP PROCEDURE test_proc_exception001; DROP PROCEDURE
  • autovacuum_naptime 参数说明:设置两次自动清理操作的时间间隔。 参数类型:整型 参数单位:s 取值范围:1~2147483。 默认值:10min(即600s) 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值600,表示autovacuum_naptime为600s;带单位取值10min,表示autovacuum_naptime为10min。取值如果要带单位,必须为s、min、h、d 设置建议:设置为默认值,不作调整。
  • autovacuum_vacuum_threshold 参数说明:用于计算触发VACUUM的阈值,计算方式为autovacuum_vacuum_threshold+ reltuples(表上元组的个数) * autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时才会对这个表执行VACUUM操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • autovacuum_analyze_threshold 参数说明:用于计算触发ANALYZE操作的阈值,计算方式为autovacuum_analyze_threshold+ reltuples(表上元组的个数) * autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时才会对这个表执行ANALYZE操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • autovacuum_vacuum_scale_factor 参数说明:VACUUM时计算表的规模因子,用于计算执行VACUUM的阈值,计算方式为autovacuum_vacuum_threshold+ reltuples (表上元组的个数)* autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时才会对这个表执行VACUUM操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.2 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:该值越大,触发VACUUM的条件就越高,对性能影响越小。
  • autovacuum_analyze_scale_factor 参数说明:ANALYZE表的规模因子,用于计算执行ANALYZE的阈值,计算方式为autovacuum_analyze_threshold+ reltuples(表上元组的个数) * autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时才会对这个表执行ANALYZE操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:该值越大,触发ANALYZE的条件就越高,对性能影响越小。
  • autovacuum_freeze_max_age 参数说明:对于ASTORE表,指定在一个VACUUM操作被强制执行前,一个表的pg_class.relfrozenxid域能保持的最大周期(事务的)。 VACUUM也可以删除pg_clog/子目录中的旧文件。 即使自动清理线程被禁止,系统也会调用自动清理线程。 参数类型:长整型 参数单位:无 取值范围:100 000~576 460 752 303 423 487 默认值:4000000000 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
  • autovacuum_mode 参数说明:该参数仅在autovacuum设置为on的场景下生效,它控制autoanalyze和autovacuum的打开情况。 参数类型:枚举类型 参数单位:无 取值范围:analyze、vacuum、mix、none analyze:表示只做autoanalyze。 vacuum:表示只做autovacuum。 mix:表示autoanalyze和autovacuum都做。 none:表示autoanalyze和autovacuum都不做。 默认值:mix 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:建议设置为默认值。
  • autovacuum 参数说明:控制数据库自动清理线程(autovacuum)的启动。自动清理线程运行的前提是将track_counts设置为on。 如果希望系统在故障恢复后,具备自动清理两阶段事务的功能,请将autovacuum设置为on; 当设置autovacuum为on,autovacuum_max_workers为0时,表示系统不会自动进行autovacuum,只会在故障恢复后,自动清理两阶段事务; 当设置autovacuum为on,autovacuum_max_workers大于0时,表示系统不仅在故障恢复后,自动清理两阶段事务,并且还可以自动进行autovacuum。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启数据库自动清理线程。 off:表示关闭数据库自动清理线程。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
  • autoanalyze_timeout 参数说明:设置autoanalyze的超时时间。在对某张表做autoanalyze时,如果该表的analyze时长超过了autoanalyze_timeout,则自动取消该表此次analyze。 参数类型:整型 参数单位:秒(s) 取值范围:0~2147483,0表示不超时。 默认值:300 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:无。
  • autovacuum_max_workers 参数说明:设置能同时运行的自动清理线程的最大数量,该参数的取值上限与GUC参数max_connections和job_queue_processes大小有关。 参数类型:整型 参数单位:无 取值范围:最小值为0(表示不会自动进行autovacuum),理论最大值为262143,实际最大值为动态值,计算公式为“262143 - max_inner_tool_connections - max_connections - job_queue_processes - max_concurrent_autonomous_transactions - 辅助线程数 – autovacuum的launcher线程数 - 1”,其中辅助线程数和autovacuum的launcher线程数由两个宏来指定,当前版本的默认值分别为20和2。 默认值:3 调整建议:此参数设置越大,自动清理功能创建的线程数越多,占用的系统cpu和内存资源越多,所以设置时不建议设置过大,避免由于此参数设置过大导致内存无法分配或者占用过多cpu资源,导致数据库启动报错或业务受到影响。 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
  • log_autovacuum_min_duration 参数说明:当自动清理的执行时间大于或者等于某个特定的值时,向服务器日志中记录自动清理执行的每一步操作。设置此选项有助于追踪自动清理的行为。 举例如下:将log_autovacuum_min_duration设置为250ms,记录所有运行大于或者等于250ms的自动清理命令的相关信息。 参数类型:整型 参数单位:毫秒 取值范围:-1~2147483647。 当参数设置为0时,表示所有的自动清理操作都记录到日志中。 当参数设置为-1时,表示所有的自动清理操作都不记录到日志中。 当参数设置为非-1时,当由于锁冲突的存在导致一个自动清理操作被跳过,记录一条消息(记录跳过autovacuum原因,便于审计)。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:一般默认-1。日志中需要记录autovacuum操作的场景下,则设置为非-1。
  • 示例 示例1:Union中的待定类型解析。这里,unknown类型文本'b'将被解析成text类型。 1 2 3 4 5 6 gaussdb=# SELECT text 'a' AS "text" UNION SELECT 'b'; text ------ a b (2 rows) 示例2:简单Union中的类型解析。文本1.2的类型为numeric,而且integer类型的1可以隐含地转换为numeric,因此使用这个类型。 1 2 3 4 5 6 gaussdb=# SELECT 1.2 AS "numeric" UNION SELECT 1; numeric --------- 1 1.2 (2 rows) 示例3:转置Union中的类型解析。这里,因为类型real不能被隐含转换成integer,但是integer可以隐含转换成real,那么联合的结果类型将是real。 1 2 3 4 5 6 gaussdb=# SELECT 1 AS "real" UNION SELECT CAST('2.2' AS REAL); real ------ 1 2.2 (2 rows) 示例4:TD模式下,coalesce参数输入int和varchar类型,那么解析成varchar类型。A模式下会报错。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 --在A模式下,创建A兼容模式的数据库a_1。 gaussdb=# CREATE DATABASE a_1 dbcompatibility = 'A'; --切换数据库为a_1。 gaussdb=# \c a_1 --创建表t1。 a_1=# CREATE TABLE t1(a int, b varchar(10)); --查看coalesce参数输入int和varchar类型的查询语句的执行计划。 a_1=# EXPLAIN SELECT coalesce(a, b) FROM t1; ERROR: COALESCE types integer and character varying cannot be matched LINE 1: EXPLAIN SELECT coalesce(a, b) FROM t1; ^ CONTEXT: referenced column: coalesce --删除表。 a_1=# DROP TABLE t1; --切换数据库为testdb。 a_1=# \c testdb --在TD模式下,创建TD兼容模式的数据库td_1。 gaussdb=# CREATE DATABASE td_1 dbcompatibility = 'C'; --切换数据库为td_1。 gaussdb=# \c td_1 --创建表t2。 td_1=# CREATE TABLE t2(a int, b varchar(10)); --查看coalesce参数输入int和varchar类型的查询语句的执行计划。 td_1=# EXPLAIN VERBOSE select coalesce(a, b) from t2; QUERY PLAN --------------------------------------------------------------------------------------- Data Node Scan (cost=0.00..0.00 rows=0 width=0) Output: (COALESCE((t2.a)::character varying, t2.b)) Node/s: All dbnodes Remote query: SELECT COALESCE(a::character varying, b) AS "coalesce" FROM public.t2 (4 rows) --删除表。 td_1=# DROP TABLE t2; --切换数据库为testdb。 td_1=# \c testdb --删除A和TD模式的数据库。 gaussdb=# DROP DATABASE a_1; gaussdb=# DROP DATABASE td_1; 示例5:ORA模式下,将整个表达式最终的返回值类型定为result1的数据类型,或者与result1同类型范畴的更高精度的数据类型。 --在ORA模式下,创建ORA兼容模式的数据库ora_1。 gaussdb=# CREATE DATABASE ora_1 dbcompatibility = 'A'; --切换数据库为ora_1。 gaussdb=# \c ora_1 --开启Decode兼容性参数。 set sql_beta_feature='a_style_coerce'; --创建表t1。 ora_1=# CREATE TABLE t1(c_int int, c_float8 float8, c_char char(10), c_text text, c_date date); --插入数据。 ora_1=# INSERT INTO t1 VALUES(1, 2, '3', '4', date '12-10-2010'); --result1类型为char,defresult类型为text,text精度更高,返回值的类型由char更新为text。 ora_1=# SELECT decode(1, 2, c_char, c_text) AS result, pg_typeof(result) FROM t1; result | pg_typeof --------+----------- 4 | text (1 row) --result1类型为int,属于数值类型范畴,返回值的类型置为numeric。 ora_1=# SELECT decode(1, 2, c_int, c_float8) AS result, pg_typeof(result) FROM t1; result | pg_typeof --------+----------- 2 | numeric (1 row) --不存在defresult数据类型向result1数据类型之间的隐式转换,报错处理。 ora_1=# SELECT decode(1, 2, c_int, c_date) FROM t1; ERROR: CASE types integer and timestamp without time zone cannot be matched LINE 1: SELECT decode(1, 2, c_int, c_date) FROM t1; ^ CONTEXT: referenced column: c_date --关闭Decode兼容性参数。 set sql_beta_feature='none'; --删除表。 ora_1=# DROP TABLE t1; DROP TABLE --切换数据库为testdb。 ora_1=# \c testdb --删除ORA模式的数据库。 gaussdb=# DROP DATABASE ora_1; DROP DATABASE
  • 对于case和coalesce,在TD兼容模式下的处理 如果所有输入都是相同的类型,并且不是unknown类型,那么解析成这种类型。 如果所有输入都是unknown类型则解析成text类型。 如果输入字符串(包括unknown,unknown当text来处理)和数字类型,那么解析成字符串类型,如果是其他不同的类型范畴,则报错。 如果输入类型是同一个类型范畴,则选择该类型的优先级较高的类型。 把所有输入转换为所选的类型。如果从给定的输入到所选的类型没有隐式转换则失败。
  • UNION,CASE和相关构造解析 如果所有输入都是相同的类型,并且不是unknown类型,那么解析成这种类型。 如果所有输入都是unknown类型则解析成text类型(字符串类型范畴的首选类型)。否则,忽略unknown输入。 如果输入不属于同一个类型范畴,则失败。(unknown类型除外) 如果输入类型是同一个类型范畴,则选择该类型范畴的首选类型。(例外:union操作会选择第一个分支的类型作为所选类型。) 系统表pg_type中typcategory表示数据类型范畴,typispreferred表示是否是typcategory分类中的首选类型。 把所有输入转换为所选的类型(对于字符串保持原有长度)。如果从给定的输入到所选的类型没有隐式转换则失败。 若输入中含json、txid_snapshot、sys_refcursor或几何类型,则不能进行union。
  • max_concurrent_autonomous_transactions 参数说明:自治事务最大连接数,同一时间自治事务执行的最大并发数。当设置为0时,将无法执行自治事务。 参数类型:整型 参数单位:无 取值范围:0~10000,理论最大值为10000,实际最大值为动态值,计算公式为“262143 - job_queue_processes - autovacuum_max_workers - max_inner_tool_connections - max_connections - AUXILIARY_BACKENDS - AV_LAUNCHER_PRO CS ”,job_queue_processes、autovacuum_max_workers、max_inner_tool_connections和max_connections的值取决于对应GUC参数的设置,AUXILIARY_BACKENDS为预留辅助线程数固定为20,AV_LAUNCHER_PROCS为预留autovacuum的launcher线程数固定为2。 默认值:200(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存);150(96核CPU/768G内存);120(80核CPU/640G内存);100(64核CPU/512G内存);80(60核CPU/480G内存);40(32核CPU/256G内存);20(16核CPU/128G内存);10(8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存)。 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:根据实际业务需要和硬件配置设置此参数,建议不超过max_connections的1/10。若仅调大此参数,未同比例调整内存参数,业务压力大时,容易出现内存不足,报错提示“memory is temporarily unavailable”。 若升级过程中涉及此参数范围变更,并且在commit前修改了此参数,则如果执行升级回滚,需要将此参数调整至升级前允许的范围,否则可能导致数据库无法启动。
  • enable_gpi_auto_update 参数说明:控制在分区DDL命令中是否默认更新Global索引。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示默认更新Global索引,此时分区DDL无论带不带UPDATE GLOBAL INDEX子句,都会更新Global索引。 off表示默认不更新Global索引,此时只有当分区DDL带UPDATE GLOBAL INDEX子句,才会更新Global索引。 默认值:off
  • enable_partrouting_optimization 参数说明:控制是否支持分区表插入优化。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:布尔型 on表示支持分区表插入优化,针对INSERT SELECT语句,当SELECT包含常量分区键时,INSERT只需要做一次分区路由,提升性能。 off表示不支持分区表插入优化,插入每一条数据前都需要做一次分区路由去确定插入哪一张分区表。 默认值:on 分区表插入优化约束 只支持INSERT SELECT语句。 INSERT INTO ta SELECT FROM tb中,插入a表中所有分区键的值,对应SELECT结果集中的列值必须是常量(可以不存在该列,因为默认值也是恒定的)。 (1) INSERT INTO ta SELECT c,d FROM b WHERE tb.c='1'或SELECT '1' AS c, d FROM tb则可以判断结果列tb.c为常量。 (2) INSERT INTO ta SELECT c,d FROM b WHERE tb.c=func('1'); 如果func()不是volatile函数,也不是包含非常量参数的stable/immutable函数,则可以判断tb.c为常量。 (3) 如果列值为聚合函数的返回值,如:INSERT INTO ta SELECT count(c),d FROM b WHERE tb.c='1' GROUP BY c, d; 不能判断count(c)为常量。 不支持UPSERT子句。 不支持包含BEFORE和INSTEAD触发器的表,因为可能改变要插入的数据。
  • 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
  • cluster_run_mode 参数说明:双数据库实例容灾场景标识DN节点属于主数据库实例还是备数据库实例。单数据库实例使用默认值主数据库实例。 该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 取值范围:枚举类型 cluster_primary表示节点是主数据库实例的节点。 cluster_standby表示节点是备数据库实例的节点。 默认值:cluster_primary
共100000条