S-JIS[2025-12-25/2026-03-08]

Tsurugi ユーザー定義関数

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と呼ぶことにしたようだ)


UDFの作成手順

TsurugiのUDFは以下の手順で作成する。

  1. protoファイルを作成する。(UDFの定義を行う)
  2. protoファイルをビルドし、gRPCサーバー(gRPCサービス)を作る。
  3. UDFをTsurugiに登録する。
  4. gRPCサーバーを起動する。
  5. Tsurugiを起動する。

SQLへ戻る / Tsurugiへ戻る / 技術メモへ戻る
メールの送信先:ひしだま