[td-225]fix bugs found by regression test.
This commit is contained in:
parent
08aa04f174
commit
8ac63bb2cc
|
@ -476,22 +476,41 @@ static SResultRow *doPrepareResultRowFromKey(SQueryRuntimeEnv *pRuntimeEnv, SRes
|
||||||
return getResultRow(pResultRowInfo, pResultRowInfo->curIndex);
|
return getResultRow(pResultRowInfo, pResultRowInfo->curIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void getInitialStartTimeWindow(SQuery* pQuery, TSKEY ts, STimeWindow* w) {
|
||||||
|
if (QUERY_IS_ASC_QUERY(pQuery)) {
|
||||||
|
getAlignQueryTimeWindow(pQuery, ts, ts, pQuery->window.ekey, w);
|
||||||
|
} else {
|
||||||
|
// the start position of the first time window in the endpoint that spreads beyond the queried last timestamp
|
||||||
|
getAlignQueryTimeWindow(pQuery, ts, pQuery->window.ekey, ts, w);
|
||||||
|
|
||||||
|
int64_t key = w->skey;
|
||||||
|
while(key < ts) { // moving towards end
|
||||||
|
if (pQuery->interval.intervalUnit == 'n' || pQuery->interval.intervalUnit == 'y') {
|
||||||
|
key = taosTimeAdd(key, pQuery->interval.sliding, pQuery->interval.slidingUnit, pQuery->precision);
|
||||||
|
} else {
|
||||||
|
key += pQuery->interval.sliding;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key >= ts) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
w->skey = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// get the correct time window according to the handled timestamp
|
// get the correct time window according to the handled timestamp
|
||||||
static STimeWindow getActiveTimeWindow(SResultRowInfo * pResultRowInfo, int64_t ts, SQuery *pQuery) {
|
static STimeWindow getActiveTimeWindow(SResultRowInfo * pResultRowInfo, int64_t ts, SQuery *pQuery) {
|
||||||
STimeWindow w = {0};
|
STimeWindow w = {0};
|
||||||
|
|
||||||
if (pResultRowInfo->curIndex == -1) { // the first window, from the previous stored value
|
if (pResultRowInfo->curIndex == -1) { // the first window, from the previous stored value
|
||||||
if (pResultRowInfo->prevSKey == TSKEY_INITIAL_VAL) {
|
if (pResultRowInfo->prevSKey == TSKEY_INITIAL_VAL) {
|
||||||
if (QUERY_IS_ASC_QUERY(pQuery)) {
|
getInitialStartTimeWindow(pQuery, ts, &w);
|
||||||
getAlignQueryTimeWindow(pQuery, ts, ts, pQuery->window.ekey, &w);
|
pResultRowInfo->prevSKey = w.skey;
|
||||||
} else { // the start position of the first time window in the endpoint that spreads beyond the queried last timestamp
|
} else {
|
||||||
getAlignQueryTimeWindow(pQuery, ts, pQuery->window.ekey, ts, &w);
|
w.skey = pResultRowInfo->prevSKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
pResultRowInfo->prevSKey = w.skey;
|
|
||||||
} else {
|
|
||||||
w.skey = pResultRowInfo->prevSKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pQuery->interval.intervalUnit == 'n' || pQuery->interval.intervalUnit == 'y') {
|
if (pQuery->interval.intervalUnit == 'n' || pQuery->interval.intervalUnit == 'y') {
|
||||||
w.ekey = taosTimeAdd(w.skey, pQuery->interval.interval, pQuery->interval.intervalUnit, pQuery->precision) - 1;
|
w.ekey = taosTimeAdd(w.skey, pQuery->interval.interval, pQuery->interval.intervalUnit, pQuery->precision) - 1;
|
||||||
|
|
|
@ -469,11 +469,12 @@ if $data25 != 33 then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
sql select count(*),stddev(c1),count(c1),first(c2),last(c3) from sliding_tb0 where ts>'2000-1-1 00:00:00' and ts<'2000-1-1 00:00:01.002' and c2 >= 0 interval(30s) sliding(10s) order by ts desc limit 1000;
|
sql select count(*),stddev(c1),count(c1),first(c2),last(c3) from sliding_tb0 where ts>'2000-1-1 00:00:00' and ts<'2000-1-1 00:00:01.002' and c2 >= 0 interval(30s) sliding(10s) order by ts desc limit 1000;
|
||||||
if $row != 1 then
|
if $row != 3 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
if $data00 != @99-12-31 23:59:40.000@ then
|
if $data00 != @00-01-01 00:00:00.000@ then
|
||||||
|
print expect 00-01-01 00:00:00.000, actual: $data00
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
@ -489,7 +490,28 @@ if $data03 != 33 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
print check boundary check crash at client side
|
if $data10 != @99-12-31 23:59:50.000@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data11 != 33 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data12 != 9.521904571 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data20 != @99-12-31 23:59:40.000@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data21 != 33 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
if $data22 != 9.521904571 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
print ====================>check boundary check crash at client side
|
||||||
sql select count(*) from sliding_mt0 where ts>now and ts < now-1h;
|
sql select count(*) from sliding_mt0 where ts>now and ts < now-1h;
|
||||||
|
|
||||||
print ========================query on super table
|
print ========================query on super table
|
||||||
|
|
Loading…
Reference in New Issue