以下の内容はhttps://hishidama.hatenablog.com/entry/a170b065f5d1d0ef26bb363b8e46e8dcより取得しました。


Tsurugi 1.0.0-BETA1とBETA2の通信の互換性

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を返すことになります。




以上の内容はhttps://hishidama.hatenablog.com/entry/a170b065f5d1d0ef26bb363b8e46e8dcより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14