ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

劔の文字コード

2023-12-24 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の24日目です。

RDBMSのTsurugiのことを自分は「Tsurugi」と書くことが多いですが、漢字で書かれることもあります。
「劔」ですね。

しかし劔には異体字(異なる文字コードのもの)がいくつもあって、どれを使えばいいか迷うこともあるかもしれません。そんなときに覚えやすいのが、劔の文字コードはShift_JISで0x9999である!ということです。

皆さんが常備しているJShellを使えば、一発で出せます!

jshell> new String(java.nio.ByteBuffer.allocate(2).putShort((short)0x9999).array(), "MS932")$1 ==> "劔"

 

参考:Tsurugiの正しい漢字の出し方

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

(Tsurugi)tgsql 1.1.0の変更点

2023-12-23 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の23日目です。

2023/12/7にTsurugi 1.0.0-BETA2が公開されましたが、そのときにTsurugi SQLコンソール(tgsql)は1.1.0になりました。

tgsql 1.0.1と1.1.0の違いは、以下の3つくらいかと思います。

  • tgsql --versionでバージョン情報を出すようになった。
  • 暗黙にトランザクションを開始した場合、SQL実行後に自動的にコミットするようになった。
  • 細かすぎて伝わらない地味な修正点
    • 更新系SQLの処理件数を表示するようになった。
    • selectの実行結果が1件だったとき、単位を「row」と表示するようになった。
    • コンソールモードで、コメントのみの行をスキップするようになった。

暗黙のトランザクションに関する変更は、注意が必要です。
tgsqlでは、トランザクションを開始せずに(beginを実行せずに)SQLを実行すると、暗黙にトランザクションを開始します。
今までは、暗黙に開始されたトランザクションはそのまま継続されるので、自分でcommitを実行する必要がありました。
tgsql 1.1.0では、暗黙にトランザクションが開始された場合はSQL実行後に自動的にコミットされるようになったので、特に修正の効かないupdateやdeleteを実行する際は要注意です!

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

(Tsurugi)Iceaxe 1.1.0の変更点

2023-12-22 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の22日目です。

2023/12/7にTsurugi 1.0.0-BETA2が公開されましたが、そのときにJavaライブラリーであるIceaxeは1.1.0になりました。

Iceaxe 1.0.1と1.1.0の一番大きな違いは、TsurugiTransactionのexecuteAndGetCountメソッドが更新系SQLの処理件数を正しく返すようになったことだと思います。(今まではTsurugiサーバー側にその実装が無かったので、常に-1を返すようになっていました)

なお、executeAndGetCountメソッドの戻り値の型はintですが、実際は、Tsurugiサーバーからはlongで返って来ています。なので、intでは足らん!という人は、Iceaxe 1.1.0で追加されたexecuteAndGetCountDetailメソッドを使うと良いでしょう。こちらは実行したSQLの種類ごとにlongで処理件数が返ってきます。ちなみにinsert or replaceの件数はMERGED_ROWSという名前になっています。

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

(Tsurugi)Tsubakuro 1.1.0の変更点

2023-12-21 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の21日目です。

2023/12/7にTsurugi 1.0.0-BETA2が公開されましたが、そのときにJavaの通信ライブラリーであるTsubakuroは1.1.0になりました。

Tsubakuro 1.0.1と1.1.0の大きな違いは、更新系SQLを実行するメソッド(TransactionのexecuteStatementメソッド)の戻り値の型が、FutureResponse<Void>からFutureResponse<ExecuteResult>に変わったことでしょうか。
つまり、1.0.1でFutureReponse<Void>を受け取るように書いたソースコードは、1.1.0ではコンパイルエラーになるということです。(awaitメソッドで受けて戻り値を無視していたら関係ありませんが^^;)

あと、service message versionも追加になっているますが、それについてはアドベントカレンダーの13日目をご覧ください。

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Tsurugiで使えるSQLの演算子

2023-12-20 00:00:00 | PG(RDBMS)

Tsurugi Advent Calendar 2023の20日目です。

現時点のTsurugi(1.0.0-BETA2)では、まだ未対応のSQL構文や演算子があります。どんな構文が使えるかと、これから何が実装される予定なのかはAvailable SQL features in Tsurugiに書かれています。

未対応の演算子を使おうとすると、SYNTAX_EXCEPTIONが発生するケースとUNSUPPORTED_RUNTIME_FEATURE_EXCEPTIONが発生するケースがあります。

SYNTAX_EXCEPTIONは文法エラーですが、全く対応されていない構文や演算子に対しても発生します。
例えばinやbetweenを使おうとすると発生します。

UNSUPPORTED_RUNTIME_FEATURE_EXCEPTIONは、構文上は対応されているけれども内容が実装されていないものに対して発生するエラーです。
例えばlikeをTsurugi 1.0.0-BETA2で使おうとすると発生します。
ちなみにlikeをTsurugi 1.0.0-BETA1で使うとエラーは発生しませんが、実行結果は常にunknown扱い(where条件ではfalseと同じ)になります。

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする