2026/03/06 Tsurugi 1.9.0 をリリースしました。 概要 Tsurugi 1.9.0 では SQL関連の機能追加として WITH 句(共通テーブル式: CTE)に対応しました。WITH 句は SQL クエリー内で名前付きの部分クエリーを定義するための構文です。WITH 句を用いることで複雑なクエリーを分割して段階的に記述し、可読性や再利用性の高いクエリーを作成することができます。 また、UDF の機能拡張としてユーザー定義表値関数(UDTF: User-Defined Table-valued Function)に対応しました。ユーザー定義表値関数は、戻り値として複数行・複数列の表値(テーブル)を返す関数を定義することができます。この機能に伴い、ユーザー定義表値関数を実行するためのSQL拡張構文である APPLY 演算子を追加しました。 その他 UDF の改善として、複数のUDFプラグインがデプロイできない制約を解消しました。この修正に伴い udf-plugin-builder の仕様が一部変更されています。 その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。 機能追加と改善 機能追加と改善 - SQL WITH 句 (共通テーブル式 : CTE) に対応 WITH 句はSQLクエリー内で名前付きの部分クエリーを定義するための構文です。クエリー内で複数の仮想テーブルを定義し、前段で定義した仮想テーブルの結果を後続の仮想テーブルで参照することができます。 WITH 句を用いることで複雑なクエリーを分割して段階的に記述し、可読性や再利用性の高いクエリーを作成することができます。 WITH cte1 AS (SELECT id, name FROM users WHERE age >= 18), cte2 AS (SELECT id, name FROM cte1 WHERE name LIKE 'A%') SELECT id FROM cte2 WITH 句に関するSQL文法の詳細は、以下のドキュメントを参照してください。 Available SQL features in Tsurugi - Queries 本バージョンでは WITH RECURSIVE 句(再帰的な共通テーブル式 : 再帰CTE)には対応していません。将来のバージョンでの対応を検討しています。 JOIN 句の結合優先順位の指定に対応 既知の問題: TSURUGI-IS-863 JOIN 句の結合優先順位を指定できない の条件に該当する t1 JOIN (t2 JOIN t3 ON ...) ON ... のような記法をサポートしました。これにより、結合の優先順位を明示的に指定することができるようになりました。 機能追加と改善 - UDF ユーザー定義表値関数 (UDTF: User-Defined Table-valued Function) に対応 ユーザー定義表値関数は、バージョン 1.8.0 で導入したユーザー定義関数 (UDF) と同様に gRPC サービスとして作成したユーザープログラムを、SQL の関数として呼び出せるようにする拡張機能ですが、戻り値として 複数行・複数列の表値(テーブル) を返す関数を定義することができます。 ユーザー定義表値関数は、Tsurugi のSQL拡張構文である APPLY 演算子を使って FROM 句内で呼び出すことができます。 SELECT i.image_id, d.label, d.score, d.x, d.y, d.width, d.height FROM images AS i APPLY DetectObjects(i.image_data) AS d ユーザー定義表値関数は表形式のデータを出力することができるため、複雑な処理を扱う関数を提供するのに適しています。またユーザー定義表値関数は gRPCのサーバーストリーミングを利用することで、特に負荷の高い処理や大容量データの処理時に効率的に動作するように設計されています。 ユーザー定義表値関数の詳細は、以下のドキュメントを参照してください。 ユーザー定義表値関数 (UDTF) tsurugidb.udf メッセージ型を含む UDF プラグインを複数デプロイすることができない制約を解消 Tsurugi 1.8.0 では tsurugidb.udf メッセージ型を利用するUDF プラグインを複数デプロイすると、Tsurugi 起動時にエラーとなるという問題がありましたが、今回のバージョンでこの制約を解消しました。 これに関連して、UDFプラグインの生成ツール udf-plugin-builder の仕様や動作が一部変更になっています。主な変更点は以下の通りです。 1つの .proto ファイルに対して常に1つの共有ライブラリファイル (.so) が生成されるように変更。これに伴い --name オプションを廃止。 --proto-file オプションが --proto オプションに変更。 --proto-path オプションが -I (--include) オプションに変更。複数のパスを指定する場合は、スペース区切りで複数回指定する形式に変更 ( -I /path_1 -I path_2 のように指定)。 Tsurugi 1.8.0 で生成したUDFプラグインは、Tsurugi 1.9.0 では利用できません。上記の変更点を踏まえて udf-plugin-builder を用いてUDFプラグインを再生成してデプロイする必要があります。 udf-plugin-builder の詳細は udf-plugin - udf-plugin-builder を参照してください。 機能追加と改善 - Distribution Tsurugi インストール時に使用する CMake バージョン 3系について 3.30 以降に対応 現時点で CMake のバージョン 4系 以降の動作は未確認です。 Tsurugi インストール時に使用する CMake の最小要求バージョンを 3.20 に引き上げ バグ修正 バグ修正 - SQL 特定条件下で複数のグループ化列を伴う GROUP BY 句を含むクエリーを実行するとデータベースが不正終了する。 バグ修正 - UDF tsurugidb.udf.OffsetDatetime 型でUTC以外の time_zone_offset を持つ値を gRPCサービス 側に渡した際にその値に含まれる offset_seconds フィールドが不正な値となる バグ修正 - Client tgsql を終了した際にサーバ側に使用したセッションがクローズされずに残ることがある 特にIPC接続でSQL実行モード( tgsql --exec ) を利用する場合にこの問題が発生しやすいことを確認しています。 この対応に関連し、tgsql のコネクション終了に伴うセッションのシャットダウン動作を指定するオプション --shutdown-type , --shutdown-timeout が追加されました。詳細は以下のドキュメントを参照してください。 tgsql アップグレードについて クライアント互換性リスト Tsurugi 1.9.0 では 以下のクライアントに対応しています。Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。 Client Version Tsubakuro/Java 1.13.0+ Iceaxe 1.13.0+ Tanzawa 1.13.0+ Tsubakuro/Rust 0.7.0+ Tsurugi MCP Server 0.5.0+ Tsurugi JDBC 0.2.0+ Tsurugi UDF 0.2.0+ アップグレード手順 旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。 Tsurugi Upgrade Guide その他 本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。 Tsurugi 1.9.0 - Changelog 本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。 Tsurugi 1.9.0 - Known Issues(ja)
概要
Tsurugi 1.9.0 では SQL関連の機能追加として
WITH句(共通テーブル式: CTE)に対応しました。WITH句は SQL クエリー内で名前付きの部分クエリーを定義するための構文です。WITH句を用いることで複雑なクエリーを分割して段階的に記述し、可読性や再利用性の高いクエリーを作成することができます。また、UDF の機能拡張としてユーザー定義表値関数(UDTF: User-Defined Table-valued Function)に対応しました。
ユーザー定義表値関数は、戻り値として複数行・複数列の表値(テーブル)を返す関数を定義することができます。
この機能に伴い、ユーザー定義表値関数を実行するためのSQL拡張構文である
APPLY演算子を追加しました。その他 UDF の改善として、複数のUDFプラグインがデプロイできない制約を解消しました。
この修正に伴い
udf-plugin-builderの仕様が一部変更されています。その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。
機能追加と改善
機能追加と改善 - SQL
WITH句 (共通テーブル式 : CTE) に対応WITH句はSQLクエリー内で名前付きの部分クエリーを定義するための構文です。クエリー内で複数の仮想テーブルを定義し、前段で定義した仮想テーブルの結果を後続の仮想テーブルで参照することができます。WITH句を用いることで複雑なクエリーを分割して段階的に記述し、可読性や再利用性の高いクエリーを作成することができます。WITH句に関するSQL文法の詳細は、以下のドキュメントを参照してください。WITH RECURSIVE句(再帰的な共通テーブル式 : 再帰CTE)には対応していません。将来のバージョンでの対応を検討しています。JOIN句の結合優先順位の指定に対応t1 JOIN (t2 JOIN t3 ON ...) ON ...のような記法をサポートしました。これにより、結合の優先順位を明示的に指定することができるようになりました。機能追加と改善 - UDF
APPLY演算子を使ってFROM句内で呼び出すことができます。tsurugidb.udfメッセージ型を含む UDF プラグインを複数デプロイすることができない制約を解消tsurugidb.udfメッセージ型を利用するUDF プラグインを複数デプロイすると、Tsurugi 起動時にエラーとなるという問題がありましたが、今回のバージョンでこの制約を解消しました。udf-plugin-builderの仕様や動作が一部変更になっています。主な変更点は以下の通りです。.protoファイルに対して常に1つの共有ライブラリファイル (.so) が生成されるように変更。これに伴い--nameオプションを廃止。--proto-fileオプションが--protoオプションに変更。--proto-pathオプションが-I(--include) オプションに変更。複数のパスを指定する場合は、スペース区切りで複数回指定する形式に変更 (-I /path_1 -I path_2のように指定)。udf-plugin-builderを用いてUDFプラグインを再生成してデプロイする必要があります。udf-plugin-builderの詳細は udf-plugin -udf-plugin-builderを参照してください。機能追加と改善 - Distribution
バグ修正
バグ修正 - SQL
GROUP BY句を含むクエリーを実行するとデータベースが不正終了する。バグ修正 - UDF
tsurugidb.udf.OffsetDatetime型でUTC以外のtime_zone_offsetを持つ値を gRPCサービス 側に渡した際にその値に含まれるoffset_secondsフィールドが不正な値となるバグ修正 - Client
tgsqlを終了した際にサーバ側に使用したセッションがクローズされずに残ることがあるtgsql --exec) を利用する場合にこの問題が発生しやすいことを確認しています。tgsqlのコネクション終了に伴うセッションのシャットダウン動作を指定するオプション--shutdown-type,--shutdown-timeoutが追加されました。詳細は以下のドキュメントを参照してください。アップグレードについて
クライアント互換性リスト
Tsurugi 1.9.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。
アップグレード手順
旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。
その他
本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。
本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。