返回首页

gbase数据、南大通用产品文档:GBase8aBlob、Clob、Byte、Text 类型数据更新

更新日期:2024年09月11日

目前blob、clob、byte、text 类型数据更新,暂不支持所有列都是blob、
clob、byte、text 类型的表,至少有一列是blob、clob、byte、text 类型以
外的数据。


这个参数被传给所有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-04-10)
南大通用数据技术股份有限公司
1407
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-04-10)
南大通用数据技术股份有限公司
1408
里面设置的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 函数不使用此字段。

sysdepend 系统目录表描述每个视图或表与其他视图或表的依赖性。对于每个依赖
性,此表中都存在一行,所以基于三个表的视图有三行。sysdepend 表具有以下列。
表 13. SYSDEPEND 表列描述

类型
解释
btabid
INTEGER
唯一地标识基本表或视图的代码
btype
CHAR(1)
基本对象类型:T = 表 V = 视图
dtabid
INTEGER
唯一地标识从属表或视图的代码
dtype
CHAR(1)
从属对象的类型的代码;当前,只实现了视图(V = 视
图)
建立了 btabid 和 dtabid 列的索引,并且这些列允许重复值。