system sh/stop_dnodes.sh

system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c walLevel -v 1
system sh/exec.sh -n dnode1 -s start
sleep 100
sql connect
#========================================= setup environment ================================

$dbPrefix = ca_db
$tbPrefix = ca_tb
$stbPrefix = ca_stb
$tbNum = 10
$rowNum = 10000
$totalNum = $tbNum * $rowNum
$ts0 = 1537146000000
$delta = 600000
print ========== col_arithmetic_operation.sim
$i = 0
$db = $dbPrefix . $i
$stb = $stbPrefix . $i

sql drop database $db -x step1
step1:
sql create database $db
sql use $db
sql create table $stb (ts timestamp, c1 int, c2 bigint, c3 float, c4 double, c5 smallint, c6 tinyint, c7 bool, c8 binary(10), c9 nchar(10)) tags(t1 int)

$i = 0
$ts = $ts0
$halfTbNum = $tbNum / 2
#while $i < $halfTbNum
  $t1 = $i + 1
  $t2 = $i + 2
  $t3 = $i + 3
  $t4 = $i + 4

  $t5 = $i + $halfTbNum
  $t6 = $t5 + 1
  $t7 = $t6 + 1
  $t8 = $t7 + 1
  $t9 = $t8 + 1

  $tb0 = $tbPrefix . $i
  $tb1 = $tbPrefix . $t1
  $tb2 = $tbPrefix . $t2
  $tb3 = $tbPrefix . $t3
  $tb4 = $tbPrefix . $t4

  $tb5 = $tbPrefix . $t5
  $tb6 = $tbPrefix . $t6
  $tb7 = $tbPrefix . $t7
  $tb8 = $tbPrefix . $t8
  $tb9 = $tbPrefix . $t9

  sql create table $tb0 using $stb tags( $i )
  sql create table $tb1 using $stb tags( $t1 )
  sql create table $tb2 using $stb tags( $t2 )
  sql create table $tb3 using $stb tags( $t3 )
  sql create table $tb4 using $stb tags( $t4 )

  sql create table $tb5 using $stb tags( $t5 )
  sql create table $tb6 using $stb tags( $t6 )
  sql create table $tb7 using $stb tags( $t7 )
  sql create table $tb8 using $stb tags( $t8 )
  sql create table $tb9 using $stb tags( $t9 )

  $x = 0
  while $x < $rowNum
    $xs = $x * $delta
    $ts = $ts0 + $xs
    $c = $x / 10
    $c = $c * 10
    $c = $x - $c
    $binary = 'binary . $c
    $binary = $binary . '
    $nchar = 'nchar . $c
    $nchar = $nchar . '
    sql insert into $tb0 values ( $ts , $c , $c , $c , $c , $c , $c , true, $binary , $nchar ) $tb1 values ( $ts , $c , $c , $c , $c , $c , $c , true, $binary , $nchar ) $tb2 values ( $ts , $c , $c , $c , $c , $c , $c , true, $binary , $nchar ) $tb3 values ( $ts , $c , $c , $c , $c , $c , $c , true, $binary , $nchar ) $tb4 values ( $ts , $c , $c , $c , $c , $c , $c , true, $binary , $nchar )
    $x = $x + 1
  endw
  #$i = $i + 1

  $x = 0
  while $x < $rowNum
    $xs = $x * $delta
    $ts = $ts0 + $xs
    $c = $x / 10
    $c = $c * 10
    $c = $x - $c
    $binary = 'binary . $c
    $binary = $binary . '
    $nchar = 'nchar . $c
    $nchar = $nchar . '

    $ts = $ts + 1
    sql insert into $tb5 values ( $ts , NULL , $c , NULL , $c , NULL , $c , NULL, NULL , $nchar ) $tb6 values ( $ts , NULL , $c , NULL , $c , NULL , $c , NULL, NULL , $nchar ) $tb7 values ( $ts , NULL , $c , NULL , $c , NULL , $c , NULL, NULL , $nchar ) $tb8 values ( $ts , NULL , $c , NULL , $c , NULL , $c , NULL, NULL , $nchar ) $tb9 values ( $ts , NULL , $c , NULL , $c , NULL , $c , NULL, NULL , $nchar )
    $x = $x + 1
  endw

#endw

#=================================== above are setup test environment =============================
run general/parser/col_arithmetic_query.sim

#======================================= all in files query =======================================
print ================== restart server to commit data into disk
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 500
system sh/exec.sh -n dnode1 -s start

print ================== server restart completed
sql connect
sleep 5000

run general/parser/col_arithmetic_query.sim

# ================================================================================================

print ====================> crash
sql use $db
sql select spread(ts )/(1000*3600*24) from $stb interval(1y)

sql_error select first(c1, c2) - last(c1, c2) from $stb interval(1y)
sql_error select first(ts) - last(ts) from $stb interval(1y)
sql_error select top(c1, 2) - last(c1) from $stb;
sql_error select stddev(c1) - last(c1) from $stb;
sql_error select diff(c1) - last(c1) from $stb;
sql_error select first(c7) - last(c7) from $stb;
sql_error select first(c8) - last(c8) from $stb;
sql_error select first(c9) - last(c9) from $stb;
sql_error select max(c2*2) from $tb
sql_error select max(c1-c2) from $tb

#========================================regression test cases====================================
print =====================> td-1764
sql select sum(c1)/count(*), sum(c1) as b, count(*) as b from $stb interval(1y)
if $rows != 1 then
  return -1
endi

if $data00 != @18-01-01 00:00:00.000@ then
  return -1
endi

if $data01 != 2.250000000 then
  return -1
endi

if $data02 != 225000 then
  return -1
endi

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