Tsurugi 1.11.0 をリリースしました。

概要

Tsurugi 1.11.0 では、SQL関連の機能追加として相関サブクエリーに対応しました。

相関サブクエリーは、外側のクエリーのカラムを参照するサブクエリーです。
本バージョンでは、Tsurugi 1.10.0 で対応したスカラーサブクエリー機能を拡張し、相関サブクエリーを記述できるようになりました。
これにより、外側のクエリーの行ごとに異なる結果を返す動的なサブクエリーの記述が可能となり、高度な条件判定やデータ抽出を効率的に実行できるようになります。

また、Tsurugi 1.11.0 では BLOB型, CLOB型 に正式に対応しました。

BLOB型, CLOB型 は Tsurugi 1.3.0 から試験的機能として提供してきましたが、Tsurugiサーバーと同じ環境に配置したクライアントからのみ利用可能であることや、対応するクライアントライブラリが限られていることなど、利用には大きな制約がありました。
本バージョンでは、こうした環境上の制約を撤廃するとともに、対応クライアントライブラリも拡充し、BLOB型, CLOB型をより幅広いユースケースで利用できるようにしました。

さらに、Tsurugi 1.11.0 では、Tsurugi UDF において NULL 値のサポートをはじめとする機能追加と改善を行いました。
加えて、Ubuntu 26.04 への試験的サポートも追加しています。

その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。

機能追加と改善

機能追加と改善 - SQL

  • 相関サブクエリーに対応
    • 相関サブクエリーは、外側のクエリーのカラムを参照するサブクエリーです。これにより、外側のクエリーの各行に応じて異なる結果を返すサブクエリーを記述できるようになります。
    • 以下は相関サブクエリーの例です:
      SELECT *
      FROM t1
      WHERE EXISTS (
        SELECT *
        FROM t2
        WHERE t1.k = t2.k -- 外側の t1.k を参照
      );
    • Tsurugi 1.11.0 での相関サブクエリーには、以下のような制限があります:
      • 相関サブクエリー内では、あらゆるスカラーサブクエリー, EXISTS 述語, および IN サブクエリーを利用できない
      • 相関サブクエリー内では、 FULL OUTER JOIN を利用できない
      • 相関サブクエリー内では、 VALUES はちょうど1行しか利用できない
      • EXISTS を用いる相関サブクエリーは、トップレベルのフィルター条件のみで利用できる (WHERE  HAVING の直下、またはそれらの条件を AND で結合したもの)
  • BLOB型, CLOB型に正式に対応
    • Tsurugi 1.3.0 から試験的機能として提供していたBLOB型, CLOB型について、機能を大幅に拡張し正式に対応しました。詳細は以下のドキュメントを参照してください。
    • 試験的機能からの主な変更点は以下のとおりです:
      • リモート接続に対応
        • これまではTsurugiサーバと同じローカル環境に配置したクライアントからのみ利用可能な特権モードを提供していましたが、リモートクライアントから利用可能なリレーモードに対応しました。
        • リレーモードはgRPCを介してTsurugiとクライアントの間でBLOB/CLOBデータを転送するモードで、本バージョンから各種クライアントライブラリでBLOB型, CLOB型を利用する際のデフォルトのモードとなります。
      • 対応クライアントの拡張
        • これまで対応していた Tsubakuro/Java, Iceaxe に加えて、以下のクライアントライブラリや周辺機能に対応しました。
          • Tsurugi JDBC
          • tsubakuro-rust-core (Rust API)
          • tsubakuro-rust-ffi (C API)
          • Tsurugi Python DB-API (Python API)
          • Tsurugi MCP Server
        • Tsurugi 1.11.0 では、Tsurugi ODBC Driver には未対応です。

Note

SQL機能の詳細仕様や現時点での制約については、tsurugidbの以下のドキュメントを参照してください。

機能追加と改善 - Endpoint

  • Tsurugiの構成定義ファイル tsurugi.ini について、以下のオプションのデフォルト値を変更
    • [grpc_server] セクションの enable のデフォルト値を true から false に変更
      • これまでは、Tsurugiに組み込まれた gRPCサーバー はデフォルトで有効化されていましたが、本バージョンからはデフォルトで無効化されるようになります。
      • gRPCサーバーは、上述のリレーモードでBLOB型, CLOB型 を利用する場合、および Tsurugi UDF の BLOB クライアント を利用する場合に必要となります。これらの機能を利用する場合は、 [grpc_server] セクションの enable  true に設定してTsurugiを起動してください。

