とみたさんの記事を見てUDFにトライ

とみたさんの UDF を作ろう記事を、そのまま試してみました。

tmtms.hatenablog.com

ほとんど、書かれているとおりにソースコードをコピーして gcc かけて プラグイン動作させれば良いです。が、少しだけ悩んだ点があるので、そこだけ補足的メモ。

gcc がなかった!

 結構、素のままの ubuntu 18.04 だったので、gcc すら入っていませんでした。入れた。

$ sudo apt-get install gcc

include フォルダがなかった!

 私の環境では、mysql の include フォルダが見当たらず。いろいろ操作した結果入ったので、どれが効いていたのか確証ないのだけど、たぶん、これ。

$ sudo apt-get install libmysqld-dev

 includeフォルダの位置も、とみたさんの記事とは異なっていたので、以下のように捜索。

$ find / -type d -name mysql
/usr/include/mysql
/usr/include/mysql/mysql
:

プラグインフォルダの確認方法

 念のため、MySQLプラグインフォルダの確認も。

mysql> show variables like '%plugin%';
+-------------------------------+------------------------+
| Variable_name                 | Value                  |
+-------------------------------+------------------------+
| default_authentication_plugin | caching_sha2_password  |
| plugin_dir                    | /usr/lib/mysql/plugin/ |
+-------------------------------+------------------------+

環境が揃っていれば

 やることは、これだけ。

   $  gcc -shared -I /usr/include/mysql/ fib.c -o fib.so
   $  sudo cp fib.so /usr/lib/mysql/plugin/
mysql> create function fib returns integer soname 'fib.so';
mysql> select fib(10);
mysql> drop function fib;