Kazuhiko
kazuh****@fdiar*****
2013年 5月 23日 (木) 16:32:28 JST
On 23/05/2013 08:36, Kouhei Sutou wrote: >> > INSTALL PLUGIN mroonga SONAME 'ha_mroonga.dll'; >> > CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.dll'; >> > CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.dll'; >> > CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.dll'; >> >> >インストーラーでここまでやれた方がいいなぁと思いつつ、そこま >> >では手が届いていません。 (snip) >> >MariaDBは、デフォルトでHandlerSocketプラグインが梱包されています。 >> >コマンドでINSTALL PLUGIN 構文を打つか、設定ファイル.cnfに >> >記述するだけでHandlerSocketを有効にすることができます。 (snip) > よさそうなんですが、この方法だとCREATE FUNCTIONに対応できな > いんですよね。。。(磯部さんもうっすら書きかけていますが。) > > インストーラーの挙動をみるとどこかでinstall_dbを実行している > ようなので、そのタイミングに紛れ込ませたいなぁと思っていまし > た。 うちでは、プラグインの登録自体は設定ファイルでやって、その上で「初期設定 用SQL」でこんな感じにやっています。 DROP FUNCTION IF EXISTS last_insert_grn_id; CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so'; "DROP FUNCTION IF EXISTS" があるので、すでにそのUDFがあってもCREATE FUNCTIONでエラーにならずに再登録してくれます。まあ、「既にあったらCREATE FUNCTIONしない」というのが本来やるべきことかも知れませんが、それはSQLだ けでは書けなさそうだし、登録しなおす方が、もし例えばRETURNSの型が変わっ てもOKというメリットがあるかも。 かずひこ