更新时间:2024-05-07 GMT+08:00

平台和客户端兼容性

很多平台都使用数据库系统,数据库系统的对外兼容性给平台提供了很大的方便。

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。

support_extended_features

参数说明:控制是否支持数据库的扩展特性。

该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示支持数据库的扩展特性。
  • off表示不支持数据库的扩展特性。

默认值:off

lastval_supported

参数说明:控制是否可以使用lastval函数。

该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示支持lastval函数,同时nextval函数不支持下推。
  • off表示不支持lastval函数,同时nextval函数可以下推。

默认值:off

group_concat_max_len

参数说明:搭配函数GROUP_CONCAT使用,限制其返回值长度,超长截断。分布式中暂不支持GROUP_CONCAT函数,故该参数可设置,但并无实际效果。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:0-9223372036854775807

默认值:1024

sql_compatibility

参数说明:控制数据库的SQL语法和语句行为同哪一个主流数据库兼容。该参数属于INTERNAL类型参数,用户无法修改,只能查看。

取值范围:枚举型

  • ORA表示同oracle兼容。
  • TD表示同Teradata兼容。
  • MYSQL表示同MySQL兼容。
  • PG表示同PostgreSQL兼容。

默认值:MYSQL

  • 该参数只能在执行CREATE DATABASE命令(详见《开发者指南》的“SQL参考 > SQL语法 > CREATE DATABASE”章节)创建数据库的时候设置。
  • 在数据库中,该参数只能是确定的一个值,要么始终设置为ORA,要么始终设置为TD,请勿任意改动,否则会导致数据库行为不一致。

behavior_compat_options

参数说明:数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

默认值:""

  • 当前只支持平台和客户端兼容性
  • 配置多个兼容性配置项时,相邻配置项用逗号隔开,例如:set behavior_compat_options='end_month_calculate,display_leading_zero';
表1 兼容性配置项

兼容性配置项

兼容性行为控制

display_leading_zero

浮点数显示配置项。控制数值类型中char、character、nchar、varchar、character varying、varchar2、nvarchar2、text、clob等所有字符串类型和float4、float8、numeric等任意精度类型的小数点前零显示。并且length计算数字长度同步显示。

  • 不设置此配置项时,对于-1~0和0~1之间的小数,不显示小数点前的0。比如:
    1
    2
    3
    4
    5
    gaussdb=# select 0.1231243 as a, 0.1231243::numeric as b,0.1231243::integer(10,3) as c, length(0.1242343) as d;
        a     |    b     |  c   | d
    ----------+----------+------+---
     .1231243 | .1231243 | .123 | 8
    (1 row)
    
  • 设置此配置项时,对于-1~0和0~1之间的小数,显示小数点前的0。比如:
    1
    2
    3
    4
    5
    gaussdb=# select 0.1231243 as a, 0.1231243::numeric as b,0.1231243::integer(10,3) as c, length(0.1242343) as d;
         a     |     b     |   c   | d
    -----------+-----------+-------+---
     0.1231243 | 0.1231243 | 0.123 | 9
    (1 row)
    

end_month_calculate

add_months函数计算逻辑配置项。

假定函数add_months的两个参数分别为param1和param2,param1的月份和param2的和为月份result。

  • 不设置此配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期小,计算结果中的日期字段(Day字段)和param1的日期字段保持一致。比如,
1
2
3
4
5
gaussdb=# select add_months('2018-02-28',3) from sys_dummy;
add_months
---------------------
2018-05-28 00:00:00
(1 row)
  • 设置此配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期比小,计算结果中的日期字段(Day字段)和result的月末日期保持一致。比如,
1
2
3
4
5
gaussdb=# select add_months('2018-02-28',3) from sys_dummy;
add_months
---------------------
2018-05-31 00:00:00
(1 row)

compat_analyze_sample

analyze采样行为配置项。

设置此配置项时,会优化analyze的采样行为,主要体现在analyze时全局采样会更精确的控制在3万条左右,更好的控制analyze时Coordinator端的内存消耗,保证analyze性能的稳定性。

bind_schema_tablespace

绑定模式与同名表空间配置项。

如果存在与模式名sche_name相同的表空间名,那么如果设置search_path为sche_name,default_tablespace也会同步切换到sche_name。

bind_procedure_searchpath

未指定模式名的存储过程中的数据库对象的搜索路径配置项。

