Tsurugi Advent Calendar 2023の13日目です。
2023/12/7に、Tsurugi 1.0.0-BETA2がリリースされました。→リリースノート
BETA1とBETA2では、Tsurugiサーバーとクライアント(Tsubakuro)間の通信データの一部に互換性の無い変更が加わっています。
このため、Tsurugiサーバーとクライアントのバージョンが合っていないと、エラーが発生することがあります。
Tsurugi SQLクライアント(tgsql)やIceaxeはTsubakuroを使用している為、同じ影響を受けます。
クライアントとTsurugiサーバーのバージョンが同じ場合(○)
クライアントとTsurugiサーバーのバージョンが同じ場合は、当然ながら正しく通信できます。
tgsql> insert into test values(1,1,'1'); (1 row inserted)
※tgsql 1.1.0(Tsurugi 1.0.0-BETA2)では、更新系SQLの処理件数が表示されるようになりました
クライアントが古く、Tsurugiサーバーが新しい場合(×)
Tsubakuroが1.0.1(Tsurugi 1.0.0-BETA1)、Tsurugiサーバーが1.0.0-BETA2の場合、SQL実行でエラーが発生します。
tgsql> insert into test values(1,1,'1'); com.tsurugidb.tsubakuro.exception.CoreServiceException: SCD-00501: inconsistent service message version: see https://github.com/project-tsurugi/tsurugidb/blob/master/docs/service-message-compatibilities.md (client: "sql-0.0", server: "sql-1.0")
「service message version」というのが通信データのバージョンのことで、そのエラーメッセージに書かれている通り、service-message-compatibilities.mdに対応バージョンが書かれています。
クライアントが新しく、Tsurugiサーバーが古い場合(△)
Tsubakuroが1.1.0(Tsurugi 1.0.0-BETA2)、Tsurugiサーバーが1.0.0-BETA1の場合、SQLを実行することは出来ます。
ただし、更新系SQLの処理件数が返ってきません。
tgsql> insert into test values(1,1,'1'); execute succeeded
Iceaxeの場合、更新系SQLを実行するexecuteAndGetCountメソッドは、1.0.1では常に-1を返していましたが、1.1.0ではTsurugiサーバーから返された更新件数を返します。しかしTsurugiサーバーがBETA1だと更新件数を返さないため、executeAndGetCountメソッドは0を返すことになります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます