S-JIS[2023-10-22/2023-12-09]

Tsurugi SQLコンソールのSQL

TsurugiSQLコンソールのSQLのメモ。


概要

Tsurugi SQLコンソール(tgsql)では、「\」で始まる特殊コマンド以外SQLとして扱う。

SQLのうち、トランザクションの開始(begin/start)・コミット(commit)・ロールバック(rollback)・実行計画取得(explain)はtgsqlが解釈するが、それ以外はそのままTsurugiサーバーに送られる。 (tgsqlが内部で使っているTsubakuroでは、それらのAPIがSQL実行のAPIとは別に存在している為)
したがって、誤った文字列を入れると、Tsurugiサーバーに送られて、そこでエラーになって返ってくる。

tgsqlでは、ひとつのSQL文はセミコロン「;」で終わる。
セミコロンが入力されるまでは複数行にわたって入力を続けることが出来る。

tgsqlでは、「--」あるいは「//」以降は行コメントとして扱われる。[2023-12-09]
/**/」はブロックコメント。


暗黙のトランザクション開始

tgsqlでは、トランザクションを明示的に開始せずに(begin/startを実行せずに)SQLを実行すると、暗黙にトランザクションが開始される。 (「start transaction implicitly」というメッセージが出る)
その際のトランザクションオプションはtgsql起動時のオプションで指定できる。デフォルトはOCC

以下、tgsql 1.0.1(Tsurugi 1.0.0-BETA1)の例。

tgsql> insert into test values(1, 111, 'abc');
start transaction implicitly. option=[
  type: OCC
  label: "tgsql-transaction"
]
Time: 1.533 ms	←暗黙のトランザクション開始の実行時間
Time: 4.024 ms	←insertの実行時間
tgsql> select * from test;
start transaction implicitly. option=[
  type: OCC
  label: "tgsql-transaction"
]
Time: 22.814 ms
[foo: INT4, bar: INT8, zzz: CHARACTER]
[1, 111, abc]
[2, 222, def]
[3, 333, ghi]
(3 rows)
Time: 67.305 ms

tgsql 1.1.0(Tsurugi 1.0.0-BETA2)から、暗黙にトランザクションを開始した場合は、自動的にコミットされるようになった。[2023-12-09]
create/dropやselect/insertならまだしも、update/deleteはいきなり更新が確定してしまうので、要注意。

tgsql> insert into test values(1, 111, 'abc');
start transaction implicitly. option=[
  type: OCC
  label: "tgsql-transaction"
]
Time: 1.93 ms	←暗黙のトランザクション開始の実行時間
(1 row inserted)
Time: 3.936 ms	←insertの実行時間
transaction commit(DEFAULT) finished implicitly.
Time: 11.287 ms	←暗黙のコミットの実行時間

暗黙にトランザクションを開始した場合に自動コミットするかどうかは、クライアント変数で切り替えられる。
auto-commit.when-transaction-started-implicitlyにfalseを設定すると、(従来通り)自動コミットしない。デフォルトはtrue。

tgsql> \set auto-commit.when-transaction-started-implicitly false
auto-commit.when-transaction-started-implicitly=false
tgsql> select * from test;
start transaction implicitly. option=[
  type: OCC
  label: "tgsql-transaction"
]
Time: 1.481 ms
[foo: INT4, bar: INT8, zzz: CHARACTER]
[1, 111, abc]
(1 row)
Time: 26.97 ms

Tsurugi SQLコンソールへ戻る / Tsurugiへ戻る / 技術メモへ戻る
メールの送信先:ひしだま