CentOS 5.5 MariaDB 5.1.49にUDF base64_encodeを入れてみる
UDFの勉強を兼ねてshimariso さんが作成したUDF base64のMySQLに 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を見に行くように修正