返回首页

gbase数据、南大通用产品文档:GBase8aUDF 函数接口

更新日期:2024年09月11日

对每一个想在SQL 语句中使用的函数(假设函数名为func),应该定义对应的C
(或C++ ,C++函数声明要加上extern
"C ")函数,该函数满足以下规则:
func()(必需)
主函数。这是计算函数结果的地方,每行调用一次。SQL 类型与C/C++函数返回
类型的对应关系如下:
表5- 194 SQL 类型与C/C++函数返回类型的对应关系
SQL 类型
C/C++ 类型
STRING
char *
INTEGER
long long
REAL
double
func_init()(必需)
func()的初始化函数,只在开始调用一次,它可用于:

检查传到func()的参数个数;

检查参数类型是否正确或者当主函数被调用时将参数强制转换成需要的类
型;

分配主函数所需的内存;

指定返回结果的最大长度;

指定返回REAL 类型的函数的最大小数位;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1392

指定结果是否允许为NULL。
func_deinit()(可选)
func()的结束函数,
只在所有行结束后调用一次,
它可用于释放初始化函数分配的
内存。
说明

当一条SQL 语句调用func()时,GBase 调用初始化函数func_init(),执行所需的初
始化工作,例如参数检查或内存分配。

如果func_init()返回一个错误,SQL 语句返回一条错误消息同时不会调用主函数和
结束函数。否则,为每行调用主函数func()一次。

在所有行被处理完后,调用结束函数func_deinit(),执行必要的清理工作。
注意
所有函数必须是线程安全的(不仅是主函数,还有初始化和结束函数)。不允许
在函数中改变全局共享或静态的变量。如果需要内存,应该在func_init()中分
配它并且在func_deinit()中释放它。

需要在服务端完成配置,用户才可以通过客户端远程连接。

GLOBAL_STATIO_SYS_SEQUENCES 视图显示各节点的命名空间中所有系统表为序
列的IO 状态信息。
名称
类型
描述
node_name
name
数据库进程名称。
relid
oid
序列OID。
schemaname
name
序列中模式名。
relname
name
序列名。
blks_read
bigint
从序列中读取的磁盘块数。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1050
名称
类型
描述
blks_hit
bigint
序列中缓存命中数。