Merge pull request #7414 from taosdata/hotfix/TD-6135
[TD-6135]fix interp crash issue
This commit is contained in:
commit
9de3030c74
|
@ -5382,6 +5382,7 @@ int32_t validateFillNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSqlNo
|
|||
const char* msg3 = "top/bottom not support fill";
|
||||
const char* msg4 = "illegal value or data overflow";
|
||||
const char* msg5 = "fill only available for interval query";
|
||||
const char* msg6 = "not supported function now";
|
||||
|
||||
if ((!isTimeWindowQuery(pQueryInfo)) && (!tscIsPointInterpQuery(pQueryInfo))) {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg5);
|
||||
|
@ -5420,6 +5421,9 @@ int32_t validateFillNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSqlNo
|
|||
}
|
||||
} else if (strncasecmp(pItem->pVar.pz, "prev", 4) == 0 && pItem->pVar.nLen == 4) {
|
||||
pQueryInfo->fillType = TSDB_FILL_PREV;
|
||||
if (tscIsPointInterpQuery(pQueryInfo) && pQueryInfo->order.order == TSDB_ORDER_DESC) {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
|
||||
}
|
||||
} else if (strncasecmp(pItem->pVar.pz, "next", 4) == 0 && pItem->pVar.nLen == 4) {
|
||||
pQueryInfo->fillType = TSDB_FILL_NEXT;
|
||||
} else if (strncasecmp(pItem->pVar.pz, "linear", 6) == 0 && pItem->pVar.nLen == 6) {
|
||||
|
|
|
@ -26,18 +26,70 @@ class TDTestCase:
|
|||
|
||||
self.rowNum = 10
|
||||
self.ts = 1537146000000
|
||||
|
||||
|
||||
def run(self):
|
||||
tdSql.prepare()
|
||||
tdSql.execute("create table t(ts timestamp, k int)")
|
||||
tdSql.execute("insert into t values('2021-1-1 1:1:1', 12);")
|
||||
|
||||
tdSql.query("select interp(*) from t where ts='2021-1-1 1:1:1'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 1, 12)
|
||||
tdSql.execute("create table ap1 (ts timestamp, pav float)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.119', 2.90799)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.317', 3.07399)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.517', 0.58117)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.717', 0.16150)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:54.918', 1.47885)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:56.569', 1.76472)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.381', 2.13722)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.574', 4.10256)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.776', 3.55345)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:57.976', 1.46624)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.187', 0.17943)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.372', 2.04101)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.573', 3.20924)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.768', 1.71807)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:58.964', 4.60900)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.155', 4.33907)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.359', 0.76940)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.553', 0.06458)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.742', 4.59857)")
|
||||
tdSql.execute("insert into ap1 values ('2021-07-25 02:19:59.938', 1.55081)")
|
||||
|
||||
tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (PREV)")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (NEXT)")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (LINEAR)")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' INTERVAL(1000a) FILL (LINEAR)")
|
||||
tdSql.checkRows(6)
|
||||
tdSql.query("select interp(pav) from ap1 where ts>= '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' INTERVAL(1000a) FILL (NEXT)")
|
||||
tdSql.checkRows(6)
|
||||
tdSql.checkData(0,1,2.90799)
|
||||
tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts <= '2021-07-25 02:20:00' INTERVAL(1000a) FILL (PREV)")
|
||||
tdSql.checkRows(7)
|
||||
tdSql.checkData(1,1,1.47885)
|
||||
tdSql.query("select interp(pav) from ap1 where ts>= '2021-07-25 02:19:54' and ts <= '2021-07-25 02:20:00' INTERVAL(1000a) FILL (LINEAR)")
|
||||
tdSql.checkRows(7)
|
||||
|
||||
# check desc order
|
||||
tdSql.error("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (PREV) order by ts desc")
|
||||
tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (NEXT) order by ts desc")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select interp(pav) from ap1 where ts = '2021-07-25 02:19:54' FILL (LINEAR) order by ts desc")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' INTERVAL(1000a) FILL (LINEAR) order by ts desc")
|
||||
tdSql.checkRows(6)
|
||||
tdSql.query("select interp(pav) from ap1 where ts>= '2021-07-25 02:19:54' and ts<'2021-07-25 02:20:00' INTERVAL(1000a) FILL (NEXT) order by ts desc")
|
||||
tdSql.checkRows(6)
|
||||
tdSql.checkData(0,1,4.60900)
|
||||
tdSql.error("select interp(pav) from ap1 where ts> '2021-07-25 02:19:54' and ts <= '2021-07-25 02:20:00' INTERVAL(1000a) FILL (PREV) order by ts desc")
|
||||
tdSql.query("select interp(pav) from ap1 where ts>= '2021-07-25 02:19:54' and ts <= '2021-07-25 02:20:00' INTERVAL(1000a) FILL (LINEAR) order by ts desc")
|
||||
tdSql.checkRows(7)
|
||||
|
||||
# check exception
|
||||
tdSql.error("select interp(*) from ap1")
|
||||
tdSql.error("select interp(*) from ap1 FILL(NEXT)")
|
||||
tdSql.error("select interp(*) from ap1 ts >= '2021-07-25 02:19:54' FILL(NEXT)")
|
||||
tdSql.error("select interp(*) from ap1 ts <= '2021-07-25 02:19:54' FILL(NEXT)")
|
||||
tdSql.error("select interp(*) from ap1 where ts >'2021-07-25 02:19:59.938' and ts < now interval(1s) fill(next)")
|
||||
|
||||
tdSql.error("select interp(*) from t where ts >'2021-1-1 1:1:1' and ts < now interval(1s) fill(next)")
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
|
Loading…
Reference in New Issue