2025/12/24 Tsurugi 1.8.0 をリリースしました。 概要 Tsurugi 1.8.0では、試験的機能としてユーザー定義関数(UDF)に対応しました。 Tsurugi の UDFは、gRPC サービスとして作成したユーザープログラムを、SQL の関数として呼び出せるようにする拡張機能です。Python、Java、C++など様々な言語で実装した処理をSQLから実行できます。 gRPCとの連携により、UDF の実行環境を別ノードに配置するような柔軟な構成が可能となり、GPU搭載サーバーなど専用環境をシームレスに活用できます。BLOB/CLOB型などの大容量データにも対応しており、従来のTsurugiの利用方法を大きく超える拡張性の高いシステム構築が可能です。 UDF 機能の概要については、以下のドキュメントを参照してください。 Tsurugi UDF 概要 また本バージョンでは、条件式に OR を含むSQLの実行計画に伴う最適化を導入し、パフォーマンスの向上を図っています。 その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。 機能追加と改善 機能追加と改善 - SQL (試験的機能) Tsurugi UDF: ユーザー定義関数に対応 Tsurugi UDF については、以下のドキュメントを参照してください。 Tsurugi UDF 概要 Tsurugi UDF ユーザガイド UDF 関数インターフェースの定義 udf-plugin udf-library (for Python) Tsurugi UDF 既知の問題 その他詳細は tsurugi-udf リポジトリのREADMEやそのリンク資料を参照してください。 OR を含む条件式に対する実行計画の最適化を実施 既知の問題: TSURUGI-IS-139 OR を含む条件式が非効率的な実行計画を生成する の条件に該当するクエリーに対して最適化を実施しました。レンジスキャンを採用するなどの効率的な実行計画を生成するように改善されています。 SQL実行エンジンの出力機構の安定性向上 RTX並列スキャン 使用時に並列実行数を大幅に増やした場合や、 UNION ALL の連結を多数含むクエリでエラーとなるケースがありましたが、そのような場合でも安定して動作するようになりました。 BLOB/CLOB型に対するアクセス制御の改善 不正な方法、もしくは不整合が発生するような方法でBLOB/CLOB型カラムにアクセスした場合にバリデーションエラーが発生するようになりました。 機能追加と改善 - Transaction テーブル/インデックスメタデータの管理方式を改善 今後の機能拡張のために、SQL実行エンジンとトランザクションエンジン間におけるテーブル/インデックスメタデータの管理方式を改善しました。 これにより、トランザクションログのフォーマットが変更されたため、互換性に関する注意点があります。詳細は「アップグレードについて」セクションの「トランザクションログのフォーマット変更」を参照してください。 この変更の影響により、 CCException などの例外メッセージに従来含まれていたテーブル名などの情報が含まれなくなっています。この問題は将来のバージョンで修正を予定しています。 機能追加と改善 - Service BLOB中継サービスの導入 BLOB中継サービスはUDFやアプリケーションからTsurugiの BLOB/CLOB型データを安全かつ効率的に授受するためのgRPCサービスです。 data-relay-grpc 現時点では、Tsurugi UDF向けのPythonライブラリ udf-library (for Python) でこれを利用します。 将来的には、本サービスを用いて Tsubakuro や Iceaxe からリモートの TCP を利用した際に BLOB/CLOB型 を利用可能にする予定です。 BLOB中継サービスの導入に伴い、Tsurugi 構成定義ファイル ( tsurugi.ini ) に以下のセクションが追加されました。 [grpc_server]: Tsurugiに含まれるgRPCサーバーの設定を行います。 [blob_relay]: BLOB中継サービスの設定を行います。 詳細は Configuration file parameters を参照してください。 機能追加と改善 - Client クライアントからTsurugiサーバのシステム情報を取得する機構を追加 これを利用し、Tsurugiの各CLI、クライアントライブラリ、ドライバインターフェースからTsurugiサーバが提供するサーババージョンなどのシステム情報の取得や表示に対応しました。 バグ修正 バグ修正 - SQL SUBSTR 関数の第2, 第3引数に INT 型の値を指定するとエラーとなる。 BLOB/CLOB型の値に IS NULL を指定すると UNSUPPORTED_COMPILER_FEATURE_EXCEPTION が発生する。 テーブル名等の識別子にコントロールコード等を入れても制限エラーとならない。 バグ修正 - Client Tsubakuro/Java において、セッションに紐づくバックグラウンドスレッドをデーモンスレッドに変更。 Tsubakuro/Java において、TCP接続時に Session.isAlive() が正常に動作しないことがある。 Tsubakuro/Java において、大量のトランザクション生成時にごくまれに意図しないタイムアウトエラーが発生する。 アップグレードについて クライアント互換性リスト Tsurugi 1.8.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.1.0+ トランザクションログのフォーマット変更 本バージョンではトランザクションログのフォーマットバージョンが Version 7 に変更されています。バージョン 1.7.0 で利用していたトランザクションログを利用してバージョン 1.8.0 を起動すると、トランザクションログのフォーマットバージョンが自動でアップデートされます。 これにより、バージョン 1.8.0 で起動したトランザクションログはバージョン 1.7.0 では利用できなくなります。また、バージョン 1.8.0 以降で作成したバックアップを バージョン 1.7.0 で復元することもできなくなりますのでご注意ください。 アップグレード手順 旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。 Tsurugi Upgrade Guide その他 本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。 Tsurugi 1.8.0 - Changelog 本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。 Tsurugi 1.8.0 - Known Issues(ja)
概要
Tsurugi 1.8.0では、試験的機能としてユーザー定義関数(UDF)に対応しました。
Tsurugi の UDFは、gRPC サービスとして作成したユーザープログラムを、SQL の関数として呼び出せるようにする拡張機能です。Python、Java、C++など様々な言語で実装した処理をSQLから実行できます。
gRPCとの連携により、UDF の実行環境を別ノードに配置するような柔軟な構成が可能となり、GPU搭載サーバーなど専用環境をシームレスに活用できます。BLOB/CLOB型などの大容量データにも対応しており、従来のTsurugiの利用方法を大きく超える拡張性の高いシステム構築が可能です。
UDF 機能の概要については、以下のドキュメントを参照してください。
また本バージョンでは、条件式に
ORを含むSQLの実行計画に伴う最適化を導入し、パフォーマンスの向上を図っています。その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。
機能追加と改善
機能追加と改善 - SQL
UNION ALLの連結を多数含むクエリでエラーとなるケースがありましたが、そのような場合でも安定して動作するようになりました。機能追加と改善 - Transaction
CCExceptionなどの例外メッセージに従来含まれていたテーブル名などの情報が含まれなくなっています。この問題は将来のバージョンで修正を予定しています。機能追加と改善 - Service
tsurugi.ini) に以下のセクションが追加されました。[grpc_server]: Tsurugiに含まれるgRPCサーバーの設定を行います。[blob_relay]: BLOB中継サービスの設定を行います。機能追加と改善 - Client
バグ修正
バグ修正 - SQL
SUBSTR関数の第2, 第3引数にINT型の値を指定するとエラーとなる。IS NULLを指定するとUNSUPPORTED_COMPILER_FEATURE_EXCEPTIONが発生する。バグ修正 - Client
Session.isAlive()が正常に動作しないことがある。アップグレードについて
クライアント互換性リスト
Tsurugi 1.8.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。
トランザクションログのフォーマット変更
本バージョンではトランザクションログのフォーマットバージョンが Version 7 に変更されています。バージョン 1.7.0 で利用していたトランザクションログを利用してバージョン 1.8.0 を起動すると、トランザクションログのフォーマットバージョンが自動でアップデートされます。
これにより、バージョン 1.8.0 で起動したトランザクションログはバージョン 1.7.0 では利用できなくなります。また、バージョン 1.8.0 以降で作成したバックアップを バージョン 1.7.0 で復元することもできなくなりますのでご注意ください。
アップグレード手順
旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。
その他
本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。
本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。