system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec.sh -n dnode1 -s start
sql connect

print ========== prepare stb and ctb
sql create database db vgroups 1
sql create table db.stb (ts timestamp, c1 int, c2 binary(4)) tags(t1 int, t2 float, t3 binary(16)) comment "abd"
sql create table db.ctb using db.stb tags(101, 102, "103")
sql insert into db.ctb values(now, 1, "2")

sql select * from information_schema.ins_stables where db_name = 'db'
if $rows != 1 then
  return -1
endi
if $data[0][0] != stb then
  return -1
endi
if $data[0][1] != db then
  return -1
endi
if $data[0][3] != 3 then
  return -1
endi
if $data[0][4] != 3 then
  return -1
endi
if $data[0][6] != abd then
  return -1
endi

sql select * from information_schema.ins_tables where db_name = 'db'
if $rows != 1 then
  return -1
endi
if $data[0][0] != ctb then
  return -1
endi
if $data[0][1] != db then
  return -1
endi
if $data[0][3] != 3 then
  return -1
endi
if $data[0][4] != stb then
  return -1
endi
if $data[0][6] != 2 then
  return -1
endi
if $data[0][9] != CHILD_TABLE then
  return -1
endi

sql select * from db.stb
if $rows != 1 then
  return -1
endi
if $data[0][1] != 1 then
  return -1
endi
if $data[0][2] != 2 then
  return -1
endi
if $data[0][3] != 101 then
  return -1
endi

sql_error alter table db.stb add column ts int
sql_error alter table db.stb add column t1 int
sql_error alter table db.stb add column t2 int
sql_error alter table db.stb add column t3 int
sql_error alter table db.stb add column c1 int

print ========== step1 add column c3
sql alter table db.stb add column c3 int
sql select * from information_schema.ins_stables where db_name = 'db'
if $data[0][3] != 4 then
  return -1
endi

sql select * from information_schema.ins_tables where db_name = 'db'
if $data[0][3] != 4 then
  return -1
endi

sql select * from db.stb
sql select * from db.stb
print $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
if $rows != 1 then
  return -1
endi
if $data[0][1] != 1 then
  return -1
endi
if $data[0][2] != 2 then
  return -1
endi
if $data[0][3] != NULL then
  return -1
endi
if $data[0][4] != 101 then
  return -1
endi

sql insert into db.ctb values(now+1s, 1, 2, 3)
sql select * from db.stb
print $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
print $data[1][0] $data[1][1] $data[1][2] $data[1][3] $data[1][4] $data[1][5] $data[1][6]

if $rows != 2 then
  return -1
endi
if $data[0][1] != 1 then
  return -1
endi
if $data[0][2] != 2 then
  return -1
endi
if $data[0][3] != NULL then
  return -1
endi
if $data[0][4] != 101 then
  return -1
endi
if $data[1][1] != 1 then
  return -1
endi
if $data[1][2] != 2 then
  return -1
endi
if $data[1][3] != 3 then
  return -1
endi
if $data[1][4] != 101 then
  return -1
endi

print ========== step2 add column c4
sql alter table db.stb add column c4 bigint
sql select * from db.stb
sql insert into db.ctb values(now+2s, 1, 2, 3, 4)
sql select * from db.stb
print $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
print $data[1][0] $data[1][1] $data[1][2] $data[1][3] $data[1][4] $data[1][5] $data[1][6]
print $data[2][0] $data[2][1] $data[2][2] $data[2][3] $data[2][4] $data[2][5] $data[2][6]

if $rows != 3 then
  return -1
endi
if $data[0][1] != 1 then
  return -1
endi
if $data[0][2] != 2 then
  return -1
endi
if $data[0][3] != NULL then
  return -1
endi
if $data[0][4] != NULL then
  return -1
endi
if $data[0][5] != 101 then
  return -1
endi
if $data[1][1] != 1 then
  return -1
endi
if $data[1][2] != 2 then
  return -1
endi
if $data[1][3] != 3 then
  return -1
endi
if $data[1][4] != NULL then
  return -1
endi
if $data[1][5] != 101 then
  return -1
endi
if $data[2][1] != 1 then
  return -1
endi
if $data[2][2] != 2 then
  return -1
endi
if $data[2][3] != 3 then
  return -1
endi
if $data[2][4] != 4 then
  return -1
endi
if $data[2][5] != 101 then
  return -1
endi

print ========== step3 add column c5
sql alter table db.stb add column c5 int
sql insert into db.ctb values(now+3s, 1, 2, 3, 4, 5)
sql select * from db.stb
print $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6]
print $data[1][0] $data[1][1] $data[1][2] $data[1][3] $data[1][4] $data[1][5] $data[1][6]
print $data[2][0] $data[2][1] $data[2][2] $data[2][3] $data[2][4] $data[2][5] $data[2][6]

if $rows != 4 then
  return -1
endi
if $data[2][1] != 1 then
  return -1
endi
if $data[2][2] != 2 then
  return -1
endi
if $data[2][3] != 3 then
  return -1
endi
if $data[2][4] != 4 then
  return -1
endi
if $data[2][5] != NULL then
  return -1
endi
if $data[2][6] != 101 then
  return -1
endi
if $data[3][1] != 1 then
  return -1
endi
if $data[3][2] != 2 then
  return -1
endi
if $data[3][3] != 3 then
  return -1
endi
if $data[3][4] != 4 then
  return -1
endi
if $data[3][5] != 5 then
  return -1
endi
if $data[3][6] != 101 then
  return -1
endi

print ========== step4 add column c6
sql alter table db.stb add column c6 int
sql insert into db.ctb values(now+4s, 1, 2, 3, 4, 5, 6)
sql select * from db.stb

if $rows != 5 then
  return -1
endi
if $data[3][1] != 1 then
  return -1
endi
if $data[3][2] != 2 then
  return -1
endi
if $data[3][3] != 3 then
  return -1
endi
if $data[3][4] != 4 then
  return -1
endi
if $data[3][5] != 5 then
  return -1
endi
if $data[3][6] != NULL then
  return -1
endi
if $data[3][7] != 101 then
  return -1
endi
if $data[4][1] != 1 then
  return -1
endi
if $data[4][2] != 2 then
  return -1
endi
if $data[4][3] != 3 then
  return -1
endi
if $data[4][4] != 4 then
  return -1
endi
if $data[4][5] != 5 then
  return -1
endi
if $data[4][6] != 6 then
  return -1
endi
if $data[4][7] != 101 then
  return -1
endi

print ========== step5 describe
sql describe db.ctb
if $rows != 10 then
  return -1
endi

system sh/exec.sh -n dnode1 -s stop -x SIGINT
