• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL的UDF

mysql 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

在MYSQL中,通过CREATE FUNCTION命令可以调用不同的.so共享库文件.在编译前需要加上选项:–with-mysqld-ldflags=-rdynamic重新编

在MYSQL中,通过CREATE FUNCTION命令可以调用不同的.so共享库文件.

在编译前需要加上选项:–with-mysqld-ldflags=-rdynamic

重新编译的时候出了点小问题,可能是升级系统时丢失了……

configure: error: No curses/termcap library found

解决方法:sudo apt-get install libncurses5-dev

之后重新configure通过。

在sql文件夹下有一个实例程序udf_example.c文件。可以对该文件进行单独编译,,生成共享库文件:

gcc -shared -o udf_example.so udf_example.cc -I /usr/local/mysql/include/mysql

在sql文件夹下,文件udf_example.def给出了函数清单:

LIBRARY udf_example

VERSION 1.0

EXPORTS

lookup

lookup_init

reverse_lookup

reverse_lookup_init

metaphon_init

metaphon_deinit

metaphon

myfunc_double_init

myfunc_double

myfunc_int_init

myfunc_int

sequence_init

sequence_deinit

sequence

avgcost_init

avgcost_deinit

avgcost_reset

avgcost_add

avgcost_clear

avgcost

is_const

is_const_init

check_const_len

check_const_len_init

其中:xx_init表示加载函数,xx_deinit表示卸载函数,分别对应create function 和drop function

xx_clear:重置或归零相关值

xx_add:和xx_clear一起用于group by这样的需要分组的情形。

修改配置文件my.cnf

在mysqld中增加行:plugin_dir = /usr/local/mysql/lib/plugin,所有的共享库文件都被存储在这个文件夹中

我们将udf_example.so文件cp到该文件夹中,然后打开服务器,执行:mysql> create function metaphon returns string soname “udf_example.so”;

报错:ERROR 1127 (HY000): Can’t find symbol ‘metaphon’ in library

共享库文件位置正确,权限也没啥问题,百思不的其解,网上找了很多,也没找到正确的解答,寻思可能是编译UDF源文件出错,经过多次尝试,以如下格式编译,调用成功:

make udf_example.o

gcc -Wall -shared -DMYSQL_DYNAMIC_PLUGIN udf_example.o -o udf_example.so

然后将udf_example.so拷贝到/usr/local/mysql/lib/plugin文件夹下,执行成功:

mysql> create function metaphon retu

本文来源gaodai.ma#com搞##代!^码@网3

rns string soname “udf_example.so”;

Query OK, 0 rows affected (0.00 sec)


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL的UDF
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址