在存储过程中如果不显示指定模式名,会优先在存储过程所属的模式下搜索。

如果找不到,则有两种情况:

  • 若不设置此参数,报错退出。
  • 若设置此参数,按照search_path中指定的顺序继续搜索。如果还是找不到,报错退出。

correct_to_number

控制to_number()结果兼容性的配置项。

若不设置此配置项,则to_number()函数结果默认与ORA数据库保持一致。

1
2
3
gaussdb=# select '' AS to_number_14, to_number('34,50','999,99');
ERROR:  invalid data.
CONTEXT:  referenced column: to_number

若设置此配置项,则to_number()函数结果与pg11保持一致。

1
2
3
4
5
gaussdb=# select '' AS to_number_14, to_number('34,50','999,99');
 to_number_14 | to_number
--------------+-----------
              |      3450
(1 row)

unbind_divide_bound

控制对整数除法的结果进行范围校验。

若不设置此配置项,则会对除法结果做范围校验,例如,INT_MIN/(-1)会因为输出结果大于INT_MAX而报越界错误。

1
2
gaussdb=# select (-2147483648)::int4 / (-1)::int4;
ERROR:  integer out of range

若设置此配置项,则不需要对除法结果做范围校验,例如,INT_MIN/(-1)可以得到输出结果为INT_MAX+1。

1
2
3
4
5
gaussdb=# select (-2147483648)::int4 / (-1)::int4;
  ?column?  
------------
 2147483648
(1 row)

convert_string_digit_to_numeric

控制是否将表中以字符串形式表示的numeric常量和数字类型做比较时统一都转换为numeric类型再进行比较。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
gaussdb=# create table test1 (c1 int, c2 varchar);
gaussdb=# insert into test1 values (2, '1.1');
gaussdb=#  set behavior_compat_options='';
gaussdb=#  select * from test1 where c2 > 1;
ERROR:  invalid input syntax for type bigint: "1.1"

gaussdb=#  set behavior_compat_options='convert_string_digit_to_numeric';
gaussdb=#  select * from test1 where c2 > 1;
 c1 | c2  
----+-----
  2 | 1.1 
(1 row)

return_null_string

控制函数lpad()和rpad()结果为空字符串''的显示配置项。

  • 不设置此配置项时,空字符串显示为NULL。
1
2
3
4
5
gaussdb=# select length(lpad('123',0,'*')) from sys_dummy;
length
--------

(1 row)
  • 设置此配置项时,空字符串显示为''。
1
2
3
4
5
gaussdb=# select length(lpad('123',0,'*')) from sys_dummy;
length
--------
0
(1 row)

compat_concat_variadic

控制函数concat()和concat_ws()对variadic类型结果兼容性的配置项。由于MYSQL数据库无variadic类型,所以该选项对MY数据库无影响。

若不设置此配置项,当concat函数参数为variadic类型时,默认ORA数据库和TD数据库兼容模式下结果相同,且与ORA数据库保持一致。

1
2
3
4
5
gaussdb=# select concat(variadic NULL::int[]) is NULL;
 ?column? 
----------
 t
(1 row)

若设置此配置项,当concat函数参数为variadic类型时,保留ORA数据库和TD数据库兼容模式下不同的结果形式。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
--ORA数据库下:
gaussdb=# select concat(variadic NULL::int[]) is NULL;
 ?column? 
----------
 t
(1 row)
--TD数据库下:
gaussdb=# select concat(variadic NULL::int[]) is NULL;
 ?column? 
----------
 f
(1 row)

merge_update_multi

控制在使用MERGE INTO ... WHEN MATCHED THEN UPDATE(参考《开发者指南》的“SQL参考 > SQL语法 > MERGE INTO”章节)和INSERT ... ON DUPLICATE KEY UPDATE(参考《开发者指南》的“SQL参考 > SQL语法 > INSERT”章节)时,当目标表中一条目标数据与多条源数据冲突时UPDATE行为。

若设置此配置项,当存在上述场景时,该冲突行将会多次执行UPDATE;否则(默认)报错,即MERGE或INSERT操作失败。

plstmt_implicit_savepoint

控制存储过程中更新语句的执行是否拥有独立的子事务。

若设置此配置项,存储过程中每条更新语句前开启隐式保存点,EXCEPTION块中默认回退到最近的保存点,从而保证只回退失败语句的修改。该选项是为了兼容O数据库的EXCEPTION行为。

hide_tailing_zero

