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

InitializeSession "TESTDB";

#表を作る
#
#create table T(f int, g int generated by default as identity, h int);

Command "create table T(f int, g int generated by default as identity, h int)";

#データベースの格納場所を移動する
#
#alter database TESTDB set path 'c:\Sydney\data\alterTESTDB';

Command "alter database TESTDB set path 'd:\\dm\\data\\alterTESTDB'";

#g の値を指定せずに数件の挿入を数回繰り返す
#
#insert T(f, h) values (1, 10), (2, 20), (3, 30);
#insert T(f, h) values (4, 40), (5, 50), (6, 60);

Command "insert T(f, h) values (1, 10), (2, 20), (3, 30)";
Command "insert T(f, h) values (4, 40), (5, 50), (6, 60)";

#IDENTITYファイルの場所が移動後の場所であることを確認する
#
#Exists "c:\\Sydney\\data\\alterTESTDB\\T\\IDENTITY";

Exists "d:\\dm\\data\\alterTESTDB\\T\\IDENTITY";

#g が 0 から順番に割り当てられていることを確認する
#
#select * from T;
#⇒ 期待結果:
#   {1, 0, 10}
#   {2, 1, 20}
#   {3, 2, 30}
#   {4, 3, 40}
#   {5, 4, 50}
#   {6, 5, 60}

Command "select * from T";

#エリアを定義する
#
#create area A1 'c:\Sydney\data\area1';

Command "create area A1 'd:\\dm\\data\\area1'";

#表の格納場所を変更する
#
#alter table T set area A1;

Command "alter table T set area A1";

#g の値を指定せずに数件の挿入を数回繰り返す
#
#insert T(f, h) values (10, 100), (20, 200), (30, 300);
#insert T(f, h) values (40, 400), (50, 500), (60, 600);

Command "insert T(f, h) values (10, 100), (20, 200), (30, 300)";
Command "insert T(f, h) values (40, 400), (50, 500), (60, 600)";

#IDENTITYファイルの場所が移動後の場所であることを確認する
#
#Exists "c:\\Sydney\\data\\area1\\T\\IDENTITY";

Exists "d:\\dm\\data\\area1\\T\\IDENTITY";

#g が続きから順番に割り当てられていることを確認する
#
#select * from T where f >= 10;
#⇒ 期待結果:
#   {10, 6, 100}
#   {20, 7, 200}
#   {30, 8, 300}
#   {40, 9, 400}
#   {50, 10, 500}
#   {60, 11, 600}

Command "select * from T where f >= 10";

#エリアの場所を移動する
#
#alter area A1 modify 'c:\Sydney\data\alterarea1';

Command "alter area A1 modify 'd:\\dm\\data\\alterarea1'";

#g の値を指定せずに数件の挿入を数回繰り返す
#
#insert T(f, h) values (100, 1000), (200, 2000), (300, 3000);
#insert T(f, h) values (400, 4000), (500, 5000), (600, 6000);

Command "insert T(f, h) values (100, 1000), (200, 2000), (300, 3000)";
Command "insert T(f, h) values (400, 4000), (500, 5000), (600, 6000)";

#IDENTITYファイルの場所が移動後の場所であることを確認する
#
#Exists "c:\\Sydney\\data\\alterarea1\\T\\IDENTITY";

Exists "d:\\dm\\data\\alterarea1\\T\\IDENTITY";

#g が続きから順番に割り当てられていることを確認する
#
#select * from T where f >= 100;
#⇒ 期待結果:
#   {100, 12, 1000}
#   {200, 13, 2000}
#   {300, 14, 3000}
#   {400, 15, 4000}
#   {500, 16, 5000}
#   {600, 17, 6000}

Command "select * from T where f >= 100";

######################################################################

# tableの後始末
Command "drop table T";

TerminateSession;

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