[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
|
run general/parser/set_tag_vals.sim
|
||||||
#unsupport run general/parser/repeatAlter.sim
|
#unsupport run general/parser/repeatAlter.sim
|
||||||
#unsupport run general/parser/slimit_alter_tags.sim
|
#unsupport run general/parser/slimit_alter_tags.sim
|
||||||
|
run general/parser/precision_ns.sim
|
||||||
run general/stable/disk.sim
|
run general/stable/disk.sim
|
||||||
run general/stable/dnode3.sim
|
run general/stable/dnode3.sim
|
||||||
run general/stable/metrics.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/between_and.sim
|
||||||
run general/parser/last_cache.sim
|
run general/parser/last_cache.sim
|
||||||
run general/parser/nestquery.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/tags_dynamically_specifiy.sim
|
||||||
run general/parser/set_tag_vals.sim
|
run general/parser/set_tag_vals.sim
|
||||||
run general/parser/repeatAlter.sim
|
run general/parser/repeatAlter.sim
|
||||||
|
run general/parser/precision_ns.sim
|
||||||
##unsupport run general/parser/slimit_alter_tags.sim
|
##unsupport run general/parser/slimit_alter_tags.sim
|
||||||
run general/stable/disk.sim
|
run general/stable/disk.sim
|
||||||
run general/stable/dnode3.sim
|
run general/stable/dnode3.sim
|
||||||
|
|
|
@ -813,8 +813,15 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
||||||
value[length[i]] = 0;
|
value[length[i]] = 0;
|
||||||
// snprintf(value, fields[i].bytes, "%s", (char *)row[i]);
|
// snprintf(value, fields[i].bytes, "%s", (char *)row[i]);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
case TSDB_DATA_TYPE_TIMESTAMP: {
|
||||||
tt = *(int64_t *)row[i] / 1000;
|
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.
|
/* 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,
|
but in windows, this may cause the call to localtime crash if tt < 0,
|
||||||
need to find a better solution.
|
need to find a better solution.
|
||||||
|
@ -829,9 +836,16 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
|
||||||
|
|
||||||
tp = localtime(&tt);
|
tp = localtime(&tt);
|
||||||
strftime(timeStr, 64, "%y-%m-%d %H:%M:%S", tp);
|
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));
|
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;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
} // end of switch
|
} // end of switch
|
||||||
|
|
Loading…
Reference in New Issue