美文网首页
Mariadb数据库UDF自定义函数

Mariadb数据库UDF自定义函数

作者: 刘小白DOER | 来源:发表于2021-02-18 22:06 被阅读0次

    UDF,即user-defined function 。

    Mariadb/Mysql数据库自带很多内置函数,比如select RAND();生成随机数。这个函数是可以用户自定义来完成特定的功能,比如与外部通信完成数据同步、复杂的计算方式等等。今天实验Mariadb数据库自定义函数UDF的使用,UDF是通过编译成.so文件来下实现的。

1、先自定义并编译c++函数testadd.cpp

    c++使用别人的程序, c++方面笔者是文盲。.so文件是Linux下的程序函数库,即共享链接库,编译好的可以供其他程序使用的代码和数据。

#include <mysql.h>

extern "C" long long testadd(UDF_INIT *initid, UDF_ARGS *args, char *is_null, ch

ar *error)

{

    int a = *((long long *)args->args[0]);

    int b = *((long long *)args->args[1]);

    return a + b;

}

extern "C" my_bool testadd_init(UDF_INIT *initid, UDF_ARGS *args, char *message)

{

    return 0;

}

    使用g++编译:sudo g++ -shared -fPIC -I /usr/include/mysql -o testadd.so testadd.cpp,发现没有头文件mysql.h,初步怀疑是Mariadb数据库虽然兼容Mysql,但是配置文件等还是有区别的,于是搜索一番 sudo find / -name mysql.h  :

   
    编译的头文件目录错误了,这个就是Mariadb与Mysql的区别了。将命令更换为:sudo g++ -shared -fPIC -I  /usr/include/mariadb -o testadd.so   testadd.cpp                                                      就可以得到编译文件testadd.so 。笔者在想能不能直接用头文件mariadb.h,在/usr/include/mariadb目录下没有找到,使用find命令在次级目录private下有一个,不知道能否使用,还是使用初级目录的mysql.h方便。

C语言:

2、查找数据库插件目录并将testadd.so拷贝到插件目录下

    进入数据库,并查找关键字show variables like '%plugin%';  可以找到插件目录(Mariadb数据库不同于Mysql)拷贝testadd.so到插件目录下:sudo cp testadd.so /usr/lib/arm-linux-gnueabihf/mariadb19/plugin/  。

3、登陆数据库并创建函数关联

    根据testadd.so创建函数testadd ,create function testadd returns integer soname 'testadd.so';

使用函数testadd :select testadd(1,2);  就可实现1+2=3 。

相关文章

  • Mariadb数据库UDF自定义函数

    UDF,即user-defined function 。 Mariadb/Mysql数据库自带很多内置函数...

  • Hive的UDF函数

    【前言】常见的数据库都有函数,hive自身也有函数。分为内置函数和自定义的UDF函数,自定义函数例如(sum 、c...

  • Hive函数

    自定义函数 自定义函数包括三种:UDF、UDAF、UDTF。 UDF(User-Defined-Function)...

  • Hive的UDF编程-GenericUDF编程

    UDF简介 在Hive中,用户可以自定义一些函数,用于扩展HiveQL的功能,而这类函数叫做UDF(用户自定义函数...

  • Hive 用户自定义函数 UDF,UDAF

    Hive有UDF:(普通)UDF,用户自定义聚合函数(UDAF)以及用户自定义生表函数(UDTF)。它们所接受的输...

  • Hive 自定义函数 UDF

    Hive 自定义函数 UDF UDF:用户定义(普通)函数,只对单行数值产生作用; UDF只能实现一进一出的操作。

  • Flink1.9 UDF使用教程

    UDF是什么? UDF是用户自定义函数(User Define Function)的缩写,从定义可以看出UDF是一...

  • 【Hive】Hive UDF

    [TOC] 一、UDF 介绍 UDF(User-Defined Functions)即是用户自定义的hive函数。...

  • 2021-01-06 举例创建UDF函数

    UDF功能可以是我们自定义mysql函数,处理相关业务需求.例子来源淘宝数据库内核月报:http://mysql....

  • 【Hive】注册UDF的过程

    实现步骤 对比SparkSQL注册UDF的过程SparkSQL用户自定义函数UDF和UDAF、UDTF[https...

网友评论

      本文标题:Mariadb数据库UDF自定义函数

      本文链接:https://www.haomeiwen.com/subject/symnxltx.html