Begin;
Initialize;
InitializeSession "TESTDB";
Command "create database TESTDB";
TerminateSession;
InitializeSession "TESTDB";
#
# XA START -- 開始しようと試みたトランザクションブランチの状態ごとのテスト
#
# 注意 : Sydneyをクライアントだけでなくサーバ側もTerminateする必要があるため、SydServer で実行してはならない。
#

# 『存在しない』
## 『データ操作中』のトランザクションブランチと連携している実行中のセッションで開始
Command "xa start X'00'";
Command "xa start X'01'";
Command "xa end X'00'";
Command "xa prepare X'00'";
Command "xa commit X'00'";

# 『データ操作中』
## 自セッションで実行中のトランザクションブランチのトランザクションブランチ識別子
Command "xa start X'00'";
Command "xa start X'00'";
Command "xa end X'00'";
Command "xa prepare X'00'";
Command "xa commit X'00'";

# 『待機中』
Command "xa start X'00'";
Command "xa end X'00'";
Command "xa start X'00'";
Command "xa prepare X'00'";
Command "xa commit X'00'";

# 『コミット準備完了』
Command "xa start X'00'";
Command "xa end X'00'";
Command "xa prepare X'00'";
Command "xa start X'00'";
Command "xa commit X'00'";

# 『ヒューリスティックな解決済』
Command "create table T(I int)";
Command "xa start X'00'";
Command "insert into T(I) values (?)" [1];
Command "xa end X'00'";
Command "xa prepare X'00'";
TerminateSession;
Terminate;
Initialize;
InitializeSession "TESTDB";
Command "xa recover";
Command "xa start X'00'";
Command "xa forget X'00'";
Command "drop table T";

TerminateSession;
InitializeSession "TESTDB";
Command "drop database TESTDB";
TerminateSession;
Terminate;
End;
