Merge pull request #24969 from taosdata/fix/ly_count
optimize plan and add ci
This commit is contained in:
commit
d2855bfd68
|
@ -4009,6 +4009,26 @@ static int32_t translateEventWindow(STranslateContext* pCxt, SSelectStmt* pSelec
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t translateCountWindow(STranslateContext* pCxt, SSelectStmt* pSelect) {
|
static int32_t translateCountWindow(STranslateContext* pCxt, SSelectStmt* pSelect) {
|
||||||
|
SCountWindowNode* pCountWin = (SCountWindowNode*)pSelect->pWindow;
|
||||||
|
if (pCountWin->windowCount <= 1) {
|
||||||
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
||||||
|
"Size of Count window must exceed 1.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCountWin->windowSliding <= 0) {
|
||||||
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
||||||
|
"Size of Count window must exceed 0.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCountWin->windowSliding > pCountWin->windowCount) {
|
||||||
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
||||||
|
"sliding value no larger than the count value.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCountWin->windowCount > INT32_MAX) {
|
||||||
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
||||||
|
"Size of Count window must less than 2147483647(INT32_MAX).");
|
||||||
|
}
|
||||||
if (QUERY_NODE_TEMP_TABLE == nodeType(pSelect->pFromTable) &&
|
if (QUERY_NODE_TEMP_TABLE == nodeType(pSelect->pFromTable) &&
|
||||||
!isGlobalTimeLineQuery(((STempTableNode*)pSelect->pFromTable)->pSubquery)) {
|
!isGlobalTimeLineQuery(((STempTableNode*)pSelect->pFromTable)->pSubquery)) {
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TIMELINE_QUERY,
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TIMELINE_QUERY,
|
||||||
|
@ -7828,29 +7848,7 @@ static int32_t checkStreamQuery(STranslateContext* pCxt, SCreateStreamStmt* pStm
|
||||||
if (pStmt->pOptions->ignoreExpired != 1) {
|
if (pStmt->pOptions->ignoreExpired != 1) {
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
||||||
"Ignore expired data of Count window must be 1.");
|
"Ignore expired data of Count window must be 1.");
|
||||||
}
|
|
||||||
|
|
||||||
SCountWindowNode* pCountWin = (SCountWindowNode*)pSelect->pWindow;
|
|
||||||
if (pCountWin->windowCount <= 1) {
|
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
|
||||||
"Size of Count window must exceed 1.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pCountWin->windowSliding <= 0) {
|
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
|
||||||
"Size of Count window must exceed 0.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pCountWin->windowSliding > pCountWin->windowCount) {
|
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
|
||||||
"sliding value no larger than the count value.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pCountWin->windowCount > INT32_MAX) {
|
|
||||||
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY,
|
|
||||||
"Size of Count window must less than 2147483647(INT32_MAX).");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -274,7 +274,7 @@ static bool stbSplNeedSplitWindow(bool streamQuery, SLogicNode* pNode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WINDOW_TYPE_STATE == pWindow->winType) {
|
if (WINDOW_TYPE_STATE == pWindow->winType || WINDOW_TYPE_COUNT == pWindow->winType) {
|
||||||
if (!streamQuery) {
|
if (!streamQuery) {
|
||||||
return stbSplHasMultiTbScan(streamQuery, pNode);
|
return stbSplHasMultiTbScan(streamQuery, pNode);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -79,5 +79,27 @@ if $data22 != 4 then
|
||||||
goto loop3
|
goto loop3
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
|
||||||
|
print step2
|
||||||
|
print =============== create database
|
||||||
|
sql create database test1 vgroups 1;
|
||||||
|
sql use test1;
|
||||||
|
|
||||||
|
sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int);
|
||||||
|
sql create table t1 using st tags(1,1,1);
|
||||||
|
sql create table t2 using st tags(2,2,2);
|
||||||
|
|
||||||
|
#2~INT32_MAX
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(-1);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(0);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(1);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(2147483648);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(10, 0);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(10, -1);
|
||||||
|
sql_error select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(10, 11);
|
||||||
|
|
||||||
|
sql select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(2);
|
||||||
|
sql select _wstart as s, count(*) c1, sum(b), max(c) from t1 count_window(2147483647);
|
||||||
|
|
||||||
print query_count0 end
|
print query_count0 end
|
||||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||||
|
|
Loading…
Reference in New Issue