在GBase 8a处理Decimal类型数据时,如果溢出,默认是报错。通过_gbase_func_compatible_mode参数,可以设置溢出时返回null。
目录导航
参考
参数
_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)