Begin;
BeginTimeSpan;
Initialize;
EndTimeSpan;
InitializeSession "";
Command "create database TESTDB";
TerminateSession;

InitializeSession "TESTDB";
Command "create table T(C ntext)";
TerminateSession;

# backupとDBへの操作を同時に行う
CreateThread "Thread1";
CreateThread "Thread2";
JoinThread "Thread1";
JoinThread "Thread2";

Thread1 {
InitializeSession 1 "TESTDB";
Command 1 "start transaction read only, using snapshot, isolation level serializable";
# バックアップ開始
#discard snapshotはr/wなら必須、r/oならオプション
Command 1 "start backup full ";
# バックアップできる状態になったDBの退避
System "..\\..\\switchcopy.bat d:\\dm\\data\\TESTDB d:\\dm\\alter_data_TESTDB";
System "..\\..\\switchcopy.bat d:\\dm\\system\\TESTDB d:\\dm\\alter_system_TESTDB";
# バックアップ終了
Command 1 "end backup";
Command 1 "commit";
TerminateSession 1;
}

Thread2 {
# DBの状態をいろいろ変えてみる
InitializeSession 2 "TESTDB";
Command 2 "create fulltext index I on T(C) hint 'inverted=(nolocation=true, notf=true)'";
Command 2 "create area A 'd:\\dm\\area\\a'";
Command 2 "insert into T values ('Foo')";
Command 2 "update T set C='Hogege'";
Command 2 "insert into T values ('Bar')";
Command 2 "alter table T set area A";
Command 2 "insert into T values ('Baz')";
Command 2 "alter index I set area A";
Command 2 "insert into T values ('Quux')";
Command 2 "alter index I drop area";
Command 2 "delete from T where C='Quux'";
Command 2 "alter table T drop area";
Command 2 "insert into T values ('Quux')";
Command 2 "drop area A";
Pause;
Command 2 "select * from T";
TerminateSession 2;
}

# (障害回復を試すためTerminateしない)
End;

