CentOS 5.5 MariaDB 5.1.49にUDF base64_encodeを入れてみる

 UDFの勉強を兼ねてshimariso さんが作成したUDF base64MySQLに Base64エンコード関数が無くてムカついたから作ったこちらをインストールしてみる。

cd /usr/local/src
git clone git://gist.github.com/361481.git
cd 361481
g++ \
-I /usr/include/glib-2.0 \
-I /usr/lib/glib-2.0/include \
-lglib-2.0 `/usr/local/mariadb/bin/mysql_config --cflags` \
`mysql_config --libs_r` \
-shared -o /usr/local/mariadb/lib/mysql/plugin/base64_encode.so base64_encode.cpp
CREATE FUNCTION base64_encode RETURNS STRING SONAME 'base64_encode.so';

ちゃんと動作した。

mysql> SELECT base64_encode('ABCDEF');
+-------------------------+
| base64_encode('ABCDEF') |
+-------------------------+
| QUJDREVG                | 
+-------------------------+
1 row in set (0.00 sec)

 今度は、これを元にbase64_decodeやurlsafe_base64_encode・decodeを作ってみたいと思います。

追記 エラー修正済み

ERROR 1126 (HY000): Can't open shared library 'base64_encode.so' (errno: 22 libmysqlclient_r.so.16: cannot open shared object file: No such file or directory)
  • g++のオプションを
`/usr/local/mariadb/bin/mysql_config --libs_r` \
↓
`mysql_config --libs_r` \

に修正して/usr/lib/配下のlibmysqlclient_r.so.16を見に行くように修正