概要
Tsurugi 1.5.0 では SQL関連機能として LIKE
演算子やいくつかのビルトイン関数の追加、互換性に関する改善などが行われました。
また、トランザクション関連機能では、前バージョンで正式機能に昇格したRTX並列スキャンに対して、クライアント側からトランザクション単位でタスク分割数を指定できるようになりました。
その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。
機能追加と改善
機能追加と改善 - SQL
LIKE
演算子に対応LIKE
演算子は、文字列のパターンマッチングを行うための演算子です。ワイルドカード文字%
と_
を使用して、部分一致検索が可能になります。- 例:
SELECT * FROM t WHERE c LIKE 'pattern%'
LIKE
演算子の詳細については、以下のドキュメントを参照してください。
ROUND
関数に対応ROUND
関数は、数値を指定された桁数に丸める関数です。- 例:
SELECT ROUND(c, 2) FROM table
ROUND
関数の詳細については、以下のドキュメントを参照してください。
ENCODE
,DECODE
関数に対応ENCODE
関数は、バイナリデータをBase64エンコードした文字列に変換します。詳細については、以下のドキュメントを参照してください。DECODE
関数は、Base64エンコードされた文字列をバイナリデータに変換します。詳細については、以下のドキュメントを参照してください。
- 文字列リテラルから日付/時刻データ型への暗黙変換によるINSERT/UPDATEに対応
- 例:
INSERT INTO table (date_col) VALUES ('2023-10-01')
- 暗黙変換を含む変換に関する仕様の詳細については、以下のドキュメントを参照してください。
- 例:
?
形式のプレースホルダ(positional placeholder)に対応- 従来の
:変数名
形式のプレースホルダに加えて、?
形式のプレースホルダを使用して、クエリー内でステートメントに値を割り当てることができるようになりました。 - 例:
SELECT * FROM table WHERE c1 = ? AND c2 = ?
- positional placeholderの詳細については、以下のドキュメントを参照してください。
- 従来の
機能追加と改善 - Transaction
- RTX並列スキャン利用時にトランザクション単位でタスク分割数を指定できるよう対応
- 各クライアントAPIや
tgsql
からRTX開始時にトランザクションオプションとしてタスク分割数を指定できるようになりました。- 例:
tgsql
ではBEGIN READ ONLY WITH PARALLEL=8;
のように指定することで、開始するトランザクション内でのタスク分割数を8に設定できます。
- 例:
- これにより、例えば大量データのスキャンを伴う可能性があるトランザクションでは、タスク分割数に大きな値を指定することでより高速なスキャンを行う、といったことが可能になります。ただしクエリー実行時には多数のタスクが同時に実行されることでサーバリソースに対する負荷が大きくなる可能性があります。
- タスク分割数の指定に関する詳細については、以下のドキュメントを参照してください。
- 各クライアントAPIや
機能追加と改善 - Client
tgsql
の\show table
コマンドにおいて、以下の情報が表示されるよう対応- 各テーブルのプライマリキーに関する情報
- Tsubakuro:
LoadBuilder
による列マッピング方法にBASE64
を追加
機能追加と改善 - Endpoint
- セッション終了時に自動的に関連リソースを破棄
- 従来
tgctl session shutdown
によるセッション強制終了時やクライアントプロセスの強制終了時などで、セッション終了時に関連するトランザクションやステートメントリソースが自動的に破棄されずに残留してしまうことがありました。これにより、特にLTXに関連するリソースが残留することで他のトランザクションに影響を与えることがありましたが、セッション終了時に自動的に関連リソースを破棄するよう対応しました。 - ただし、クライアントプロセスの強制終了の状況によってはサーバ側にセッションが残留することがあります。セッションの残留が発生した場合、サーバ側のセッションタイムアウト(デフォルトは5分)によってセッションが解放されます。このタイミングで関連リソースが合わせて解放されるため、関連リソースの解放はクライアントプロセスの終了から遅れることがあります。
- 従来
機能追加と改善 - Distribution
- 動作検証プラットフォームの変更
- (試験的機能) AlmaLinux: 9.5 から 9.6 に変更
- (試験的機能) Rocky Linux: 9.5 から 9.6 に変更
- Clang 19 に対応 (前バージョンでは Clang 18 までに対応)
- インストーラーで導入するJDKのバージョンを11から17に変更
- インストーラーに同梱しているTsubakuro, Tanzawaのビルド時にはJDK11が利用されます。JDK11がインストールされていない環境では、これらのビルド時にはGradleのJava Toolchainを利用してJDK11が自動的にダウンロードされ、これが利用されます。
バグ修正
バグ修正 - SQL
- SELECTリストに集約関数とプレースホルダが含まれるとSymbolAnalyzeExceptionが発生する
バグ修正 - Endpoint
- セッションまたはトランザクションリソースの残留時に
tgctl shutdown
が正常に動作しないことがある- 上述の「セッション終了時に自動的に関連リソースを破棄」に関連し、セッションタイムアウトによるセッションの解放が完了するまで
tgctl shutdown
の処理が完了しないことがあります。
- 上述の「セッション終了時に自動的に関連リソースを破棄」に関連し、セッションタイムアウトによるセッションの解放が完了するまで
バグ修正 - Transaction
- オンラインコンパクションツール実行後にレコードを削除し、その後データベースを再起動すると削除したレコードが復元されることがある
バグ修正 - Client
- Tsubakuro/Javaにおいて、IPC接続でセッション接続のタイムアウト時間にLong.MAX_VALUEミリ秒を指定した場合、2回目のセッション接続がタイムアウトにより異常終了する
アップグレードについて
クライアント互換性リスト
Tsurugi 1.5.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。
クライアント | バージョン |
---|---|
Tsubakuro/Java | 1.10.0 |
Iceaxe | 1.10.0 |
Tanzawa | 1.10.0 |
Tsubakuro/Rust | 0.3.0 |
Tsurugi MCP Server | 0.2.0 |
アップグレード手順
旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。
その他
本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。
本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。