numeric显示配置项。不设置此项时,numeric按照指定精度显示;设置此项时,所有输出numeric的场景均隐藏小数点后的末尾0,包括显示指定format精度情况。

例如:

gaussdb=# set behavior_compat_options='hide_tailing_zero';
gaussdb=# select cast(123.123 as numeric(15,10)) as a, to_char(cast(123.123 as numeric(15,10)), '999D999999');
    a    | to_char
---------+----------
 123.123 |  123.123
(1 row)
gaussdb=# set behavior_compat_options='';
gaussdb=# select cast(123.123 as numeric(15,10)) as a, to_char(cast(123.123 as numeric(15,10)), '999D999999');
       a        |   to_char
----------------+-------------
 123.1230000000 |  123.123000
(1 row)

plsql_security_definer

开启此参数后,创建存储过程时默认为定义者权限。

char_coerce_compat

控制char(n)类型向其它变长字符串类型转换时的行为。不设置该参数时,char(n)类型转换其它变长字符串类型时会省略尾部的空格,设置该参数时,转换时不再省略尾部的空格,并且在转换时如果char(n)类型的长度超过其它变长字符串类型时将会报错。该参数仅在sql_compatibility参数的值为ORA时生效,并且开启该参数后无论是隐式转换、显式转换还是通过调用text(bpchar)函数转换类型都不再省略尾部空格。

gaussdb=# set behavior_compat_options='';
gaussdb=# create table tab_1(col1 varchar(3)); 
gaussdb=# create table tab_2(col2 char(3));
gaussdb=# insert into tab_2 values('   ');
gaussdb=# insert into tab_1 select col2 from tab_2;
gaussdb=# select * from tab_1 where col1 is null;
 col1 
------
 
(1 row)
gaussdb=# select * from tab_1 where col1='   ';
 col1 
------
(0 rows)
gaussdb=# delete from tab_1;
gaussdb=# set behavior_compat_options = 'char_coerce_compat';
gaussdb=# insert into tab_1 select col2 from tab_2;
gaussdb=# select * from tab_1 where col1 is null;
 col1 
------
(0 rows)
gaussdb=# select * from tab_1 where col1='   ';
 col1 
------
    
(1 row)

truncate_numeric_tail_zero

numeric显示配置项。不设置此项时,numeric按照默认精度显示;设置此项时,除去to_char(numeric, format)这种显示设置精度的情况,所有输出numeric的场景均会隐藏小数点后的末尾0。例如:

gaussdb=# set behavior_compat_options='truncate_numeric_tail_zero';
gaussdb=# select cast(123.123 as numeric(15,10)) as a, to_char(cast(123.123 as numeric(15,10)), '999D999999');
    a    |   to_char
---------+-------------
 123.123 |  123.123000
(1 row)
gaussdb=# set behavior_compat_options='';
gaussdb=# select cast(123.123 as numeric(15,10)) as a, to_char(cast(123.123 as numeric(15,10)), '999D999999');
       a        |   to_char
----------------+-------------
 123.1230000000 |  123.123000
(1 row)

plpgsql_dependency

开启此参数后,创建函数,存储过程支持未定义的对象。可以新建成功。可以在GS_DEPENDENCIES和GS_DEPENDENCIES_OBJ查询对应的依赖关系。

开启此参数后,创建PLSQL对象时,会主动维护依赖于该PLSQL对象的OID,不再需要用户手动更新。

以下情况支持建立依赖:

  1. 函数头中依赖类型和参数默认值位置出现函数。
  2. 函数中类型、变量依赖类型。
  3. 函数体中,函数调用、赋值语句右值表达式中调用函数A,函数A出入参包含函数B时,函数B不建立依赖。例如functionA(functionB())。仅建立和函数A的依赖。
  4. 视图中依赖函数。

以下情况不支持不建立依赖:

  1. Schema中类型依赖其他类型。
  2. SQL语句中对函数、变量、表、视图的依赖。

    例如 select id into var1 from table1 join view1 on table1.id = pkg1.var1; table1,view1,pkg1均不记录依赖。

  3. 视图中对函数、变量、表、视图的依赖。

注意:

  1. 在并发创建PLSQL对象时,如果需要维护的对象间存在竞争关系,可能会造成死锁。
  2. 当修改对象在gs_dependencies和gs_dependencies_obj中存在时,不允许进行rename操作。
  3. 当函数,存储过程,包依赖同义词时,该同义词必须提前建立,不支持主动维护oid。

