linux环境下,mysql UDF的实现编译及安装


1.     UDF概念

UDF就是user define function。在mysql内部,提供了很多内建函数,如 abs()、count()等,但根据实际情况,内建的函数并不一定能满足我们的需要,这时就可以使用mysql提供的udf了,构建我们自己的函数,然后加到mysql中。如其他函数一样,udf有参数,也有输出,udf函数类型有两类:单一函数如abs(),聚集函数如count()、sum()等,创建udf函数使用的语言是C/C++。

 

2.     UDF API介绍

在编写udf的过程中,有几个重要api,也是固定流程,以下将介绍各个api以及编写过程中的注意事项。

 

2.1.        初始化函数

函数原型:my_bool name_init(UDF_INIT *inited, UDF_ARGS *args, char*message)

该函数在sql语句之前执行,做一些初始化的工作,如参数类型检查,参数个数判断,内存分配,同时在该函数中还可以做参数类型的强制转换,name表示实际要取的函数名字。

参数介绍:

 UDF_INIT

参数名称

参数类型

说明

maybe_null

my_bool

如果为1,表示udf可以返回NULL

decimals

unsigned int

若返回值是实数,表示精度,范围0—30

max_length

unsigned long

返回值最大允许的长度

ptr

char*

参数指针,可以自定义分配内存,并传给其他api使用

const_item

my_bool

为1表示函数总是返回相同的值

extension

void*

用于扩展

 

 UDF_ARGS

参数名称

参数类型

说明

arg_count

unsigned int

参数个数

arg_type

enum Item_result*

参数类型数组,记录每一个参数的类型,枚举值有:STRING_RESULT、DECIMAL_RESULT、REAL_RESULT、INT_RESULT

args

char**

存储sql语句执行后返回的结果,对于STRING_RESULT、DECIMAL_RESULT是char*,INT_RESULT是long long*,REAL_RESULT是double*,也可能是NULL指针

maybe_null

char*

该数组表示每个参数是否可以为空

lengths

unsigned int*

存储每个参数的长度

attributes

char**

存储每个参数的名字

attribute_lengths

unsigned long*

存储每个参数名字的长度

ex

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值