Skip to content

0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Jun 06:22
· 10 commits to master since this release

概要

tsurugi-udf 0.4.0 は、Tsurugi 1.11.0 に対応するアップデートです。

本リリースでは、UDF プラグイン生成仕様の変更に伴う互換性変更が含まれます。
そのため、tsurugi-udf 0.3.0 で生成した UDF プラグインは再生成が必要です。

互換性変更

UDF プラグインの再生成が必要

tsurugi-udf 0.4.0 では、UDF プラグインの生成物構成が変更されています。

特に、--output-dir オプションで指定したディレクトリ配下に、新たに deps ディレクトリが生成されるようになりました。

UDF 機能を利用する場合は、従来の .so.ini.pb ファイルに加えて、生成された deps ディレクトリも配置する必要があります。

手動で移動すると配置漏れが発生する可能性があるため、--output-dir には、tsurugi.ini[udf] セクションで指定する plugin_directory と同じディレクトリを指定することを推奨します。

この場合、.so.ini.pb および deps ディレクトリが UDF プラグイン配置先に直接生成されるため、移動漏れを防ぐことができます。

新機能

  • UDF 呼び出し時のクライアントタイムアウト指定
  • proto3 optional による NULL 値のサポート
  • UDF プラグイン設定ファイルでの grpc_server.endpoint 指定

UDF 呼び出し時のクライアントタイムアウト指定

UDF 機能は gRPC クライアントとして動作するため、gRPC サーバー呼び出し時のクライアント設定を行うことができます。

本リリースでは、UDF プラグイン設定ファイルにクライアントタイムアウトを設定できるようになりました。

UDF プラグイン生成時に、以下の形式でオプションを指定します。

--udf-timeout 秒数

このオプションを指定すると、対象の UDF プラグイン設定ファイルの UDF セクションに timeout 項目が設定されます。

指定したタイムアウト時間を超過しても gRPC サーバーからレスポンスが返却されない場合、SQL エラーを返却します。

タイムアウトを設定しない場合、クライアントタイムアウトは機能しません。

NULL 値のサポート

proto3optional 機能に対応しました。

RPC の引数または戻り値に optional を指定したフィールドを UDF として呼び出す場合、そのフィールドに対応する SQL 値として NULL を指定できます。

これにより、optional が指定された引数に NULL 値を渡しても SQL エラーになりません。
また、戻り値として NULL が返却された場合も SQL エラーになりません。

optional を指定していないフィールドについては、従来どおり NULL 値が渡された場合に SQL エラーとなります。

UDF プラグイン設定ファイルでの grpc_server.endpoint 指定

従来、BLOB 中継サーバーが使用する Tsurugi 側 grpc_server のエンドポイントは、tsurugi.ini でのみ指定可能でした。

本リリースでは、個別の UDF プラグイン設定ファイルでも grpc_server.endpoint を指定できるようになりました。

UDF プラグイン生成時に、以下の形式でオプションを指定します。

--grpc-server-endpoint エンドポイント名

このオプションを指定すると、対象の UDF プラグイン設定ファイルの grpc_server セクションに endpoint 項目が設定されます。

tsurugi.ini と UDF プラグイン設定ファイルの両方で endpoint を指定した場合は、UDF プラグイン設定ファイルの設定が優先されます。

不具合修正

  • サービス定義を含む .proto を別の .proto から import してビルドすると、不整合な UDF プラグインが生成される問題を修正
  • 複数の oneof フィールドの引数に対して、それぞれ異なる型を指定するとエラーになる問題を修正

サービス定義を含む .proto を import した場合の不整合修正

UDF 機能では、複数の .so をロードすることで、gRPC サーバーの機能を Tsurugi の SQL から利用できるようにします。

tsurugi-udf 0.3.0 では、サービス定義を含む .proto を別の .proto から import してビルドした場合、一部の関数が利用できない不整合な UDF プラグインが生成されることがありました。

本リリースでは、この問題を修正しました。

この修正に伴い、--output-dir オプションで指定したディレクトリ配下に deps ディレクトリが生成されるようになっています。
生成された deps ディレクトリは、UDF プラグインが間接参照する共有ライブラリを配置するために使用されます。

UDF プラグインを配置する際は、従来の .so.ini.pb ファイルに加えて、deps ディレクトリも合わせて配置してください。

複数の oneof フィールドに異なる型を指定した場合のエラー修正

tsurugi-udf 0.3.0 および Tsurugi 1.10.0 では、oneof フィールドをサポートしていました。

しかし、複数の oneof フィールドを持つ RPC 引数に対して、それぞれ異なる型の値を指定した場合、正常に処理できない問題がありました。

本リリースでは、この問題を修正しました。