disable_rewrite_nesttable

分布式不支持。

proc_outparam_override

控制存储过程出参的重载行为,打开该参数后,对于存储过程只有out出参部分不同的情况下,也可以正常创建和调用。目前只有gsql与jdbc连接数据库时可以使用该参数,对于其他工具打开该参数连接数据库时无法正常调用带有out的存储过程。

支持带有out出参的函数返回record类型,且out出参正常赋值。

aformat_regexp_match

控制正则表达式函数的匹配行为。

设置此项,且sql_compatibility参数的值为ORA或MYSQL时,正则表达式的 flags 参数支持的选项含义有变更:
  1. 默认不能匹配 '\n' 字符。
  2. flags 中包含n选项时, . 能够匹配 '\n' 字符。
  3. regexp_replace(source, pattern replacement) 函数替换所有匹配的子串。
  4. regexp_replace(source, pattern, replacement, flags) 在 flags值为'' 或者null时,返回值为null。

否则,正则表达式的 flags 参数支持的选项含义:

  1. 默认能匹配 '\n' 字符。
  2. flags 中的 n 选项表示按照多行模式匹配。
  3. regexp_replace(source, pattern replacement) 函数仅替换第一个匹配到的子串。
  4. regexp_replace(source, pattern, replacement, flags) 在 flags值为'' 或者null时,返回值为替换后的字符串。

disable_emptystr2null

开启此参数后,关闭所有字符类型默认将空串转换为null功能。包括text、clob、blob、raw、bytea、varchar、nvarchar2、bpchar、char、name、byteawithoutorderwithqualcol、byteawithoutordercol类型。该参数为逃生参数,非必要用户不要自行设置。

select_into_return_null

该参数在分布式场景下无效。

proc_uncheck_default_param

函数调用时不检查默认参数省略情况配置项。

  • 不设置此配置项时,调用带有默认参数的函数时,入参从左往右排入函数,如果有非默认参数的入参缺失则会报错。比如,
    gaussdb=# create or replace function test(f1 int, f2 int default 20, f3 int, f4 int default 40, f5 int default 50) return int
    gaussdb-# as
    gaussdb$# begin
    gaussdb$# raise info 'f1:%',f1;
    gaussdb$# raise info 'f2:%',f2;
    gaussdb$# raise info 'f3:%',f3;
    gaussdb$# raise info 'f4:%',f4;
    gaussdb$# raise info 'f5:%',f5;
    gaussdb$# return 1;
    gaussdb$# end;
    gaussdb$# /
    CREATE FUNCTION
    gaussdb=# select test(1,2);
    ERROR:  function test(integer, integer) does not exist
    LINE 1: select test(1,2);
                   ^
    HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
    CONTEXT:  referenced column: test
  • 设置此配置项时,调用带有默认参数的函数时,入参从左往右排入函数,允许缺省默认参数个入参,如果有非默认参数的入参缺失,则会用错位的默认值填充该参数。比如,
    gaussdb=# create or replace function test(f1 int, f2 int default 20, f3 int, f4 int default 40, f5 int default 50) return int
    gaussdb-# as
    gaussdb$# begin
    gaussdb$# raise info 'f1:%',f1;
    gaussdb$# raise info 'f2:%',f2;
    gaussdb$# raise info 'f3:%',f3;
    gaussdb$# raise info 'f4:%',f4;
    gaussdb$# raise info 'f5:%',f5;
    gaussdb$# return 1;
    gaussdb$# end;
    gaussdb$# /
    CREATE FUNCTION
    gaussdb=# select test(1,2);
    INFO:  f1:1
    CONTEXT:  referenced column: test
    INFO:  f2:2
    CONTEXT:  referenced column: test
    INFO:  f3:20
    CONTEXT:  referenced column: test
    INFO:  f4:40
    CONTEXT:  referenced column: test
    INFO:  f5:50
    CONTEXT:  referenced column: test
     test 
    ------
        1
    (1 row)

    如上,f3被错误的默认值填充。

    警告:

    该场景下,非默认参数会被错位的默认值填充。

dynamic_sql_compat

开启此参数后,动态语句不会将模板SQL中的同名模板参数视为同一个变量,而是按照顺序依次匹配using子句中的变量值。