機能追加と改善 - Client

  • Tsubakuro/Java
    • BLOB型、CLOB型に正式対応
  • Iceaxe
  • tgsql
    • BLOB型、CLOB型に正式対応
    • tgsql コマンドにLOB転送タイプを指定するオプション --lob-transfer-type を追加 - 詳細は以下のドキュメントを参照してください:
  • Tsurugi JDBC
  • Tsurugi MCPサーバー
    • BLOB型、CLOB型に対応
    • Tsurugiへの接続タイムアウトを指定する起動オプション --db-timeout を追加 - 詳細は以下のドキュメントを参照してください:
  • tsubakuro-rust-core (Rust API)
  • tsubakuro-rust-ffi (C API)
    • BLOB型、CLOB型に対応
  • Tsurugi Python DB-API (Python API)

機能追加と改善 - UDF

  • Tsurugi UDFのリリース内容については、以下のドキュメントを参照してください:
  • 前バージョンからの主な機能追加は以下のとおりです:
    • NULL 値のサポート
    • UDF 呼び出し時のクライアントタイムアウトの指定に対応
    • UDF プラグイン設定ファイルでの grpc_server.endpoint 指定に対応

機能追加と改善 - Distribution

  • Ubuntu 26.04 に対応(試験的サポート)
  • Ubuntu 26.04 ベースのTsurugi Dockerイメージを提供(試験的サポート)
  • CMake 4.2.3 でのビルドに対応(試験的サポート)
    • CMake 4.2.3 は Ubuntu 26.04 環境で apt install によってインストールされるデフォルトのCMakeバージョンです。
  • インストーラーで環境にインストールする Apache Arrow のバージョンを 21.0.0 から 24.0.0 に変更
    • Ubuntu 26.04 環境では Tsurugi の前バージョンまでのインストーラーでインストールされる Apache Arrow のバージョン 21.0.0 が利用できず、インストーラーの実行に失敗します。Ubuntu 26.04 でインストーラーを利用する場合は、Apache Arrow のバージョンを 24.0.0 に変更した本バージョン以降のインストーラーを利用してください。

バグ修正

バグ修正 - SQL

  • DML処理中にDDLを実行するとデータベースが不安定な状態になる
  • HAVING 句で COUNT(DISTINCT ...) を複数回使用するクエリーを実行すると、データベースが異常終了することがある
  • セカンダリインデックスのキー列に NULL が含まれる時、 WHERE 句の不等号でその列を使用するクエリが不正確な結果を返すことがある
  • DROP INDEX でインデックス名ではなくテーブル名を指定した場合にエラーとならず成功してしまい、テーブルが不正な状態になる
  • CREATE INDEX  DESC を指定したインデックスを作成し、そのインデックスを範囲検索に使用するクエリの結果が不正となることがある
  • NULL を含む列を使って IN 句をサブクエリに対して使用した場合のクエリ結果が不正となる
  • IN 句をサブクエリに使用し、その出力列がセカンダリインデックス、またはプライマリインデックスのキー列またはそのプレフィックス部分である場合に、クエリ結果が不正となることがある

バグ修正 - Transaction

  • オフラインコンパクションツール tglogutil compaction を実行した後のデータベース環境において、特定の条件下でデータベースが起動できなくなる、またはデータベースのデータ内容が不正な状態になることがある

バグ修正 - Endpoint

  • tsurugi.ini に 重複したパラメータが存在した場合のTsurugi起動エラーのメッセージが不正

バグ修正 - Client

  • Tsurugi Python DB-API : KeepAliveが正常に動作せず、接続したコネクションがTsurugiサーバーの設定 session.refresh_timeout の期間後 (デフォルト: 300秒) に切断されてしまうことがある
  • Iceaxe : タイムアウト時間に0を指定すると、タイムアウトを無効にせず即時にタイムアウトしてしまう

バグ修正 - UDF

  • サービス定義 ( service ) を含む .proto を 別の .proto から import を指定してインポートし、それをビルドすると不正なUDFプラグインとして生成される
  • メッセージ定義に oneof を指定したフィールドを複数定義し、UDF呼び出し時に複数のフィールドに対してそれぞれ異なる型を指定するとエラーとなる
  • Protocol Buffer公式が提供する Well-Known Types を利用する .proto  udf-plugin-builder でビルドするとエラーとなる

アップグレードについて

クライアント互換性リスト

Tsurugi 1.11.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。

Important

本バージョンでは BLOB型, CLOB型の正式対応に伴い、全てのクライアントにおいて下表に示すバージョンへのアップグレードが必要となります。

Important

Tsurugi UDF については、udf-plugin-builder を用いてUDFプラグインを再生成してデプロイする必要があります。

ClientVersion
Tsubakuro/Java1.16.0+
Iceaxe1.16.0+
Tanzawa1.16.0+
Tsubakuro/Rust0.10.0+
Tsurugi Python DB-API0.10.0+
Tsurugi MCP Server0.8.0+
Tsurugi JDBC0.5.0+
Tsurugi UDF0.4.0+

アップグレード手順

旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。

その他

本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。

本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。