diff --git a/README-CN.md b/README-CN.md index a5d239a532..fdfac4e448 100644 --- a/README-CN.md +++ b/README-CN.md @@ -104,6 +104,16 @@ sudo yum install -y zlib-devel zlib-static xz-devel snappy-devel jansson jansson sudo yum config-manager --set-enabled Powertools ``` +#### CentOS + devtoolset + +除上述编译依赖包,需要执行以下命令: + +``` +sudo yum install centos-release-scl +sudo yum install devtoolset-9 devtoolset-9-libatomic-devel +scl enable devtoolset-9 -- bash +``` + ### macOS ``` diff --git a/README.md b/README.md index 885f91cb4e..3e256cd69a 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,16 @@ If the PowerTools installation fails, you can try to use: sudo yum config-manager --set-enabled powertools ``` +#### For CentOS + devtoolset + +Besides above dependencies, please run following commands: + +``` +sudo yum install centos-release-scl +sudo yum install devtoolset-9 devtoolset-9-libatomic-devel +scl enable devtoolset-9 -- bash +``` + ### macOS ``` diff --git a/docs/en/12-taos-sql/02-database.md b/docs/en/12-taos-sql/02-database.md index 280d72697c..5e8c9aaa92 100644 --- a/docs/en/12-taos-sql/02-database.md +++ b/docs/en/12-taos-sql/02-database.md @@ -126,6 +126,22 @@ alter_database_option: { } ``` +### ALTER CACHESIZE + +The command of changing database configuration parameters is easy to use, but it's hard to determine whether a parameter is proper or not. In this section we will describe how to determine whether cachesize is big enough. + +1. How to check cachesize? + +You can use `select * from information_schema.ins_databases;` to get the value of cachesize. + +2. How to check cacheload? + +You can use `show .vgroups;` to check the value of cacheload. + +3. Determine whether cachesize is big engough + +If the value of `cacheload` is very close to the value of `cachesize`, then it's very probably that `cachesize` is too small. If the value of `cacheload` is much smaller than the value of `cachesize`, then `cachesize` is big enough. You can use this simple principle to determine. Depending on how much memory is available in your system, you can choose to double `cachesize` or incrase it by even 5 or more times. + :::note Other parameters cannot be modified after the database has been created. diff --git a/docs/zh/12-taos-sql/02-database.md b/docs/zh/12-taos-sql/02-database.md index b0a84af6dc..d9ef3b51aa 100644 --- a/docs/zh/12-taos-sql/02-database.md +++ b/docs/zh/12-taos-sql/02-database.md @@ -126,6 +126,22 @@ alter_database_option: { } ``` +### 修改 CACHESIZE + +修改数据库参数的命令使用简单,难的是如何确定是否需要修改以及如何修改。本小节描述如何判断数据库的 cachesize 是否够用。 + +1. 如何查看 cachesize? + +通过 select * from information_schema.ins_databases; 可以查看这些 cachesize 的具体值。 + +2. 如何查看 cacheload? + +通过 show .vgroups; 可以查看 cacheload + +3. 判断 cachesize 是否够用 + +如果 cacheload 非常接近 cachesize,则 cachesize 可能过小。 如果 cacheload 明显小于 cachesize 则 cachesize 是够用的。可以根据这个原则判断是否需要修改 cachesize 。具体修改值可以根据系统可用内存情况来决定是加倍或者是提高几倍。 + :::note 其它参数在 3.0.0.0 中暂不支持修改 diff --git a/source/libs/executor/src/eventwindowoperator.c b/source/libs/executor/src/eventwindowoperator.c index 0e3c67c5d7..49e2d5bc4a 100644 --- a/source/libs/executor/src/eventwindowoperator.c +++ b/source/libs/executor/src/eventwindowoperator.c @@ -26,23 +26,19 @@ typedef struct SEventWindowOperatorInfo { SOptrBasicInfo binfo; SAggSupporter aggSup; SExprSupp scalarSup; - SGroupResInfo groupResInfo; SWindowRowsSup winSup; - bool hasKey; - SStateKeys stateKey; int32_t tsSlotId; // primary timestamp column slot id STimeWindowAggSupp twAggSup; - - SFilterInfo* pStartCondInfo; - SFilterInfo* pEndCondInfo; - bool inWindow; - SResultRow* pRow; + uint64_t groupId; // current group id, used to identify the data block from different groups + SFilterInfo* pStartCondInfo; + SFilterInfo* pEndCondInfo; + bool inWindow; + SResultRow* pRow; } SEventWindowOperatorInfo; static SSDataBlock* eventWindowAggregate(SOperatorInfo* pOperator); static void destroyEWindowOperatorInfo(void* param); -static void eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInfo, SSDataBlock* pBlock); -static SSDataBlock* doEventWindowAgg(SOperatorInfo* pOperator); +static int32_t eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInfo, SSDataBlock* pBlock); // todo : move to util static void doKeepNewWindowStartInfo(SWindowRowsSup* pRowSup, const int64_t* tsList, int32_t rowIndex, @@ -176,7 +172,6 @@ void destroyEWindowOperatorInfo(void* param) { colDataDestroy(&pInfo->twAggSup.timeWindowData); cleanupAggSup(&pInfo->aggSup); - cleanupGroupResInfo(&pInfo->groupResInfo); taosMemoryFreeClear(param); } @@ -254,36 +249,45 @@ static void doEventWindowAggImpl(SEventWindowOperatorInfo* pInfo, SExprSupp* pSu pBlock->info.rows, numOfOutput); } -void eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInfo, SSDataBlock* pBlock) { - SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo; - SExprSupp* pSup = &pOperator->exprSupp; - - SSDataBlock* pRes = pInfo->binfo.pRes; - int64_t gid = pBlock->info.id.groupId; - +int32_t eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInfo, SSDataBlock* pBlock) { + SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo; + SExprSupp* pSup = &pOperator->exprSupp; + SSDataBlock* pRes = pInfo->binfo.pRes; + int64_t gid = pBlock->info.id.groupId; SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, pInfo->tsSlotId); TSKEY* tsList = (TSKEY*)pColInfoData->pData; - + SWindowRowsSup* pRowSup = &pInfo->winSup; SColumnInfoData *ps = NULL, *pe = NULL; + int32_t rowIndex = 0; - SWindowRowsSup* pRowSup = &pInfo->winSup; pRowSup->numOfRows = 0; + if (pInfo->groupId == 0) { + pInfo->groupId = gid; + } else if (pInfo->groupId != gid) { + // this is a new group, reset the info + pInfo->inWindow = false; + } SFilterColumnParam param1 = {.numOfCols = taosArrayGetSize(pBlock->pDataBlock), .pDataBlock = pBlock->pDataBlock}; - int32_t code = filterSetDataFromSlotId(pInfo->pStartCondInfo, ¶m1); + + int32_t code = filterSetDataFromSlotId(pInfo->pStartCondInfo, ¶m1); + if (code != TSDB_CODE_SUCCESS) { + return code; + } int32_t status1 = 0; - bool keep1 = filterExecute(pInfo->pStartCondInfo, pBlock, &ps, NULL, param1.numOfCols, &status1); + filterExecute(pInfo->pStartCondInfo, pBlock, &ps, NULL, param1.numOfCols, &status1); SFilterColumnParam param2 = {.numOfCols = taosArrayGetSize(pBlock->pDataBlock), .pDataBlock = pBlock->pDataBlock}; code = filterSetDataFromSlotId(pInfo->pEndCondInfo, ¶m2); + if (code != TSDB_CODE_SUCCESS) { + return code; + } int32_t status2 = 0; - bool keep2 = filterExecute(pInfo->pEndCondInfo, pBlock, &pe, NULL, param2.numOfCols, &status2); + filterExecute(pInfo->pEndCondInfo, pBlock, &pe, NULL, param2.numOfCols, &status2); - int32_t rowIndex = 0; int32_t startIndex = pInfo->inWindow ? 0 : -1; - while (rowIndex < pBlock->info.rows) { if (pInfo->inWindow) { // let's find the first end value for (rowIndex = startIndex; rowIndex < pBlock->info.rows; ++rowIndex) { @@ -294,7 +298,6 @@ void eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInf if (rowIndex < pBlock->info.rows) { doEventWindowAggImpl(pInfo, pSup, startIndex, rowIndex, pBlock, tsList, pTaskInfo); - doUpdateNumOfRows(pSup->pCtx, pInfo->pRow, pSup->numOfExprs, pSup->rowEntryInfoOffset); // check buffer size @@ -324,9 +327,9 @@ void eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInf } if (pInfo->inWindow) { - continue; + continue; // try to find the end position } else { - break; + break; // no valid start position, quit } } } @@ -335,4 +338,6 @@ void eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* pInf taosMemoryFree(ps); colDataDestroy(pe); taosMemoryFree(pe); + + return TSDB_CODE_SUCCESS; } diff --git a/tests/script/tsim/stream/fillIntervalDelete0.sim b/tests/script/tsim/stream/fillIntervalDelete0.sim index 77d09d5ae8..1c0647d57b 100644 --- a/tests/script/tsim/stream/fillIntervalDelete0.sim +++ b/tests/script/tsim/stream/fillIntervalDelete0.sim @@ -163,7 +163,7 @@ endi if $data01 != 4 then print =====data01=$data01 - return -1 + goto loop3 endi @@ -239,7 +239,7 @@ endi if $data01 != 6 then print =====data01=$data01 - return -1 + goto loop5 endi diff --git a/tests/script/tsim/stream/fillIntervalDelete1.sim b/tests/script/tsim/stream/fillIntervalDelete1.sim index ca347f120a..0206b88fdc 100644 --- a/tests/script/tsim/stream/fillIntervalDelete1.sim +++ b/tests/script/tsim/stream/fillIntervalDelete1.sim @@ -325,19 +325,19 @@ if $rows != 12 then endi if $data21 != 3 then print ====streamt10=data21=$data21 - return -1 + goto loop6 endi if $data31 != 4 then print ====streamt10=data31=$data31 - return -1 + goto loop6 endi if $data71 != 8 then print ====streamt10=data71=$data71 - return -1 + goto loop6 endi if $data91 != 10 then print ====streamt10=data91=$data91 - return -1 + goto loop6 endi diff --git a/tests/script/tsim/stream/fillIntervalLinear.sim b/tests/script/tsim/stream/fillIntervalLinear.sim index 4d0f101b6c..b9f301d81b 100644 --- a/tests/script/tsim/stream/fillIntervalLinear.sim +++ b/tests/script/tsim/stream/fillIntervalLinear.sim @@ -9,6 +9,8 @@ system sh/exec.sh -n dnode1 -s start sleep 200 sql connect +print step 1 start + sql drop stream if exists streams1; sql drop database if exists test1; sql create database test1 vgroups 1; @@ -38,161 +40,165 @@ endi if $data01 != 2.000000000 then print =====data01=$data01 - return -1 + goto loop1 endi if $data02 != 1.000000000 then print =====data02=$data02 - return -1 + goto loop1 endi if $data03 != ccc then print =====data03=$data03 - return -1 + goto loop1 endi if $data04 != 1 then print =====data04=$data04 - return -1 + goto loop1 endi if $data11 != 4.000000000 then print =====data11=$data11 - return -1 + goto loop1 endi + if $data12 != 2.000000000 then print =====data12=$data12 - return -1 + goto loop1 endi + if $data13 != NULL then print =====data13=$data13 - return -1 + goto loop1 endi if $data21 != 6.000000000 then print =====data21=$data21 - return -1 + goto loop1 endi if $data22 != 3.000000000 then print =====data22=$data22 - return -1 + goto loop1 endi if $data23 != NULL then print =====data23=$data23 - return -1 + goto loop1 endi if $data31 != 8.000000000 then print =====data31=$data31 - return -1 + goto loop1 endi if $data32 != 4.000000000 then print =====data32=$data32 - return -1 + goto loop1 endi if $data33 != aaa then print =====data33=$data33 - return -1 + goto loop1 endi if $data41 != 8.666666667 then print =====data41=$data41 - return -1 + goto loop1 endi if $data42 != 4.333333333 then print =====data42=$data42 - return -1 + goto loop1 endi if $data43 != NULL then print =====data43=$data43 - return -1 + goto loop1 endi if $data51 != 9.333333333 then print =====data01=$data01 - return -1 + goto loop1 endi if $data52 != 4.666666667 then print =====data52=$data52 - return -1 + goto loop1 endi if $data53 != NULL then print =====data53=$data53 - return -1 + goto loop1 endi if $data61 != 10.000000000 then print =====data61=$data61 - return -1 + goto loop1 endi if $data62 != 5.000000000 then print =====data62=$data62 - return -1 + goto loop1 endi if $data71 != 8.000000000 then print =====data71=$data71 - return -1 + goto loop1 endi if $data72 != 4.000000000 then print =====data72=$data72 - return -1 + goto loop1 endi if $data81 != 6.000000000 then print =====data81=$data81 - return -1 + goto loop1 endi if $data82 != 3.000000000 then print =====data82=$data82 - return -1 + goto loop1 endi if $data91 != 4.000000000 then print =====data91=$data91 - return -1 + goto loop1 endi if $data92 != 2.000000000 then print =====data92=$data92 - return -1 + goto loop1 endi if $data[10][1] != 4.666666667 then print =====data[10][1]=$data[10][1] - return -1 + goto loop1 endi if $data[10][2] != 2.333333333 then print =====data[10][2]=$data[10][2] - return -1 + goto loop1 endi if $data[11][1] != 5.333333333 then print =====data[11][1]=$data[11][1] - return -1 + goto loop1 endi if $data[11][2] != 2.666666667 then print =====data[11][2]=$data[11][2] - return -1 + goto loop1 endi if $data[12][1] != 6.000000000 then print =====data[12][1]=$data[12][1] - return -1 + goto loop1 endi if $data[12][2] != 3.000000000 then print =====data[12][2]=$data[12][2] - return -1 + goto loop1 endi +print step 1 end +print step 2 start sql drop stream if exists streams2; sql drop database if exists test2; @@ -224,161 +230,163 @@ endi if $data01 != 2.000000000 then print =====data01=$data01 - return -1 + goto loop2 endi if $data02 != 1.000000000 then print =====data02=$data02 - return -1 + goto loop2 endi if $data03 != ccc then print =====data03=$data03 - return -1 + goto loop2 endi if $data04 != 1 then print =====data04=$data04 - return -1 + goto loop2 endi if $data11 != 4.000000000 then print =====data11=$data11 - return -1 + goto loop2 endi if $data12 != 2.000000000 then print =====data12=$data12 - return -1 + goto loop2 endi if $data13 != NULL then print =====data13=$data13 - return -1 + goto loop2 endi if $data21 != 6.000000000 then print =====data21=$data21 - return -1 + goto loop2 endi if $data22 != 3.000000000 then print =====data22=$data22 - return -1 + goto loop2 endi if $data23 != NULL then print =====data23=$data23 - return -1 + goto loop2 endi if $data31 != 8.000000000 then print =====data31=$data31 - return -1 + goto loop2 endi if $data32 != 4.000000000 then print =====data32=$data32 - return -1 + goto loop2 endi if $data33 != aaa then print =====data33=$data33 - return -1 + goto loop2 endi if $data41 != 8.666666667 then print =====data41=$data41 - return -1 + goto loop2 endi if $data42 != 4.333333333 then print =====data42=$data42 - return -1 + goto loop2 endi if $data43 != NULL then print =====data43=$data43 - return -1 + goto loop2 endi if $data51 != 9.333333333 then print =====data01=$data01 - return -1 + goto loop2 endi if $data52 != 4.666666667 then print =====data52=$data52 - return -1 + goto loop2 endi if $data53 != NULL then print =====data53=$data53 - return -1 + goto loop2 endi if $data61 != 10.000000000 then print =====data61=$data61 - return -1 + goto loop2 endi if $data62 != 5.000000000 then print =====data62=$data62 - return -1 + goto loop2 endi if $data71 != 8.000000000 then print =====data71=$data71 - return -1 + goto loop2 endi if $data72 != 4.000000000 then print =====data72=$data72 - return -1 + goto loop2 endi if $data81 != 6.000000000 then print =====data81=$data81 - return -1 + goto loop2 endi if $data82 != 3.000000000 then print =====data82=$data82 - return -1 + goto loop2 endi if $data91 != 4.000000000 then print =====data91=$data91 - return -1 + goto loop2 endi if $data92 != 2.000000000 then print =====data92=$data92 - return -1 + goto loop2 endi if $data[10][1] != 4.666666667 then print =====data[10][1]=$data[10][1] - return -1 + goto loop2 endi if $data[10][2] != 2.333333333 then print =====data[10][2]=$data[10][2] - return -1 + goto loop2 endi if $data[11][1] != 5.333333333 then print =====data[11][1]=$data[11][1] - return -1 + goto loop2 endi if $data[11][2] != 2.666666667 then print =====data[11][2]=$data[11][2] - return -1 + goto loop2 endi if $data[12][1] != 6.000000000 then print =====data[12][1]=$data[12][1] - return -1 + goto loop2 endi if $data[12][2] != 3.000000000 then print =====data[12][2]=$data[12][2] - return -1 + goto loop2 endi +print step 2 end +print step 3 start sql drop stream if exists streams3; sql drop database if exists test3; @@ -412,98 +420,98 @@ endi if $data01 != 3 then print =====data01=$data01 - return -1 + goto loop3 endi if $data02 != 6.000000000 then print =====data02=$data02 - return -1 + goto loop3 endi if $data03 != ccc then print =====data03=$data03 - return -1 + goto loop3 endi if $data11 != 3 then print =====data11=$data11 - return -1 + goto loop3 endi if $data12 != 7.000000000 then print =====data12=$data12 - return -1 + goto loop3 endi if $data13 != NULL then print =====data13=$data13 - return -1 + goto loop3 endi if $data21 != 4 then print =====data21=$data21 - return -1 + goto loop3 endi if $data22 != 8.000000000 then print =====data22=$data22 - return -1 + goto loop3 endi if $data23 != ddd then print =====data23=$data23 - return -1 + goto loop3 endi if $data31 != 2 then print =====data31=$data31 - return -1 + goto loop3 endi if $data32 != 5.000000000 then print =====data32=$data32 - return -1 + goto loop3 endi if $data33 != NULL then print =====data33=$data33 - return -1 + goto loop3 endi if $data41 != 1 then print =====data41=$data41 - return -1 + goto loop3 endi if $data42 != 2.000000000 then print =====data42=$data42 - return -1 + goto loop3 endi if $data43 != aaa then print =====data43=$data43 - return -1 + goto loop3 endi if $data51 != 1 then print =====data51=$data51 - return -1 + goto loop3 endi if $data52 != 3.000000000 then print =====data52=$data52 - return -1 + goto loop3 endi if $data53 != NULL then print =====data53=$data53 - return -1 + goto loop3 endi if $data61 != 2 then print =====data61=$data61 - return -1 + goto loop3 endi if $data62 != 4.000000000 then print =====data62=$data62 - return -1 + goto loop3 endi if $data63 != bbb then print =====data63=$data63 - return -1 + goto loop3 endi @@ -534,42 +542,42 @@ endi if $data01 != 6 then print =====data01=$data01 - return -1 + goto loop4 endi if $data02 != 12.000000000 then print =====data02=$data02 - return -1 + goto loop4 endi if $data03 != fff then print =====data03=$data03 - return -1 + goto loop4 endi if $data11 != 6 then print =====data11=$data11 - return -1 + goto loop4 endi if $data12 != 13.000000000 then print =====data12=$data12 - return -1 + goto loop4 endi if $data13 != NULL then print =====data13=$data13 - return -1 + goto loop4 endi if $data21 != 7 then print =====data21=$data21 - return -1 + goto loop4 endi if $data22 != 14.000000000 then print =====data22=$data22 - return -1 + goto loop4 endi if $data23 != ggg then print =====data23=$data23 - return -1 + goto loop4 endi @@ -626,34 +634,11 @@ if $data[12][3] != hhh then return -1 endi -if $data[13][1] != 8 then - print =====data[13][1]=$data[13][1] - return -1 -endi -if $data[13][2] != 17.000000000 then - print =====data[13][2]=$data[13][2] - return -1 -endi -if $data[13][3] != NULL then - print =====data[13][3]=$data[13][3] - return -1 -endi - -if $data[14][1] != 9 then - print =====data[14][1]=$data[14][1] - return -1 -endi -if $data[14][2] != 18.000000000 then - print =====data[14][2]=$data[14][2] - return -1 -endi -if $data[14][3] != iii then - print =====data[14][3]=$data[14][3] - return -1 -endi +print step 3 end + diff --git a/tests/script/tsim/stream/fillIntervalPartitionBy.sim b/tests/script/tsim/stream/fillIntervalPartitionBy.sim index 8c06ca8bbd..168452fdc8 100644 --- a/tests/script/tsim/stream/fillIntervalPartitionBy.sim +++ b/tests/script/tsim/stream/fillIntervalPartitionBy.sim @@ -149,7 +149,7 @@ endi if $data04 == 0 then print ====streamt1=data04=$data04 - return -1 + goto loop4 endi sql select group_id,count(*) from streamt1 group by group_id; @@ -168,7 +168,7 @@ endi if $data04 == 0 then print ====streamt2=data04=$data04 - return -1 + goto loop4 endi sql select group_id,count(*) from streamt2 group by group_id; @@ -187,7 +187,7 @@ endi if $data04 == 0 then print ====streamt3=data04=$data04 - return -1 + goto loop4 endi sql select group_id,count(*) from streamt3 group by group_id; @@ -207,7 +207,7 @@ endi if $data04 == 0 then print ====streamt4=data04=$data04 - return -1 + goto loop4 endi sql select group_id,count(*) from streamt4 group by group_id; @@ -226,7 +226,7 @@ endi if $data04 == 0 then print ====streamt5=data04=$data04 - return -1 + goto loop4 endi sql select group_id,count(*) from streamt5 group by group_id; diff --git a/tests/script/tsim/stream/fillIntervalPrevNext.sim b/tests/script/tsim/stream/fillIntervalPrevNext.sim index 4eadd7e7b1..99f7dcb5cb 100644 --- a/tests/script/tsim/stream/fillIntervalPrevNext.sim +++ b/tests/script/tsim/stream/fillIntervalPrevNext.sim @@ -228,31 +228,31 @@ endi if $data72 != 6.000000000 then print =====data72=$data72 - return -1 + goto loop1 endi if $data73 != 3.000000000 then print =====data73=$data73 - return -1 + goto loop1 endi if $data82 != 6.000000000 then print =====data82=$data82 - return -1 + goto loop1 endi if $data83 != 3.000000000 then print =====data83=$data83 - return -1 + goto loop1 endi if $data92 != 6.000000000 then print =====data92=$data92 - return -1 + goto loop1 endi if $data93 != 3.000000000 then print =====data93=$data93 - return -1 + goto loop1 endi @@ -483,535 +483,33 @@ endi if $data72 != 6.000000000 then print =====data72=$data72 - return -1 + goto loop6 endi if $data73 != 3.000000000 then print =====data73=$data73 - return -1 + goto loop6 endi if $data82 != 6.000000000 then print =====data82=$data82 - return -1 + goto loop6 endi if $data83 != 3.000000000 then print =====data83=$data83 - return -1 + goto loop6 endi if $data92 != 6.000000000 then print =====data92=$data92 - return -1 + goto loop6 endi if $data93 != 3.000000000 then print =====data93=$data93 - return -1 + goto loop6 endi - - -sql drop stream if exists streams7; -sql drop stream if exists streams8; -sql drop database if exists test7; -sql create database test7 vgroups 1; -sql use test7; -sql create table t1(ts timestamp, a int, b int , c int, d double, s varchar(20)); -sql create stream streams7 trigger at_once into streamt7 as select _wstart as ts, max(a), b+c, s from t1 where ts >= 1648791150000 and ts < 1648791261000 interval(1s) fill(prev); -sql create stream streams8 trigger at_once into streamt8 as select _wstart as ts, max(a), 1, b+1 from t1 where ts >= 1648791150000 and ts < 1648791261000 interval(1s) fill(next); -sql insert into t1 values(1648791215000,1,1,1,1.0,'aaa'); -sql insert into t1 values(1648791217000,2,2,2,2.0,'bbb'); -sql insert into t1 values(1648791211000,3,3,3,3.0,'ccc'); -sql insert into t1 values(1648791213000,4,4,4,4.0,'ddd'); - - -$loop_count = 0 - -loop7: -sleep 300 -sql select * from streamt7 order by ts; - -$loop_count = $loop_count + 1 -if $loop_count == 10 then - return -1 -endi - - -if $rows != 7 then - print =====rows=$rows - goto loop7 -endi - - -if $data01 != 3 then - print =====data01=$data01 - return -1 -endi -if $data02 != 6.000000000 then - print =====data02=$data02 - return -1 -endi -if $data03 != ccc then - print =====data03=$data03 - return -1 -endi - -if $data11 != 3 then - print =====data11=$data11 - return -1 -endi -if $data12 != 6.000000000 then - print =====data12=$data12 - return -1 -endi -if $data13 != ccc then - print =====data13=$data13 - return -1 -endi - - -if $data21 != 4 then - print =====data21=$data21 - return -1 -endi -if $data22 != 8.000000000 then - print =====data22=$data22 - return -1 -endi -if $data23 != ddd then - print =====data23=$data23 - return -1 -endi - - -if $data31 != 4 then - print =====data31=$data31 - return -1 -endi -if $data32 != 8.000000000 then - print =====data32=$data32 - return -1 -endi -if $data33 != ddd then - print =====data33=$data33 - return -1 -endi - - -if $data41 != 1 then - print =====data41=$data41 - return -1 -endi -if $data42 != 2.000000000 then - print =====data42=$data42 - return -1 -endi -if $data43 != aaa then - print =====data43=$data43 - return -1 -endi - - -if $data51 != 1 then - print =====data51=$data51 - return -1 -endi -if $data52 != 2.000000000 then - print =====data52=$data52 - return -1 -endi -if $data53 != aaa then - print =====data53=$data53 - return -1 -endi - - -if $data61 != 2 then - print =====data61=$data61 - return -1 -endi -if $data62 != 4.000000000 then - print =====data62=$data62 - return -1 -endi -if $data63 != bbb then - print =====data63=$data63 - return -1 -endi - -#-------------- - -sleep 200 -sql select * from streamt8 order by ts; - - -if $rows != 7 then - print =====rows=$rows - return -1 -endi - - -if $data01 != 3 then - print =====data01=$data01 - return -1 -endi -if $data02 != 1 then - print =====data02=$data02 - return -1 -endi -if $data03 != 4.000000000 then - print =====data03=$data03 - return -1 -endi - -if $data11 != 4 then - print =====data11=$data11 - return -1 -endi -if $data12 != 1 then - print =====data12=$data12 - return -1 -endi -if $data13 != 5.000000000 then - print =====data13=$data13 - return -1 -endi - - -if $data21 != 4 then - print =====data21=$data21 - return -1 -endi -if $data22 != 1 then - print =====data22=$data22 - return -1 -endi -if $data23 != 5.000000000 then - print =====data23=$data23 - return -1 -endi - - -if $data31 != 1 then - print =====data31=$data31 - return -1 -endi -if $data32 != 1 then - print =====data32=$data32 - return -1 -endi -if $data33 != 2.000000000 then - print =====data33=$data33 - return -1 -endi - - -if $data41 != 1 then - print =====data41=$data41 - return -1 -endi -if $data42 != 1 then - print =====data42=$data42 - return -1 -endi -if $data43 != 2.000000000 then - print =====data43=$data43 - return -1 -endi - - -if $data51 != 2 then - print =====data51=$data51 - return -1 -endi -if $data52 != 1 then - print =====data52=$data52 - return -1 -endi -if $data53 != 3.000000000 then - print =====data53=$data53 - return -1 -endi - - -if $data61 != 2 then - print =====data61=$data61 - return -1 -endi -if $data62 != 1 then - print =====data62=$data62 - return -1 -endi -if $data63 != 3.000000000 then - print =====data63=$data63 - return -1 -endi - -sql insert into t1 values(1648791212000,5,5,5,5.0,'eee'); -sql insert into t1 values(1648791207000,6,6,6,6.0,'fff') (1648791209000,7,7,7,7.0,'ggg') (1648791219000,8,8,8,8.0,'hhh') (1648791221000,9,9,9,9.0,'iii'); - - - -$loop_count = 0 - -loop8: -sleep 200 -sql select * from streamt7 order by ts; - -$loop_count = $loop_count + 1 -if $loop_count == 10 then - return -1 -endi - - -if $rows != 15 then - print =====rows=$rows - goto loop8 -endi - - -if $data01 != 6 then - print =====data01=$data01 - return -1 -endi -if $data02 != 12.000000000 then - print =====data02=$data02 - return -1 -endi -if $data03 != fff then - print =====data03=$data03 - return -1 -endi - -if $data11 != 6 then - print =====data11=$data11 - return -1 -endi -if $data12 != 12.000000000 then - print =====data12=$data12 - return -1 -endi -if $data13 != fff then - print =====data13=$data13 - return -1 -endi - - -if $data21 != 7 then - print =====data21=$data21 - return -1 -endi -if $data22 != 14.000000000 then - print =====data22=$data22 - return -1 -endi -if $data23 != ggg then - print =====data23=$data23 - return -1 -endi - - -if $data31 != 7 then - print =====data31=$data31 - return -1 -endi -if $data32 != 14.000000000 then - print =====data32=$data32 - return -1 -endi -if $data33 != ggg then - print =====data33=$data33 - return -1 -endi - -if $data51 != 5 then - print =====data51=$data51 - return -1 -endi -if $data52 != 10.000000000 then - print =====data52=$data52 - return -1 -endi -if $data53 != eee then - print =====data53=$data53 - return -1 -endi - - -if $data[11][1] != 2 then - print =====data[11][1]=$data[11][1] - return -1 -endi -if $data[11][2] != 4.000000000 then - print =====data[11][2]=$data[11][2] - return -1 -endi -if $data[11][3] != bbb then - print =====data[11][3]=$data[11][3] - return -1 -endi - -if $data[12][1] != 8 then - print =====data[12][1]=$data[12][1] - return -1 -endi -if $data[12][2] != 16.000000000 then - print =====data[12][2]=$data[12][2] - return -1 -endi -if $data[12][3] != hhh then - print =====data[12][3]=$data[12][3] - return -1 -endi - -if $data[13][1] != 8 then - print =====data[13][1]=$data[13][1] - return -1 -endi -if $data[13][2] != 16.000000000 then - print =====data[13][2]=$data[13][2] - return -1 -endi -if $data[13][3] != hhh then - print =====data[13][3]=$data[13][3] - return -1 -endi - -if $data[14][1] != 9 then - print =====data[14][1]=$data[14][1] - return -1 -endi -if $data[14][2] != 18.000000000 then - print =====data[14][2]=$data[14][2] - return -1 -endi -if $data[14][3] != iii then - print =====data[14][3]=$data[14][3] - return -1 -endi - -print fill next-----------------890 -sql use test7; -sql select * from streamt8 order by ts; - -if $rows != 15 then - print =====rows=$rows - goto loop8 -endi - - -if $data01 != 6 then - print =====data01=$data01 - return -1 -endi -if $data02 != 1 then - print =====data02=$data02 - return -1 -endi -if $data03 != 7.000000000 then - print =====data03=$data03 - return -1 -endi - -if $data11 != 7 then - print =====data11=$data11 - return -1 -endi -if $data13 != 8.000000000 then - print =====data13=$data13 - return -1 -endi - - -if $data21 != 7 then - print =====data21=$data21 - return -1 -endi -if $data23 != 8.000000000 then - print =====data23=$data23 - return -1 -endi - - -if $data31 != 3 then - print =====data31=$data31 - return -1 -endi -if $data33 != 4.000000000 then - print =====data33=$data33 - return -1 -endi - -if $data51 != 5 then - print =====data51=$data51 - return -1 -endi -if $data53 != 6.000000000 then - print =====data53=$data53 - return -1 -endi - - -if $data[11][1] != 8 then - print =====data[11][1]=$data[11][1] - return -1 -endi -if $data[11][2] != 1 then - print =====data[11][2]=$data[11][2] - return -1 -endi -if $data[11][3] != 9.000000000 then - print =====data[11][3]=$data[11][3] - return -1 -endi - -if $data[12][1] != 8 then - print =====data[12][1]=$data[12][1] - return -1 -endi -if $data[12][3] != 9.000000000 then - print =====data[12][3]=$data[12][3] - return -1 -endi - -if $data[13][1] != 9 then - print =====data[13][1]=$data[13][1] - return -1 -endi -if $data[13][3] != 10.000000000 then - print =====data[13][3]=$data[13][3] - return -1 -endi - -if $data[14][1] != 9 then - print =====data[14][1]=$data[14][1] - return -1 -endi -if $data[14][3] != 10.000000000 then - print =====data[14][3]=$data[14][3] - return -1 -endi - - - - - - - - - - - - - - - - - - - - #==system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/stream/fillIntervalPrevNext1.sim b/tests/script/tsim/stream/fillIntervalPrevNext1.sim new file mode 100644 index 0000000000..8058065bcf --- /dev/null +++ b/tests/script/tsim/stream/fillIntervalPrevNext1.sim @@ -0,0 +1,559 @@ +$loop_all = 0 +looptest: + +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/exec.sh -n dnode1 -s start +#==system sh/exec.sh -n dnode1 -s start -v + +sleep 200 +sql connect + + +sql drop stream if exists streams7; +sql drop stream if exists streams8; +sql drop database if exists test7; +sql create database test7 vgroups 1; +sql use test7; +sql create table t1(ts timestamp, a int, b int , c int, d double, s varchar(20)); +sql create stream streams7 trigger at_once into streamt7 as select _wstart as ts, max(a), b+c, s from t1 where ts >= 1648791150000 and ts < 1648791261000 interval(1s) fill(prev); +sql create stream streams8 trigger at_once into streamt8 as select _wstart as ts, max(a), 1, b+1 from t1 where ts >= 1648791150000 and ts < 1648791261000 interval(1s) fill(next); +sql insert into t1 values(1648791215000,1,1,1,1.0,'aaa'); +sql insert into t1 values(1648791217000,2,2,2,2.0,'bbb'); +sql insert into t1 values(1648791211000,3,3,3,3.0,'ccc'); +sql insert into t1 values(1648791213000,4,4,4,4.0,'ddd'); + + +$loop_count = 0 + +loop7: +sleep 300 +sql select * from streamt7 order by ts; + +$loop_count = $loop_count + 1 +if $loop_count == 10 then + return -1 +endi + + +if $rows != 7 then + print =====rows=$rows + goto loop7 +endi + + +if $data01 != 3 then + print =====data01=$data01 + goto loop7 +endi +if $data02 != 6.000000000 then + print =====data02=$data02 + goto loop7 +endi +if $data03 != ccc then + print =====data03=$data03 + goto loop7 +endi + +if $data11 != 3 then + print =====data11=$data11 + goto loop7 +endi +if $data12 != 6.000000000 then + print =====data12=$data12 + goto loop7 +endi +if $data13 != ccc then + print =====data13=$data13 + goto loop7 +endi + + +if $data21 != 4 then + print =====data21=$data21 + goto loop7 +endi +if $data22 != 8.000000000 then + print =====data22=$data22 + goto loop7 +endi +if $data23 != ddd then + print =====data23=$data23 + goto loop7 +endi + + +if $data31 != 4 then + print =====data31=$data31 + goto loop7 +endi +if $data32 != 8.000000000 then + print =====data32=$data32 + goto loop7 +endi +if $data33 != ddd then + print =====data33=$data33 + goto loop7 +endi + + +if $data41 != 1 then + print =====data41=$data41 + goto loop7 +endi +if $data42 != 2.000000000 then + print =====data42=$data42 + goto loop7 +endi +if $data43 != aaa then + print =====data43=$data43 + goto loop7 +endi + + +if $data51 != 1 then + print =====data51=$data51 + goto loop7 +endi +if $data52 != 2.000000000 then + print =====data52=$data52 + goto loop7 +endi +if $data53 != aaa then + print =====data53=$data53 + goto loop7 +endi + + +if $data61 != 2 then + print =====data61=$data61 + goto loop7 +endi +if $data62 != 4.000000000 then + print =====data62=$data62 + goto loop7 +endi +if $data63 != bbb then + print =====data63=$data63 + goto loop7 +endi + +#-------------- + +loop71: + +$loop_count = 0 +sleep 300 + +sql select * from streamt8 order by ts; + +$loop_count = $loop_count + 1 +if $loop_count == 10 then + return -1 +endi + +if $rows != 7 then + print =====rows=$rows + goto loop71 +endi + + +if $data01 != 3 then + print =====data01=$data01 + goto loop71 +endi +if $data02 != 1 then + print =====data02=$data02 + goto loop71 +endi +if $data03 != 4.000000000 then + print =====data03=$data03 + goto loop71 +endi + +if $data11 != 4 then + print =====data11=$data11 + goto loop71 +endi +if $data12 != 1 then + print =====data12=$data12 + goto loop71 +endi +if $data13 != 5.000000000 then + print =====data13=$data13 + goto loop71 +endi + + +if $data21 != 4 then + print =====data21=$data21 + goto loop71 +endi +if $data22 != 1 then + print =====data22=$data22 + goto loop71 +endi +if $data23 != 5.000000000 then + print =====data23=$data23 + goto loop71 +endi + + +if $data31 != 1 then + print =====data31=$data31 + goto loop71 +endi +if $data32 != 1 then + print =====data32=$data32 + goto loop71 +endi +if $data33 != 2.000000000 then + print =====data33=$data33 + goto loop71 +endi + + +if $data41 != 1 then + print =====data41=$data41 + goto loop71 +endi +if $data42 != 1 then + print =====data42=$data42 + goto loop71 +endi +if $data43 != 2.000000000 then + print =====data43=$data43 + goto loop71 +endi + + +if $data51 != 2 then + print =====data51=$data51 + goto loop71 +endi +if $data52 != 1 then + print =====data52=$data52 + goto loop71 +endi +if $data53 != 3.000000000 then + print =====data53=$data53 + goto loop71 +endi + + +if $data61 != 2 then + print =====data61=$data61 + goto loop71 +endi +if $data62 != 1 then + print =====data62=$data62 + goto loop71 +endi +if $data63 != 3.000000000 then + print =====data63=$data63 + goto loop71 +endi + +sql insert into t1 values(1648791212000,5,5,5,5.0,'eee'); +sql insert into t1 values(1648791207000,6,6,6,6.0,'fff') (1648791209000,7,7,7,7.0,'ggg') (1648791219000,8,8,8,8.0,'hhh') (1648791221000,9,9,9,9.0,'iii'); + + + +$loop_count = 0 + +loop8: +sleep 200 +sql select * from streamt7 order by ts; + +$loop_count = $loop_count + 1 +if $loop_count == 10 then + return -1 +endi + + +if $rows != 15 then + print =====rows=$rows + goto loop8 +endi + + +if $data01 != 6 then + print =====data01=$data01 + goto loop8 +endi +if $data02 != 12.000000000 then + print =====data02=$data02 + goto loop8 +endi +if $data03 != fff then + print =====data03=$data03 + goto loop8 +endi + +if $data11 != 6 then + print =====data11=$data11 + goto loop8 +endi +if $data12 != 12.000000000 then + print =====data12=$data12 + goto loop8 +endi +if $data13 != fff then + print =====data13=$data13 + goto loop8 +endi + + +if $data21 != 7 then + print =====data21=$data21 + goto loop8 +endi +if $data22 != 14.000000000 then + print =====data22=$data22 + goto loop8 +endi +if $data23 != ggg then + print =====data23=$data23 + goto loop8 +endi + + +if $data31 != 7 then + print =====data31=$data31 + goto loop8 +endi +if $data32 != 14.000000000 then + print =====data32=$data32 + goto loop8 +endi +if $data33 != ggg then + print =====data33=$data33 + goto loop8 +endi + +if $data51 != 5 then + print =====data51=$data51 + goto loop8 +endi +if $data52 != 10.000000000 then + print =====data52=$data52 + goto loop8 +endi +if $data53 != eee then + print =====data53=$data53 + goto loop8 +endi + + +if $data[11][1] != 2 then + print =====data[11][1]=$data[11][1] + goto loop8 +endi +if $data[11][2] != 4.000000000 then + print =====data[11][2]=$data[11][2] + goto loop8 +endi +if $data[11][3] != bbb then + print =====data[11][3]=$data[11][3] + goto loop8 +endi + +if $data[12][1] != 8 then + print =====data[12][1]=$data[12][1] + goto loop8 +endi +if $data[12][2] != 16.000000000 then + print =====data[12][2]=$data[12][2] + goto loop8 +endi +if $data[12][3] != hhh then + print =====data[12][3]=$data[12][3] + goto loop8 +endi + +if $data[13][1] != 8 then + print =====data[13][1]=$data[13][1] + goto loop8 +endi +if $data[13][2] != 16.000000000 then + print =====data[13][2]=$data[13][2] + goto loop8 +endi +if $data[13][3] != hhh then + print =====data[13][3]=$data[13][3] + goto loop8 +endi + +if $data[14][1] != 9 then + print =====data[14][1]=$data[14][1] + goto loop8 +endi +if $data[14][2] != 18.000000000 then + print =====data[14][2]=$data[14][2] + goto loop8 +endi +if $data[14][3] != iii then + print =====data[14][3]=$data[14][3] + goto loop8 +endi + +print fill next-----------------890 +sql use test7; +sql select * from streamt8 order by ts; + +if $rows != 15 then + print =====rows=$rows + goto loop8 +endi + + +if $data01 != 6 then + print =====data01=$data01 + goto loop8 +endi +if $data02 != 1 then + print =====data02=$data02 + goto loop8 +endi +if $data03 != 7.000000000 then + print =====data03=$data03 + goto loop8 +endi + +if $data11 != 7 then + print =====data11=$data11 + goto loop8 +endi +if $data13 != 8.000000000 then + print =====data13=$data13 + goto loop8 +endi + + +if $data21 != 7 then + print =====data21=$data21 + goto loop8 +endi +if $data23 != 8.000000000 then + print =====data23=$data23 + goto loop8 +endi + + +if $data31 != 3 then + print =====data31=$data31 + goto loop8 +endi +if $data33 != 4.000000000 then + print =====data33=$data33 + goto loop8 +endi + +if $data51 != 5 then + print =====data51=$data51 + goto loop8 +endi +if $data53 != 6.000000000 then + print =====data53=$data53 + goto loop8 +endi + + +if $data[11][1] != 8 then + print =====data[11][1]=$data[11][1] + goto loop8 +endi +if $data[11][2] != 1 then + print =====data[11][2]=$data[11][2] + goto loop8 +endi +if $data[11][3] != 9.000000000 then + print =====data[11][3]=$data[11][3] + goto loop8 +endi + +if $data[12][1] != 8 then + print =====data[12][1]=$data[12][1] + goto loop8 +endi +if $data[12][3] != 9.000000000 then + print =====data[12][3]=$data[12][3] + goto loop8 +endi + +if $data[13][1] != 9 then + print =====data[13][1]=$data[13][1] + goto loop8 +endi +if $data[13][3] != 10.000000000 then + print =====data[13][3]=$data[13][3] + goto loop8 +endi + +if $data[14][1] != 9 then + print =====data[14][1]=$data[14][1] + goto loop8 +endi +if $data[14][3] != 10.000000000 then + print =====data[14][3]=$data[14][3] + goto loop8 +endi + + + + + + + + + + + + + + + + + + + + + + +#==system sh/exec.sh -n dnode1 -s stop -x SIGINT +#==print =============== check +#==$null= + +#==system_content sh/checkValgrind.sh -n dnode1 +#==print cmd return result ----> [ $system_content ] +#==if $system_content > 0 then +#== return -1 +#==endi + +#==if $system_content == $null then +#== return -1 +#==endi +#==return 1 + + + +sql drop stream if exists streams0; +sql drop stream if exists streams1; +sql drop stream if exists streams2; +sql drop stream if exists streams3; +sql drop stream if exists streams4; +sql drop stream if exists streams5; +sql drop stream if exists streams6; +sql drop stream if exists streams7; +sql drop stream if exists streams8; + +sql use test7; +sql select * from t1; +print $data00 + +$loop_all = $loop_all + 1 +print ============loop_all=$loop_all + +system sh/stop_dnodes.sh + +#goto looptest \ No newline at end of file