注意:
  • 动态语句执行匿名块语句时调用存储过程的场景,只针对IN参数进行矫正,如果需要对OUT参数进行检查需要设置proc_outparam_override选项。
  • 动态语句执行匿名块语句时调用存储过程的场景,开启参数后不会对存储过程中参数的IN/OUT属性和using子句中的IN/OUT属性进行检查。

dynamic_sql_check

开启此参数后,动态语句模板SQL中的不同模板参数个数与using子句中的变量个数不同时将会在动态语句执行期间报错。

注意:
  • 不推荐同时使用dynamic_sql_check选项和dynamic_sql_compat选项,开启dynamic_sql_compat选项后dynamic_sql_check选项将不再生效。
  • 动态语句执行匿名块语句时调用存储过程的场景,只针对IN参数进行检查,如果需要对OUT参数进行检查需要设置proc_outparam_override选项。
  • 动态语句执行匿名块语句时调用存储过程的场景,开启参数后不会对存储过程中参数的IN/OUT属性和using子句中的IN/OUT属性进行检查。

enable_funcname_with_argsname

开启参数后,使用select调用函数时投影别名显示完整函数。

  • 不设置此配置项时,使用select调用函数时投影别名仅显示函数名。比如:
    gaussdb=# SELECT power(2,3);
     power 
    -------
         8
    (1 row)
    
    gaussdb=# SELECT count(*) FROM db_ind_columns;
     count 
    -------
       611
    (1 row)
    
    gaussdb=# SELECT count(index_name) FROM db_ind_columns;
     count 
    -------
       611
    (1 row)
    
    gaussdb=# SELECT left('abcde', 2);
     left 
    ------
     ab
    (1 row)
    
    gaussdb=# SELECT pg_client_encoding();
     pg_client_encoding 
    --------------------
     UTF8
    (1 row)
  • 设置此配置项时,使用select调用函数时投影别名显示完整函数。比如:
    gaussdb=# SET behavior_compat_options = 'enable_funcname_with_argsname';
    SET
    gaussdb=# SELECT power(2,3);
     power(2,3) 
    ------------
              8
    (1 row)
    
    gaussdb=# SELECT count(*) FROM db_ind_columns;
     count(*) 
    ----------
          611
    (1 row)
    
    gaussdb=# SELECT count(index_name) FROM db_ind_columns;
     count(index_name) 
    -------------------
                   611
    (1 row)
    
    gaussdb=# SELECT left('abcde', 2);
     left('abcde',2) 
    -----------------
     ab
    (1 row)
    
    gaussdb=# SELECT pg_client_encoding();
     pg_client_encoding() 
    ----------------------
     UTF8
    (1 row)
    注意:
    • 目前仅支持func_name(args_list)、func_name()、func_name(*)三种形式投影别名显示完整函数,且参数args类型仅支持字符类型、数值类型、列名、函数。函数名支持带有schema、包名。不支持参数带有其他子句(如order by子句)、不支持参数为表达式、仅支持参数带有DISTINCT关键字,不支持带有其他关键字时显示完整函数。
    • 一些特殊函数不支持投影别名显示完整函数,包括函数:COLLATION FOR、CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP、DBTIMEZONE、LOCALTIME、LOCALTIMESTAMP、SYSDATE、SESSIONTIMEZONE、ROWNUM、CURRENT_ROLE、CURRENT_USER、SESSION_USER、USER、CURRENT_CATALOG、CURRENT_SCHEMA、CAST、EXTRACT、TIMESTAMPDIFF、OVERLAY、POSITION、SUBSTRING、TREAT、TRIM、NULLIF、NVL、NVL2、COALESCE、GREATEST、LEAST、LNNVL、REGEXP_LIKE以及XML函数。
    • 一些安全加解密函数、脱敏函数,投影别名显示完整函数可能存在安全问题,在这里就还是仅显示函数名。包括函数:gs_encrypt_aes128,gs_decrypt_aes128,gs_encrypt,gs_decrypt,aes_encrypt,aes_decrypt,pg_create_physical_replication_slot_extern,dblink_connect,creditcardmasking",basicemailmasking",fullemailmasking,alldigitsmasking,shufflemasking,randommasking,regexpmasking,gs_digest。
    • 不支持=>传参方式调用函数是投影别名显示完整函数,不支持投影别名显示"",如:select "power"(2,3)。
    • 为了让投影别名显示完整函数,本功能不受去除末尾0等参数影响。

allow_rownum_alias

开启此参数后,将允许ROWNUM在SQL语句中通过AS语法用作列的别名,ROWNUM将作为普通标识符使用,不再能够作为伪列使用。

警告:

不建议在执行业务期间变更该参数的状态。开启参数的状态下,在数据库中用ROWNUM作为名称创建的数据库对象(如表名,列名,数据库名等)只能在开启参数的情况下使用,否则将会产生歧义,行为不可预期。关闭参数的状态下,在数据库中ROWNUM作为伪列使用的行为将在开启参数后失效,行为不可预期。

current_sysdate

开启此参数后,执行sysdate时,会获取当前操作系统时间。

gaussdb=# set behavior_compat_options='current_sysdate';

SET

gaussdb=# select sysdate;

current_sysdate

---------------------

2023-06-20 20:15:27

(1 row)

a_format_version

参数说明:数据库平台兼容性行为配置项,该参数的值为字符串枚举值。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

默认值:""

  • 当前只支持兼容性配置项如表2所示。
  • 兼容性配置项时设置字符串,例如:set a_format_version='10c';
表2 兼容性配置项

兼容性配置项

兼容性行为控制

10c

ORA平台兼容10C版本

a_format_dev_version

参数说明:数据库平台迭代小版本兼容性行为配置项,该参数的值为字符串枚举值。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

默认值:""

  • 当前只支持兼容性配置项如表3所示。
  • 兼容性配置项时设置字符串,例如:set a_format_dev_version='s1';
表3 兼容性配置项

兼容性配置项

兼容性行为控制

s1

  • ORA平台兼容迭代小版本,影响函数(TRUNC(date, fmt),ROUND(date, fmt),NVL2,LPAD,RPAD,ADD_MONTHS,MONTHS_BETWEEN,REGEXP_REPLACE,REGEXP_COUNT,TREAT,EMPTY_CLOB,INSTRB,trunc(number),greatest,least,mod,round(number),cast,to_date,to_timestamp,chr,rtrim,translate,to_char,to_number,to_timestamp_tz)。
  • 数据类型转换:小数字符串转换成整数类型(int1/int2/int4/int8/int16)时进行四舍五入。
  • 数据类型转换:支持timestamp with time zone到timestamp without time zone的隐式转换。

s2

  • A平台兼容迭代小版本,影响函数(dump, to_single_byte, to_multi_byte, nls_upper, nls_lower, initcap, ascii2, asciistr, unistr, vsize, cosh, remainder, sinh, tanh, nanvl, current_date, current_timestamp, dbtimezone, numtodsinterval, numtoyminterval, new_time, sessiontimezone, sys_extract_utc, tz_offset, to_binary_double, to_binary_float, to_dsinterval, to_yminterval, lnnvl, ora_hash)。
  • 兼容配置项为s1时的所有行为。

plpgsql.variable_conflict

参数说明:设置同名的存储过程变量和表的列的使用优先级。

该参数属于USERSET类型参数,仅支持表1中对应设置方法3进行设置。

取值范围:字符串

  • error表示遇到存储过程变量和表的列名同名则编译报错。
  • use_variable表示存储过程变量和表的列名同名则优先使用变量。
  • use_column表示存储过程变量和表的列名同名则优先使用列名。

默认值:error

td_compatible_truncation

参数说明:控制是否开启与Teradata数据库相应兼容的特征。该参数在用户连接上与TD兼容的数据库时,可以将参数设置成为on(即超长字符串自动截断功能启用),该功能启用后,在后续的insert语句中,对目标表中char和varchar类型的列插入超长字符串时,会按照目标表中相应列定义的最大长度对超长字符串进行自动截断。保证数据都能插入目标表中,而不是报错。

超长字符串自动截断功能不适用于insert语句包含外表的场景。

如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示启动超长字符串自动截断功能。
  • off表示停止超长字符串自动截断功能。

默认值:off

nls_timestamp_format

参数说明:设置时间戳默认格式。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

默认值:DD-Mon-YYYY HH:MI:SS.FF AM

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的情况下有效。

max_function_args

参数说明:函数参数最大个数。

该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。

取值范围:整型

默认值:8192

convert_string_to_digit

参数说明:设置隐式转换优先级,是否优先将字符串转为数字。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示优先将字符串转为数字。
  • off表示不优先将字符串转为数字。

默认值:on

该参数调整会修改内部数据类型转换规则,导致不可预期的行为,请谨慎调操作。