Tsurugi(TsurugiDB)のSQLのユーザー定義関数(UDF)のメモ。
|
|
Tsurugi 1.8.0で、試験的機能としてユーザー定義関数(UDF)が使えるようになった。
ユーザーが関数を作っておき、select文などから呼び出すことが出来る。
select my_function(foo) from test;
UDFの使い方は他のRDBMSと同じだが、作り方は異なる。
他のRDBMSではcreate function文でUDFを定義するが、TsurugiのUDFはgRPCを利用する。
(gRPCは、Googleが開発した、RPC(Remote Procedure Call、別の場所にある関数を呼び出す仕組み)のフレームワーク)
ユーザーはprotoファイルで関数を定義し、その処理を行うgRPCサーバーを用意する。
gRPCサーバーを作るプログラミング言語は(gRPCが対応しているものなら)何でも良い。
TsurugiはgRPCクライアントとして振る舞う。
SQL文の中でUDFが呼ばれると、TsurugiはgRPCサーバーの関数を呼び出す。
このため、TsurugiのUDFはTsurugi起動前に作成しておく必要がある。
(Tsurugiの実行中に動的にUDFを作ることは出来ない)
通常のUDFは、関数呼び出し1回につき1つの値(スカラー値)を返す。[2026-03-08]
このため、そういった関数のことをUDSF(User-Defined Scalar Function)と呼ぶ。
これに対し、1回の呼び出しで複数列・複数行の値(テーブル形式)を返す関数のことをUDTF(User-Defined Table-valued Function、ユーザー定義表値関数)と呼ぶ。
(Tsurugi 1.9.0でUDTFが導入されたことにより、区別する場合は通常のUDFをUDSFと呼ぶことにしたようだ)
TsurugiのUDFは以下の手順で作成する。