南大通用GBase 8a的Decimal溢出处理参数_gbase_func_compatible_mode

在GBase 8a处理Decimal类型数据时,如果溢出,默认是报错。通过_gbase_func_compatible_mode参数,可以设置溢出时返回null。

参考

GBase 8a 参数文章汇总

参数

_gbase_func_compatible_mode

说明

decimal 类型返回值溢出处理规则:

  • _gbase_func_compatible_mode=0 时(默认)报错。
  • _gbase_func_compatible_mode=1 时返回 NULL。

该参数支持session级设置。

样例

默认值返回报错

DECIMAL value is out of range

gbase> show variables like '%_gbase_func_compatible_mode%';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| _gbase_func_compatible_mode | OFF   |
+-----------------------------+-------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select cast(power(2,1000) as decimal(64)) * 10240;
ERROR 1906 (22003): DECIMAL value is out of range in 'pow(2,1000)'

修改参数为1,返回NULL

gbase> set _gbase_func_compatible_mode=1;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> select cast(power(2,1000) as decimal(64)) * 10240;
+--------------------------------------------+
| cast(power(2,1000) as decimal(64)) * 10240 |
+--------------------------------------------+
|                                       NULL |
+--------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)