Merge pull request #19705 from taosdata/fix/TS-2499
fix:process data with incorrect timestamp
This commit is contained in:
commit
12cea405d1
|
@ -2477,7 +2477,19 @@ static void doStreamIntervalAggImpl(SOperatorInfo* pOperatorInfo, SSDataBlock* p
|
|||
pInfo->delKey = key;
|
||||
}
|
||||
int32_t prevEndPos = (forwardRows - 1) * step + startPos;
|
||||
ASSERT(pSDataBlock->info.window.skey > 0 && pSDataBlock->info.window.ekey > 0);
|
||||
if (pSDataBlock->info.window.skey <= 0 || pSDataBlock->info.window.ekey <= 0) {
|
||||
qError("table uid %" PRIu64 " data block timestamp range may not be calculated! minKey %" PRId64
|
||||
",maxKey %" PRId64,
|
||||
pSDataBlock->info.id.uid, pSDataBlock->info.window.skey, pSDataBlock->info.window.ekey);
|
||||
blockDataUpdateTsWindow(pSDataBlock, 0);
|
||||
|
||||
// timestamp of the data is incorrect
|
||||
if (pSDataBlock->info.window.skey <= 0 || pSDataBlock->info.window.ekey <= 0) {
|
||||
qError("table uid %" PRIu64 " data block timestamp is out of range! minKey %" PRId64 ",maxKey %" PRId64,
|
||||
pSDataBlock->info.id.uid, pSDataBlock->info.window.skey, pSDataBlock->info.window.ekey);
|
||||
}
|
||||
}
|
||||
|
||||
if (IS_FINAL_OP(pInfo)) {
|
||||
startPos = getNextQualifiedFinalWindow(&pInfo->interval, &nextWin, &pSDataBlock->info, tsCols, prevEndPos);
|
||||
} else {
|
||||
|
|
|
@ -834,4 +834,57 @@ endi
|
|||
|
||||
print ====== test _wstart end
|
||||
|
||||
print insert into ts1 values(-1648791211000,1,2,3)
|
||||
|
||||
sql create database test7 vgroups 1;
|
||||
sql use test7;
|
||||
sql create stable st(ts timestamp, a int, b int , c int) tags(ta int,tb int,tc int);
|
||||
sql create table ts1 using st tags(1,1,1);
|
||||
sql create stream streams7 trigger at_once into streamt7 as select _wstart, count(*) from ts1 interval(10s) ;
|
||||
|
||||
sql insert into ts1 values(1648791211000,1,2,3);
|
||||
sql_error insert into ts1 values(-1648791211000,1,2,3);
|
||||
|
||||
loop18:
|
||||
|
||||
sleep 200
|
||||
sql select * from streamt7;
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $rows != 1 then
|
||||
print =====rows=$rows
|
||||
goto loop18
|
||||
endi
|
||||
|
||||
if $data01 != 1 then
|
||||
print =====data01=$data01
|
||||
goto loop18
|
||||
endi
|
||||
|
||||
sql_error insert into ts1 values(-1648791211001,1,2,3) (1648791211001,1,2,3);
|
||||
|
||||
sql select _wstart, count(*) from ts1 interval(10s) ;
|
||||
|
||||
print $data00 $data01
|
||||
print $data10 $data11
|
||||
|
||||
loop19:
|
||||
|
||||
sleep 200
|
||||
sql select * from streamt7;
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $rows != 1 then
|
||||
print =====rows=$rows
|
||||
goto loop19
|
||||
endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||
|
|
|
@ -29,69 +29,119 @@ sql insert into t1 values(1648791223001,2,2,3,1.1);
|
|||
sql insert into t1 values(1648791223002,2,2,3,1.1);
|
||||
sql insert into t1 values(1648791223003,2,2,3,1.1);
|
||||
sql insert into t1 values(1648791223001,2,2,3,1.1);
|
||||
|
||||
print step 0
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop0:
|
||||
sleep 300
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from streamt;
|
||||
|
||||
if $rows != 1 then
|
||||
print ======$rows
|
||||
return -1
|
||||
goto loop0
|
||||
endi
|
||||
|
||||
if $data01 != 1 then
|
||||
print ======$data01
|
||||
return -1
|
||||
goto loop0
|
||||
endi
|
||||
|
||||
sql insert into t1 values(1648791233001,2,2,3,1.1);
|
||||
|
||||
print step 1
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop1:
|
||||
sleep 300
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from streamt;
|
||||
if $rows != 2 then
|
||||
print ======$rows
|
||||
return -1
|
||||
goto loop1
|
||||
endi
|
||||
if $data01 != 1 then
|
||||
print ======$data01
|
||||
return -1
|
||||
goto loop1
|
||||
endi
|
||||
if $data11 != 3 then
|
||||
print ======$data11
|
||||
return -1
|
||||
goto loop1
|
||||
endi
|
||||
|
||||
sql insert into t1 values(1648791223004,2,2,3,1.1);
|
||||
sql insert into t1 values(1648791223004,2,2,3,1.1);
|
||||
sql insert into t1 values(1648791223005,2,2,3,1.1);
|
||||
|
||||
print step 2
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop2:
|
||||
sleep 300
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from streamt;
|
||||
if $rows != 2 then
|
||||
print ======$rows
|
||||
return -1
|
||||
goto loop2
|
||||
endi
|
||||
|
||||
if $data01 != 1 then
|
||||
print ======$data01
|
||||
return -1
|
||||
goto loop2
|
||||
endi
|
||||
if $data11 != 5 then
|
||||
print ======$data11
|
||||
return -1
|
||||
goto loop2
|
||||
endi
|
||||
|
||||
|
||||
sql insert into t1 values(1648791233002,3,2,3,2.1);
|
||||
sql insert into t1 values(1648791213002,4,2,3,3.1)
|
||||
sql insert into t1 values(1648791213002,4,2,3,4.1);
|
||||
|
||||
print step 3
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop3:
|
||||
sleep 300
|
||||
sql select * from streamt;
|
||||
if $rows != 2 then
|
||||
print ======$rows
|
||||
return -1
|
||||
endi
|
||||
if $data01 != 2 then
|
||||
print ======$data01
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 5 then
|
||||
print ======$data11
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select * from streamt;
|
||||
if $rows != 2 then
|
||||
print ======$rows
|
||||
goto loop3
|
||||
endi
|
||||
if $data01 != 2 then
|
||||
print ======$data01
|
||||
goto loop3
|
||||
endi
|
||||
if $data11 != 5 then
|
||||
print ======$data11
|
||||
goto loop3
|
||||
endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue