[TD-3126]<feature>:add nano second precision testcase and modify tsim to support time precision
This commit is contained in:
parent
87331b48e3
commit
d7f32149ef
|
@ -135,6 +135,7 @@ run general/parser/tags_dynamically_specifiy.sim
|
|||
run general/parser/set_tag_vals.sim
|
||||
#unsupport run general/parser/repeatAlter.sim
|
||||
#unsupport run general/parser/slimit_alter_tags.sim
|
||||
run general/parser/precision_ns.sim
|
||||
run general/stable/disk.sim
|
||||
run general/stable/dnode3.sim
|
||||
run general/stable/metrics.sim
|
||||
|
|
|
@ -0,0 +1,113 @@
|
|||
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 1000
|
||||
sql connect
|
||||
|
||||
$dbPrefix = m_di_db_ns
|
||||
$tbPrefix = m_di_tb
|
||||
$mtPrefix = m_di_mt
|
||||
$ntPrefix = m_di_nt
|
||||
$tbNum = 2
|
||||
$rowNum = 200
|
||||
$futureTs = 300000000000
|
||||
|
||||
print =============== step1: create database and tables and insert data
|
||||
$i = 0
|
||||
$db = $dbPrefix . $i
|
||||
$mt = $mtPrefix . $i
|
||||
$nt = $ntPrefix . $i
|
||||
|
||||
sql drop database $db -x step1
|
||||
step1:
|
||||
sql create database $db precision 'ns'
|
||||
sql use $db
|
||||
sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int)
|
||||
|
||||
$i = 0
|
||||
while $i < $tbNum
|
||||
$tb = $tbPrefix . $i
|
||||
sql create table $tb using $mt tags( $i )
|
||||
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $futureTs + $x * 100 + 43
|
||||
$ns = $cc . b
|
||||
sql insert into $tb values (now + $ns , $x )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
$i = $i + 1
|
||||
endw
|
||||
|
||||
sql create table $nt (ts timestamp, tbcol int)
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $futureTs + $x * 100 + 43
|
||||
$ns = $cc . b
|
||||
sql insert into $nt values (now + $ns , $x )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
sleep 100
|
||||
|
||||
print =============== step2: select count(*) from tables
|
||||
$i = 0
|
||||
$tb = $tbPrefix . $i
|
||||
|
||||
sql select count(*) from $tb
|
||||
|
||||
if $data00 != $rowNum then
|
||||
print expect $rowNum, actual:$data00
|
||||
return -1
|
||||
endi
|
||||
|
||||
$i = 0
|
||||
$mt = $mtPrefix . $i
|
||||
sql select count(*) from $mt
|
||||
|
||||
$mtRowNum = $tbNum * $rowNum
|
||||
if $data00 != $mtRowNum then
|
||||
print expect $mtRowNum, actual:$data00
|
||||
return -1
|
||||
endi
|
||||
|
||||
$i = 0
|
||||
$nt = $ntPrefix . $i
|
||||
|
||||
sql select count(*) from $nt
|
||||
|
||||
if $data00 != $rowNum then
|
||||
print expect $rowNum, actual:$data00
|
||||
return -1
|
||||
endi
|
||||
|
||||
print =============== step3: check nano second timestamp
|
||||
$i = 0
|
||||
$mt = $mtPrefix . $i
|
||||
$tb = $tbPrefix . $i
|
||||
sql insert into $tb values (now-43b , $x )
|
||||
sql select count(*) from $tb where ts<now
|
||||
if $data00 != 1 then
|
||||
print expected 1, actual: $data00
|
||||
endi
|
||||
|
||||
|
||||
print =============== step4: check interval/sliding nano second
|
||||
$i = 0
|
||||
$mt = $mtPrefix . $i
|
||||
sql_error select count(*) from $mt interval(1000b) sliding(100b)
|
||||
sql_error select count(*) from $mt interval(10000000b) sliding(99999b)
|
||||
|
||||
sql select count(*) from $mt interval(100000000b) sliding(100000000b)
|
||||
|
||||
print =============== clear
|
||||
sql drop database $db
|
||||
sql show databases
|
||||
if $rows != 0 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
|
@ -61,4 +61,5 @@ run general/parser/binary_escapeCharacter.sim
|
|||
run general/parser/between_and.sim
|
||||
run general/parser/last_cache.sim
|
||||
run general/parser/nestquery.sim
|
||||
run general/parser/precision_ns.sim
|
||||
|
||||
|
|
|
@ -134,6 +134,7 @@ run general/parser/bug.sim
|
|||
run general/parser/tags_dynamically_specifiy.sim
|
||||
run general/parser/set_tag_vals.sim
|
||||
run general/parser/repeatAlter.sim
|
||||
run general/parser/precision_ns.sim
|
||||
##unsupport run general/parser/slimit_alter_tags.sim
|
||||
run general/stable/disk.sim
|
||||
run general/stable/dnode3.sim
|
||||
|
|
|
@ -813,8 +813,15 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
|||
value[length[i]] = 0;
|
||||
// snprintf(value, fields[i].bytes, "%s", (char *)row[i]);
|
||||
break;
|
||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||
tt = *(int64_t *)row[i] / 1000;
|
||||
case TSDB_DATA_TYPE_TIMESTAMP: {
|
||||
int32_t precision = taos_result_precision(pSql);
|
||||
if (precision == TSDB_TIME_PRECISION_MILLI) {
|
||||
tt = (*(int64_t *)row[i]) / 1000;
|
||||
} else if (precision == TSDB_TIME_PRECISION_MICRO) {
|
||||
tt = (*(int64_t *)row[i]) / 1000000;
|
||||
} else {
|
||||
tt = (*(int64_t *)row[i]) / 1000000000;
|
||||
}
|
||||
/* comment out as it make testcases like select_with_tags.sim fail.
|
||||
but in windows, this may cause the call to localtime crash if tt < 0,
|
||||
need to find a better solution.
|
||||
|
@ -829,9 +836,16 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
|||
|
||||
tp = localtime(&tt);
|
||||
strftime(timeStr, 64, "%y-%m-%d %H:%M:%S", tp);
|
||||
if (precision == TSDB_TIME_PRECISION_MILLI) {
|
||||
sprintf(value, "%s.%03d", timeStr, (int32_t)(*((int64_t *)row[i]) % 1000));
|
||||
} else if (precision == TSDB_TIME_PRECISION_MICRO) {
|
||||
sprintf(value, "%s.%06d", timeStr, (int32_t)(*((int64_t *)row[i]) % 1000000));
|
||||
} else {
|
||||
sprintf(value, "%s.%09d", timeStr, (int32_t)(*((int64_t *)row[i]) % 1000000000));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
} // end of switch
|
||||
|
|
Loading…
Reference in New Issue