Mysql UDF
一般来说使用C/C++实现。
主要功能是开启一个线程进行监听sockt连接,
当调用此函数时将指定的消息发送到socket连接上.
select FX_MSG(CMD[,PARM1,PARM2...]);
初始化 FX_MSG 监听环境
CMD:INIT PARM:int MAX_Conn , int PORT
关闭所有连接,关才监听
CMD:CLOSE
查看当前连接Client信息
CMD:LISTCLIENT
查看当前版本信息
CMD:VERSION
还设想了一些功能,懒得做了。。。
.....
布置开发环境.
不喜欢 M$ 的 VC (也是不太会用)(-:
还是用eclipse习惯。哈哈。。。。
呵呵,操作系统还是比较习惯用XP.....
eclipse 3.3 CDT 用来起还是相当不
错(-: .
不具备编译功能。
download cygwin 做为cygwin编译器.
注意安装的时候要 选中 开发工具中
的 gcc / g++ 等。
要做mysql的UDF当然需要mysql的一些
头文件 ,去mysql.com下载mysql的原
码包。 解开,里面有个include目录。
使用这个就可以了。
不过我使用的时候里面有几个和mysql
版本号相关的预编译宏编译不过,不知道
为啥了,手动处理一下。该删的删,该改
的改。
闲话少说,动手:
A. eclipse 新建一个Shared Library工程 。
呵呵,别建搞错了。默认可不是这个(-:
B.选择工具链:Cygwin GCC
C.Project Properties中把mysql的include包含进来
原代码:
时间紧任务急,大概的功能可能实现了.
以上 代码在
root@fes-middle01 so]# gcc --version
gcc (GCC) 3.4.6
20060404 (Red Hat 3.4.6-3)
Copyright (C) 2006 Free Software Foundation,
Inc.
This is free software; see the source for copying conditions.
warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
[root@fes-middle01 mysql]# bin/mysql -uroot -pskywest
Welcome to the MySQL
monitor.
Your MySQL connection id is 3 to
server version: 5.0.22-max
中编译运行通过.
编译方法:
gcc -I. -O0 -g3 -Wall -c -fmessage-length=0 -ofxmsg.o
fxmsg.c
gcc -I. -O0 -g3 -Wall -c -fmessage-length=0 -ocmd_close.o
cmd_close.c
gcc -I. -O0 -g3 -Wall -c -fmessage-length=0 -ocmd_init.o
cmd_init.c
gcc -I. -O0 -g3 -Wall -c -fmessage-length=0 -ocmd_send.o
cmd_send.c
gcc -I. -O0 -g3 -Wall -c -fmessage-length=0 -otools.o
tools.c
gcc -shared -oFXMSG.so fxmsg.o cmd_send.o cmd_init.o cmd_close.o
tools.o
将生成的so文件放到 /usr/lib中
cp FXMSG.so /usr/lib
建立 fx_msg function.
CREATE FUNCTION fx_msg RETURNS STRING SONAME ;
FXMSG.so;
删除时候用:
DROP FUNCTION fx_msg;
浙公网安备 33010602011771号