MySQL的UDF

本文介绍了如何在MySQL中创建和使用UDF,包括快速编写UDF的步骤,从编写C++代码、生成动态链接库,到在MySQL中安装和调用函数。详细解释了UDF的编写过程,包括用户主函数、系统内置函数的编写,并通过一个Aggregate函数的例子深入阐述了UDF的工作原理。最后,总结了MySQL UDF的特点和线程安全性的重要性。
摘要由CSDN通过智能技术生成

最近用到MySQL的UDF, 查了一下相关文献, 对用户用户实现function和Aggregate function的方法做个介绍.

快速编写一个MySQL UDF

为了能够快速了解UDF(user-defined function)是什么, 我们首先构建一个最简单的UDF, 然后再介绍更细节的内容. 本文在Ubuntu16.04下测试, 开始之前需要先安装MySQL以及相关的库, 在Ubuntu下是:

sudo apt-get install libmysqlclient-dev
Step1: 编写c++代码并生成动态链接库

示例c++代码如下:

extern "c"{
long long myadd(UDF_INIT *initid, UDF_ARGS *args,
                char *is_null, char *error);
my_bool myadd_init(UDF_INIT *initid, UDF_ARGS *args,
                  char *message);
}

long long myadd(UDF_INIT *initid, UDF_ARGS *args,
                char *is_null, char *error) {
    int a = *((long long *)args->args[0]);
    int b = *((long long *)args->args[1]);
    return a + b;
}

my_bool myadd_init(UDF_INIT *initid, UDF_ARGS *args,
                  char *message){
    return 0;
}

完成以后, 将文件保存为udf.cpp 然后使用如下的命令编译动态链接库:

g++ -shared -fPIC -I /usr/include/mysql -o udf.so udf.cpp

获得udf.so文件.

Step2: 在MySQL中添加函数

完成上述的编写以后, 讲udf.so文件拷贝到MySQL的plugin目录下, 在Ubuntu16.04中默认是:

/usr/lib/mysql/plugin/

然后使用如下的命令在MySQL中安装动态链接库.

CREATE FUNCTION myadd RETURNS INTEGER SONAME 'udf.so'
Step3: 调用函数以及相关查询
  • 调用函数
select myadd(1,2);

可以获得计算结果3

  • 查询安装列表
select * from mysql.func;<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值