Tsurugi 1.0.0-BETA6 をリリースしました。

概要

本バージョンでは主にSQL機能を中心とした機能追加と改善が行われています。

またいくつかの重要な構成変更および非互換の変更が行われています。
アップグレードの際には以下の「構成変更と非互換の変更」の内容に注意してください。

機能追加と改善

  • SQL

    • INSERT INTO SELECT 文に対応
      • INSERT INTO ... SELECT ...
      • INSERT OR REPLACE INTO ... SELECT ...
      • INSERT OR IGNORE INTO ... SELECT ...
    • BINARY,VARBINARY 型に対応
      • SELECT/INSERT/UPDATE/DELETE文、ORDER BY句や大小比較、キャストなどの基本的な機能に対応
      • バイナリ型リテラル、およびクライアントAPIのプレースホルダを経由したバイナリデータの登録に対応
      • tgsql でバイナリ型の表示に対応
      • 本バージョンでは以下のような制約があります。
        • 主キーまたはインデックスのキーの列として VARBINARY 型は使用不可
        • dump/load操作に未対応
    • 日付/時刻関数のサポート
      • CURRENT_DATE
      • LOCALTIME
      • CURRENT_TIMESTAMP
      • LOCALTIMESTAMP
    • 日付/時刻リテラルのサポート
      • DATE 'YYYY-MM-DD'
      • TIME 'HH:MM:SS'
      • TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
      • TIMESTAMP WITH TIME ZONE 'YYYY-MM-DD HH:MM:SS+HH:MM'
      • (文字列型と日付/時刻型間のキャストについては次バージョン以降で対応予定)
    • CREATE TABLE の際のカラムのデフォルト値に日付/時刻関数をサポート
      • CREATE TABLE t ( ..., ts TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP )
    • BETWEEN 述語のサポート
    • IN 述語のサポート
      • 本バージョンでは値リストを伴うIN述語 (例: x IN (a, b, c)) のみ対応
    • CHAR, VARCHAR 型に対して主キーやインデックス指定のカラムを除き定義可能な最大サイズを約30KBから約2MBに拡張
      • BINARY, VARBINARY 型についても同様
      • IPCエンドポイントを利用する場合、ipc_endpoint.datachannel_buffer_size の設定値によりSELECTの結果セットのサイズに制約があることに注意してください。
    • TIMESTAMP WITH TIMEZONE 型に対してタイムゾーンオフセット (例: +09:00) を考慮した正しい挙動に修正
  • Endpoint

    • セッションの自動タイムアウトとクライアントからのKeep Aliveに対応
      • クライアントから一定時間応答がないセッションを自動的にクローズしリソースを解放します。
      • セッションの意図しないクローズを防ぐため、クライアントから定期的にKeep Aliveメッセージを送信することが可能です (デフォルトでKeep Aliveは有効になっています)。
        • Keep AliveメッセージはTsubakuro 1.5.0 およびこれを利用するライブラリから有効です。古いバージョンのクライアントからはKeep Aliveメッセージが送られないことに注意してください。
      • セッションの自動タイムアウトの設定は、構成定義ファイル tsurugi.ini  session セクションの各設定項目で変更可能です。
  • Server Configuratios (tsurugi.ini で新たに指定可能となったオプション)

    • session.zone_offset
      • セッションのデフォルトタイムゾーンオフセットを指定するISO8601規定の文字列 (±[hh]:[mm]形式 や Z) 。デフォルトはUTCを示す文字列。

SQL機能の詳細については Available SQL features in Tsurugi を参照してください。

構成変更と非互換の変更

本バージョンでは以下に示すTsurugiの構成変更、および旧バージョンに対する非互換の変更が行われています。

  • TCPエンドポイントをデフォルトで無効化

    • 主にセキュリティ上の理由から、TCPエンドポイントはデフォルトで無効化されました。TCPエンドポイントを利用する場合は tsurugi.ini  stream_endpoint.enabled  true に設定してください。
    • Tsurugi Dockerイメージ上では従来通り、TCPエンドポイントはデフォルトで有効化されています。
  • 旧SQLコンパイラ (Shakujoコンパイラ) の撤廃

    • 旧SQLコンパイラ (Shakujoコンパイラ) とその依存モジュールはインストール構成から除外されました。
    • tsurugi.ini  sql.dev_compiler_support=0 による旧SQLコンパイラの有効化設定は削除されました。
  • Ogawayamaの構成変更

    • モジュール依存関係の整理によるリリース構成の見直しにより「Ogawayama Stub」とその依存モジュールはインストール構成から除外されました。Ogawayama Stubは tsurugi_fdw の依存モジュールであり、これを利用しない場合は不要です。
    • Tsurugiサーバの一部として動作するOgawayamaモジュール「Ogawayama Bridge」は従来通りインストール構成に含まれます。
  • インストールアーカイブのディレクトリ構成変更

    • インストールアーカイブの展開時、第1階層に tsurugidb-<version> ディレクトリが作成され、その配下にソースファイルなどが配置されるように変更されました。

バグ修正

  • SQL

    • SELECTリストに同一の集約関数を2回書いた場合、不正な結果を返すことがある
    • 精度0のDECIMALカラムのmax,min関数が不正な結果を返すことがある
    • TIMESTAMP WITH TIME ZONE 型に対するmax,min関数の結果が TIMESTAMP 型となる
  • Transaction

    • 3つ以上のLTXの競合状態を伴う特定のケースでSerializability違反が検出されない
    • 複数のOCC,LTXの競合状態を伴う特定のケースで削除済みのレコードが読めてしまう
    • 複数のOCCでINSERT OR REPLACEとINSERTが競合した際に想定外のエラーやストールが発生することがある
    • tsurugidb起動中にOSの最大オープン数を超えるとデータベースが不整合な状態で起動することがある
    • 大量のテーブル作成後にシャットダウンを行うと正常にシャットダウンできないことがある
  • Endpoint

    • IPC接続によるSELECT実行時に結果セットのサイズが ipc_endpoint.datachannel_buffer_size を超えるとレスポンスが返らない
  • Client APIs

    • TIMESTAMP WITH TIME ZONE 型に対してプレースホルダを使ったAPI経由で値を登録すると異常値となることがある

その他、細かい安定性の向上や動作の改善などが行われています。詳細については以下のChangelogを参照してください。

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


詳細は、下記をご覧ください。
https://github.com/project-tsurugi/tsurugidb/releases/tag/1.0.0-BETA6