返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

授权
GBase 8c 提供了针对数据对象和角色授权的语句,请参考16.14.150 GRANT。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
679


这个参数被传给所有UDAF 函数,它指向一个UDF_INIT 结构,被用来在函
数之间传递信息;

UDF_INIT 结构成员列在下面。初始化函数应该初始化它想要改变的任何成
员,未初始化的成员变量使用默认值。
typedef struct st_udf_init
{
my_bool maybe_null;
unsigned int decimals;
unsigned long max_length;
char *ptr;
my_bool const_item;
void *extension;
unsigned long *arg_max_lengths;
unsigned long max_buffer_length;
} UDF_INIT;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1399
unsigned int decimals
指定聚集结果小数点的最大位数,对于返回real、decimal 类型的func 适用。
unsigned int max_length

指定返回结果最大长度,用于create table like/as select 等DML;

对于返回string/decimal 类型的函数如果函数输出超过max_length,
程序行为
见Table 5-3。此表列出了express 引擎的默认行为;

max_length、decimals 在UDAF 返回不同的数据类型时的配置规则,具体参
见下表:
表5- 197 UDAF 返回值类型含义
返回数据类型
类型含义
数据结果表示
max_length
decimals
string
varchar ,date 类
最大字节数
(结果超过
报错)
不生效
decimal
decimal
最大字节数
(结果溢出
报错)
最大小数位
(结果超过
截断)
real
double
(使用缺省)不生效
最大小数位
(结果超过
截断)
integer
bigint
(使用缺省)不生效
不生效

针对udf、udaf,对init 函数中的max_length、decimals 值在init 之后进行合
法性检查。具体规则如下:
表5- 198 合法性检查规则
返回数据类型
UDF/UDAF
String
最大值为65535
最小值为0,不合法时报错
不生效
Decimal
最大值为67(包含小数部分时候,最
大为67,不包含小数部分时,最大为
66),换算成precision 后,最大为65
不合法时报错
最大值为30,不合法时报错
Real
不生效
最大值为31,不合法时报错
Integer
不生效
不生效

上述表格中,除了不生效情况外,其余的情况下都需要在UDF/UDAF 的init
函数里面显示设置max_length 或decimals 的值;如果没有在init 函数

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1400
里面设置的max_length 或decimals,会根据函数的参数进行评估,得到一个
评估的max_length 或decimals 的值,具体见下表:
表5- 199 func 函数返回长度超过max_length 后的处理行为(select 为例)
引擎类别
String
Decimal
Express 引擎
超出后抛异常
超出后抛异常
char *ptr
指向程序为每个分组分配的中间结果buf。
unsigned long *arg_max_lengths
参数占用的最大字节长度,是一个数组,每个参数占用一个。
unsigned long
max_buffer_length
存放聚集中间结果的buf 的最大字节宽度,
用户在func_max_buffer_length 函数中
更新并返回此值。
my_bool
maybe_null
如果func 不返回null,则设置为0,如果后续func 返回了Null 值,则sql 报错退
出,默认为1 。
my_bool const_item
func 始终返回同一个值,则设置为1。
void * extention
UDAF 函数不使用此字段。

enable_hashagg
参数说明:控制优化器对Hash 聚集规划类型的使用。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示使用。

off 表示不使用。
默认值:on