From d707f69a6c5c1b5a978526fb765d4aa34e6b1473 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 13 Sep 2023 09:52:24 +0800 Subject: [PATCH 1/7] opti:ask ep logic in tmq --- source/client/src/clientTmq.c | 200 +++--- tests/parallel_test/cases.task | 1182 -------------------------------- 2 files changed, 86 insertions(+), 1296 deletions(-) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index c4021e5302..d804a83d51 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -29,8 +29,6 @@ #define OFFSET_IS_RESET_OFFSET(_of) ((_of) < 0) -typedef void (*__tmq_askep_fn_t)(tmq_t* pTmq, int32_t code, SDataBuf* pBuf, void* pParam); - struct SMqMgmt { int8_t inited; tmr_h timer; @@ -189,8 +187,8 @@ typedef struct { typedef struct { int64_t refId; + bool sync; void* pParam; - __tmq_askep_fn_t pUserFn; } SMqAskEpCbParam; typedef struct { @@ -252,13 +250,12 @@ typedef struct SSyncCommitInfo { int32_t code; } SSyncCommitInfo; -static int32_t doAskEp(tmq_t* tmq); +static int32_t syncAskEp(tmq_t* tmq); static int32_t makeTopicVgroupKey(char* dst, const char* topicName, int32_t vg); static int32_t tmqCommitDone(SMqCommitCbParamSet* pParamSet); static int32_t doSendCommitMsg(tmq_t* tmq, int32_t vgId, SEpSet* epSet, STqOffsetVal* offset, const char* pTopicName, SMqCommitCbParamSet* pParamSet); static void commitRspCountDown(SMqCommitCbParamSet* pParamSet, int64_t consumerId, const char* pTopic, int32_t vgId); -static void asyncAskEp(tmq_t* pTmq, __tmq_askep_fn_t askEpFn, void* param); -static void addToQueueCallbackFn(tmq_t* pTmq, int32_t code, SDataBuf* pDataBuf, void* param); +static void askEp(tmq_t* pTmq, void* param, bool sync); tmq_conf_t* tmq_conf_new() { tmq_conf_t* conf = taosMemoryCalloc(1, sizeof(tmq_conf_t)); @@ -848,7 +845,7 @@ int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { while (pTaskType != NULL) { if (*pTaskType == TMQ_DELAYED_TASK__ASK_EP) { - asyncAskEp(pTmq, addToQueueCallbackFn, NULL); + askEp(pTmq, NULL, false); int64_t* pRefId = taosMemoryMalloc(sizeof(int64_t)); *pRefId = pTmq->refId; @@ -876,7 +873,7 @@ int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { return 0; } -static void* tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { +static void tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__END_RSP) { // do nothing } else if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { @@ -907,8 +904,6 @@ static void* tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { taosArrayDestroy(pRsp->taosxRsp.createTableLen); taosArrayDestroyP(pRsp->taosxRsp.createTableReq, taosMemoryFree); } - - return NULL; } void tmqClearUnhandleMsg(tmq_t* tmq) { @@ -1222,7 +1217,7 @@ int32_t tmq_subscribe(tmq_t* tmq, const tmq_list_t* topic_list) { } int32_t retryCnt = 0; - while (TSDB_CODE_MND_CONSUMER_NOT_READY == doAskEp(tmq)) { + while (TSDB_CODE_MND_CONSUMER_NOT_READY == syncAskEp(tmq)) { if (retryCnt++ > MAX_RETRY_COUNT) { tscError("consumer:0x%" PRIx64 ", mnd not ready for subscribe, retry more than 2 minutes", tmq->consumerId); code = TSDB_CODE_MND_CONSUMER_NOT_READY; @@ -1546,48 +1541,6 @@ static bool doUpdateLocalEp(tmq_t* tmq, int32_t epoch, const SMqAskEpRsp* pRsp) return set; } -int32_t askEpCallbackFn(void* param, SDataBuf* pMsg, int32_t code) { - SMqAskEpCbParam* pParam = (SMqAskEpCbParam*)param; - tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, pParam->refId); - if (tmq == NULL) { - code = TSDB_CODE_TMQ_CONSUMER_CLOSED; - goto END; - } - - if (code != TSDB_CODE_SUCCESS) { - tscError("consumer:0x%" PRIx64 ", get topic endpoint error, code:%s", tmq->consumerId, tstrerror(code)); - taosReleaseRef(tmqMgmt.rsetId, pParam->refId); - goto END; - } - - SMqRspHead* head = pMsg->pData; - int32_t epoch = atomic_load_32(&tmq->epoch); - if (head->epoch <= epoch) { - tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, no need to update local ep", - tmq->consumerId, head->epoch, epoch); - - if (tmq->status == TMQ_CONSUMER_STATUS__RECOVER) { - SMqAskEpRsp rsp; - tDecodeSMqAskEpRsp(POINTER_SHIFT(pMsg->pData, sizeof(SMqRspHead)), &rsp); - int8_t flag = (taosArrayGetSize(rsp.topics) == 0) ? TMQ_CONSUMER_STATUS__NO_TOPIC : TMQ_CONSUMER_STATUS__READY; - atomic_store_8(&tmq->status, flag); - tDeleteSMqAskEpRsp(&rsp); - } - - } else { - tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, update local ep", tmq->consumerId, - head->epoch, epoch); - } - taosReleaseRef(tmqMgmt.rsetId, pParam->refId); - -END: - pParam->pUserFn(tmq, code, pMsg, pParam->pParam); - taosMemoryFree(pMsg->pEpSet); - taosMemoryFree(pMsg->pData); - taosMemoryFree(pParam); - return code; -} - void tmqBuildConsumeReqImpl(SMqPollReq* pReq, tmq_t* tmq, int64_t timeout, SMqClientTopic* pTopic, SMqClientVg* pVg) { int32_t groupLen = strlen(tmq->groupId); memcpy(pReq->subKey, tmq->groupId, groupLen); @@ -1789,7 +1742,7 @@ end: return code; } -static int32_t tmqHandleNoPollRsp(tmq_t* tmq, SMqRspWrapper* rspWrapper) { +static int32_t tmqHandleEpRsp(tmq_t* tmq, SMqRspWrapper* rspWrapper) { if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { if (rspWrapper->epoch > atomic_load_32(&tmq->epoch)) { SMqAskEpRspWrapper* pEpRspWrapper = (SMqAskEpRspWrapper*)rspWrapper; @@ -1878,9 +1831,9 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { tscDebug("consumer:0x%" PRIx64 " empty block received, vgId:%d, offset:%s, vg total:%" PRId64 ", total:%" PRId64 ", reqId:0x%" PRIx64, tmq->consumerId, pVg->vgId, buf, pVg->numOfRows, tmq->totalRows, pollRspWrapper->reqId); - pRspWrapper = tmqFreeRspWrapper(pRspWrapper); pVg->emptyBlockReceiveTs = taosGetTimestampMs(); - taosFreeQitem(pollRspWrapper); + tmqFreeRspWrapper(pRspWrapper); + taosFreeQitem(pRspWrapper); } else { // build rsp int64_t numOfRows = 0; SMqRspObj* pRsp = tmqBuildRspFromWrapper(pollRspWrapper, pVg, &numOfRows); @@ -1890,7 +1843,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { ", vg total:%" PRId64 ", total:%" PRId64 ", reqId:0x%" PRIx64, tmq->consumerId, pVg->vgId, buf, pDataRsp->blockNum, numOfRows, pVg->numOfRows, tmq->totalRows, pollRspWrapper->reqId); - taosFreeQitem(pollRspWrapper); + taosFreeQitem(pRspWrapper); taosWUnLockLatch(&tmq->lock); return pRsp; } @@ -1899,11 +1852,10 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { tscInfo("consumer:0x%" PRIx64 " vgId:%d msg discard since epoch mismatch: msg epoch %d, consumer epoch %d", tmq->consumerId, pollRspWrapper->vgId, pDataRsp->head.epoch, consumerEpoch); setVgIdle(tmq, pollRspWrapper->topicName, pollRspWrapper->vgId); - pRspWrapper = tmqFreeRspWrapper(pRspWrapper); - taosFreeQitem(pollRspWrapper); + tmqFreeRspWrapper(pRspWrapper); + taosFreeQitem(pRspWrapper); } } else if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_META_RSP) { - // todo handle the wal range and epset for each vgroup SMqPollRspWrapper* pollRspWrapper = (SMqPollRspWrapper*)pRspWrapper; int32_t consumerEpoch = atomic_load_32(&tmq->epoch); @@ -1924,15 +1876,15 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { updateVgInfo(pVg, &pollRspWrapper->metaRsp.rspOffset, &pollRspWrapper->metaRsp.rspOffset, pollRspWrapper->metaRsp.head.walsver, pollRspWrapper->metaRsp.head.walever, tmq->consumerId, true); // build rsp SMqMetaRspObj* pRsp = tmqBuildMetaRspFromWrapper(pollRspWrapper); - taosFreeQitem(pollRspWrapper); + taosFreeQitem(pRspWrapper); taosWUnLockLatch(&tmq->lock); return pRsp; } else { tscInfo("consumer:0x%" PRIx64 " vgId:%d msg discard since epoch mismatch: msg epoch %d, consumer epoch %d", tmq->consumerId, pollRspWrapper->vgId, pollRspWrapper->metaRsp.head.epoch, consumerEpoch); setVgIdle(tmq, pollRspWrapper->topicName, pollRspWrapper->vgId); - pRspWrapper = tmqFreeRspWrapper(pRspWrapper); - taosFreeQitem(pollRspWrapper); + tmqFreeRspWrapper(pRspWrapper); + taosFreeQitem(pRspWrapper); } } else if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_DATA_META_RSP) { SMqPollRspWrapper* pollRspWrapper = (SMqPollRspWrapper*)pRspWrapper; @@ -1956,8 +1908,8 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { tscDebug("consumer:0x%" PRIx64 " taosx empty block received, vgId:%d, vg total:%" PRId64 ", reqId:0x%" PRIx64, tmq->consumerId, pVg->vgId, pVg->numOfRows, pollRspWrapper->reqId); pVg->emptyBlockReceiveTs = taosGetTimestampMs(); - pRspWrapper = tmqFreeRspWrapper(pRspWrapper); - taosFreeQitem(pollRspWrapper); + tmqFreeRspWrapper(pRspWrapper); + taosFreeQitem(pRspWrapper); taosWUnLockLatch(&tmq->lock); continue; } else { @@ -1982,20 +1934,25 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { tmq->consumerId, pVg->vgId, buf, pollRspWrapper->dataRsp.blockNum, numOfRows, pVg->numOfRows, tmq->totalRows, pollRspWrapper->reqId); - taosFreeQitem(pollRspWrapper); + taosFreeQitem(pRspWrapper); taosWUnLockLatch(&tmq->lock); return pRsp; } else { tscInfo("consumer:0x%" PRIx64 " vgId:%d msg discard since epoch mismatch: msg epoch %d, consumer epoch %d", tmq->consumerId, pollRspWrapper->vgId, pollRspWrapper->taosxRsp.head.epoch, consumerEpoch); setVgIdle(tmq, pollRspWrapper->topicName, pollRspWrapper->vgId); - pRspWrapper = tmqFreeRspWrapper(pRspWrapper); - taosFreeQitem(pollRspWrapper); + tmqFreeRspWrapper(pRspWrapper); + taosFreeQitem(pRspWrapper); } - } else { - tscDebug("consumer:0x%" PRIx64 " not data msg received", tmq->consumerId); - tmqHandleNoPollRsp(tmq, pRspWrapper); + } else if(pRspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP){ + tscDebug("consumer:0x%" PRIx64 " ep msg received", tmq->consumerId); + SMqAskEpRspWrapper* pEpRspWrapper = (SMqAskEpRspWrapper*)pRspWrapper; + SMqAskEpRsp* rspMsg = &pEpRspWrapper->msg; + doUpdateLocalEp(tmq, pEpRspWrapper->epoch, rspMsg); + tmqFreeRspWrapper(pRspWrapper); taosFreeQitem(pRspWrapper); + } else { + tscError("consumer:0x%" PRIx64 " invalid msg received:%d", tmq->consumerId, pRspWrapper->tmqRspType); } } } @@ -2018,7 +1975,7 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { while (atomic_load_8(&tmq->status) == TMQ_CONSUMER_STATUS__RECOVER) { int32_t retryCnt = 0; - while (TSDB_CODE_MND_CONSUMER_NOT_READY == doAskEp(tmq)) { + while (TSDB_CODE_MND_CONSUMER_NOT_READY == syncAskEp(tmq)) { if (retryCnt++ > 40) { return NULL; } @@ -2407,55 +2364,70 @@ end: } } -void defaultAskEpCb(tmq_t* pTmq, int32_t code, SDataBuf* pDataBuf, void* param) { - SAskEpInfo* pInfo = param; - pInfo->code = code; +int32_t askEpCb(void* param, SDataBuf* pMsg, int32_t code) { + SMqAskEpCbParam* pParam = (SMqAskEpCbParam*)param; + tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, pParam->refId); + if (tmq == NULL) { + code = TSDB_CODE_TMQ_CONSUMER_CLOSED; + goto FAIL; + } - if (pTmq == NULL || code != TSDB_CODE_SUCCESS){ + if (code != TSDB_CODE_SUCCESS) { + tscError("consumer:0x%" PRIx64 ", get topic endpoint error, code:%s", tmq->consumerId, tstrerror(code)); goto END; } - SMqRspHead* head = pDataBuf->pData; - SMqAskEpRsp rsp; - tDecodeSMqAskEpRsp(POINTER_SHIFT(pDataBuf->pData, sizeof(SMqRspHead)), &rsp); - doUpdateLocalEp(pTmq, head->epoch, &rsp); - tDeleteSMqAskEpRsp(&rsp); + SMqRspHead* head = pMsg->pData; + int32_t epoch = atomic_load_32(&tmq->epoch); + if (head->epoch <= epoch) { + tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, no need to update local ep", + tmq->consumerId, head->epoch, epoch); + goto END; + } + + tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, update local ep", tmq->consumerId, + head->epoch, epoch); + if(pParam->sync){ + SMqAskEpRsp rsp = {0}; + tDecodeSMqAskEpRsp(POINTER_SHIFT(pMsg->pData, sizeof(SMqRspHead)), &rsp); + doUpdateLocalEp(tmq, head->epoch, &rsp); + tDeleteSMqAskEpRsp(&rsp); + }else{ + SMqAskEpRspWrapper* pWrapper = taosAllocateQitem(sizeof(SMqAskEpRspWrapper), DEF_QITEM, 0); + if (pWrapper == NULL) { + code = TSDB_CODE_OUT_OF_MEMORY; + goto END; + } + + pWrapper->tmqRspType = TMQ_MSG_TYPE__EP_RSP; + pWrapper->epoch = head->epoch; + memcpy(&pWrapper->msg, pMsg->pData, sizeof(SMqRspHead)); + tDecodeSMqAskEpRsp(POINTER_SHIFT(pMsg->pData, sizeof(SMqRspHead)), &pWrapper->msg); + + taosWriteQitem(tmq->mqueue, pWrapper); + } END: - tsem_post(&pInfo->sem); + taosReleaseRef(tmqMgmt.rsetId, pParam->refId); + +FAIL: + if(pParam->sync){ + SAskEpInfo* pInfo = pParam->pParam; + pInfo->code = code; + tsem_post(&pInfo->sem); + } + + taosMemoryFree(pMsg->pEpSet); + taosMemoryFree(pMsg->pData); + taosMemoryFree(pParam); + return code; } -void addToQueueCallbackFn(tmq_t* pTmq, int32_t code, SDataBuf* pDataBuf, void* param) { - if (pTmq == NULL){ - terrno = TSDB_CODE_TMQ_CONSUMER_CLOSED; - return; - } - if (code != TSDB_CODE_SUCCESS) { - terrno = code; - return; - } - - SMqAskEpRspWrapper* pWrapper = taosAllocateQitem(sizeof(SMqAskEpRspWrapper), DEF_QITEM, 0); - if (pWrapper == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return; - } - - SMqRspHead* head = pDataBuf->pData; - - pWrapper->tmqRspType = TMQ_MSG_TYPE__EP_RSP; - pWrapper->epoch = head->epoch; - memcpy(&pWrapper->msg, pDataBuf->pData, sizeof(SMqRspHead)); - tDecodeSMqAskEpRsp(POINTER_SHIFT(pDataBuf->pData, sizeof(SMqRspHead)), &pWrapper->msg); - - taosWriteQitem(pTmq->mqueue, pWrapper); -} - -int32_t doAskEp(tmq_t* pTmq) { +int32_t syncAskEp(tmq_t* pTmq) { SAskEpInfo* pInfo = taosMemoryMalloc(sizeof(SAskEpInfo)); tsem_init(&pInfo->sem, 0, 0); - asyncAskEp(pTmq, defaultAskEpCb, pInfo); + askEp(pTmq, pInfo, true); tsem_wait(&pInfo->sem); int32_t code = pInfo->code; @@ -2464,7 +2436,7 @@ int32_t doAskEp(tmq_t* pTmq) { return code; } -void asyncAskEp(tmq_t* pTmq, __tmq_askep_fn_t askEpFn, void* param) { +void askEp(tmq_t* pTmq, void* param, bool sync) { SMqAskEpReq req = {0}; req.consumerId = pTmq->consumerId; req.epoch = pTmq->epoch; @@ -2501,7 +2473,7 @@ void asyncAskEp(tmq_t* pTmq, __tmq_askep_fn_t askEpFn, void* param) { } pParam->refId = pTmq->refId; - pParam->pUserFn = askEpFn; + pParam->sync = sync; pParam->pParam = param; SMsgSendInfo* sendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo)); @@ -2515,7 +2487,7 @@ void asyncAskEp(tmq_t* pTmq, __tmq_askep_fn_t askEpFn, void* param) { sendInfo->requestId = generateRequestId(); sendInfo->requestObjRefId = 0; sendInfo->param = pParam; - sendInfo->fp = askEpCallbackFn; + sendInfo->fp = askEpCb; sendInfo->msgType = TDMT_MND_TMQ_ASK_EP; SEpSet epSet = getEpSet_s(&pTmq->pTscObj->pAppInfo->mgmtEp); @@ -2530,7 +2502,7 @@ void asyncAskEp(tmq_t* pTmq, __tmq_askep_fn_t askEpFn, void* param) { FAIL: taosMemoryFreeClear(pParam); taosMemoryFreeClear(pReq); - askEpFn(pTmq, code, NULL, param); + askEpCb(pParam, NULL, code); } int32_t makeTopicVgroupKey(char* dst, const char* topicName, int32_t vg) { diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 0d63ea3340..457e9ccc6a 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -5,50 +5,6 @@ #unit-test ,,y,unit-test,bash test.sh -#system test -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/scalar_function.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/at_once_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/at_once_session.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/at_once_state_window.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/window_close_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/window_close_session.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/window_close_state_window.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/max_delay_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/max_delay_session.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/at_once_interval_ext.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/max_delay_interval_ext.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/window_close_session_ext.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/partition_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 8-stream/pause_resume_test.py - -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stbJoin.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stbJoin.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stbJoin.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stbJoin.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hint.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hint.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hint.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hint.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_str.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_math.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_time.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_26.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_str.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_math.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_time.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_26.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/columnLenUpdated.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/columnLenUpdated.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/columnLenUpdated.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/columnLenUpdated.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_str.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_math.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_time.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_26.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interval_limit_opt.py -Q 4 ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmqShow.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmqDropStb.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/subscribeStb0.py @@ -66,39 +22,6 @@ ,,n,system-test,python3 ./test.py -f 7-tmq/tmqDropConsumer.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/delete_stable.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_null_none.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_null_none.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_null_none.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_null_none.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_null_none.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/database_pre_suf.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_str.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_math.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_time.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQuery_26.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/select_null.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/select_null.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/select_null.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/select_null.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/select_null.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -Q 4 - -,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreDnode.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreVnode.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreMnode.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreQnode.py -N 5 -M 3 - ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/create_wrong_topic.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/dropDbR3ConflictTransaction.py -N 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/basic5.py @@ -157,1108 +80,3 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmqSubscribeStb-r3.py -N 5 ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq3mnodeSwitch.py -N 6 -M 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq3mnodeSwitch.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-19201.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-21561.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TS-3404.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TS-3581.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TS-3311.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TS-3821.py - -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/balance_vgroups_r1.py -N 6 -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/taosShell.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/taosShellError.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/taosShellNetChk.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/telemetry.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/backquote_check.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/taosdMonitor.py -,,n,system-test,python3 ./test.py -f 0-others/taosdShell.py -N 5 -M 3 -Q 3 -,,n,system-test,python3 ./test.py -f 0-others/udfTest.py -,,n,system-test,python3 ./test.py -f 0-others/udf_create.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/udf_restart_taosd.py -,,n,system-test,python3 ./test.py -f 0-others/udf_cfg1.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/udf_cfg2.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/cachemodel.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/sysinfo.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_control.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_manage.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege_show.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege_all.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/fsync.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/multilevel.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/ttl.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/ttlChangeOnWrite.py -,,n,system-test,python3 ./test.py -f 0-others/compatibility.py -,,n,system-test,python3 ./test.py -f 0-others/tag_index_basic.py -,,n,system-test,python3 ./test.py -f 0-others/udfpy_main.py -,,n,system-test,python3 ./test.py -N 3 -f 0-others/walRetention.py -#,,n,system-test,python3 ./test.py -f 0-others/splitVGroup.py -N 5 -,,n,system-test,python3 ./test.py -f 0-others/timeRangeWise.py -N 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_database.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_replica.py -N 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/influxdb_line_taosc_insert.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_telnet_line_taosc_insert.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_json_taosc_insert.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/test_stmt_muti_insert_query.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/test_stmt_set_tbname_tag.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_stable.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_table.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/boundary.py -,,n,system-test,python3 ./test.py -f 1-insert/insertWithMoreVgroup.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/table_comment.py -#,,n,system-test,python3 ./test.py -f 1-insert/time_range_wise.py -#,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/block_wise.py -#,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/create_retentions.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/mutil_stage.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/table_param_ttl.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/table_param_ttl.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/update_data_muti_rows.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/db_tb_name_check.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/InsertFuturets.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/insert_wide_column.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_benchmark.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_1.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_1.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_1.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_1.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_1.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_2.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_2.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_2.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_2.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_2.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_3.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_3.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_3.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_3.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_3.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_4.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_4.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_4.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_4.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/rowlength64k_4.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/precisionUS.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/precisionNS.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/show_tag_index.py -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/information_schema.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/and_or_for_byte.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/and_or_for_byte.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/apercentile.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/apercentile.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arccos.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arccos.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arcsin.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arcsin.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arctan.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arctan.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/avg.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/avg.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/between.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/between.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/bottom.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/bottom.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cast.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cast.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ceil.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ceil.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/char_length.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/char_length.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/check_tsdb.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/check_tsdb.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws2.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws2.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cos.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cos.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count_partition.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count_partition.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/countAlwaysReturnValue.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/countAlwaysReturnValue.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/db.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/db.py -N 3 -n 3 -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/diff.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/diff.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distinct.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distinct.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_apercentile.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_apercentile.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_avg.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_avg.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_count.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_count.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_max.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_max.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_min.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_min.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_spread.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_spread.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_stddev.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_stddev.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_sum.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_sum.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/explain.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/explain.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/first.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/first.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/floor.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/floor.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_null.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_null.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_stateduration.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_stateduration.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/histogram.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/histogram.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/limit.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/log.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/log.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/lower.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/lower.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ltrim.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ltrim.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mavg.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mavg.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_partition.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_partition.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_min_last_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row_interval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/min.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/min.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mode.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mode.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Now.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Now.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/orderBy.py -N 5 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/percentile.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/percentile.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pow.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pow.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/query_cols_tags_and_or.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/query_cols_tags_and_or.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/round.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/round.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/rtrim.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/rtrim.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sample.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sample.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sin.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sin.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/smaBasic.py -N 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/smaTest.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/smaTest.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/sma_index.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml_TS-3724.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varbinary.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/spread.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/spread.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sqrt.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sqrt.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/statecount.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/statecount.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stateduration.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stateduration.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/substr.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/substr.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sum.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sum.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tail.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tail.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tan.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tan.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Timediff.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Timediff.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timetruncate.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timetruncate.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timezone.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timezone.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_iso8601.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_iso8601.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_unixtimestamp.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_unixtimestamp.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Today.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Today.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/top.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/top.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tsbsQuery.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tsbsQuery.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ttl_comment.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ttl_comment.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/twa.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/twa.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/unique.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/unique.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/upper.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/upper.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varchar.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varchar.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/case_when.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/case_when.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/blockSMA.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/blockSMA.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/update_data.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/tb_100w_data_order.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/delete_childtable.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/delete_normaltable.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/delete_systable.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/keep_expired.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/stmt_error.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/drop.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/drop.py -N 3 -M 3 -i False -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join2.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union1.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat2.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/json_tag.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQueryInterval.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/systable_func.py - -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity_1.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/elapsed.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/csum.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_diff.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tagFilter.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ts_3405_3398_3423.py -N 3 -n 3 - -,,n,system-test,python3 ./test.py -f 2-query/queryQnode.py -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode1mnode.py -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode2mnode.py -N 5 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py -N 5 -M 3 -i False -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStop2Follower.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStop2Follower.py -N 5 -M 3 -i False -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStopLoop.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateDb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateDb.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateDb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateDb.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateDb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateDb.py -N 6 -M 3 -n 3 - -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeModifyMeta.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeModifyMeta.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateStb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateStb.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateStb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateStb.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateStb.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateStb.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertData.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertData.py -N 6 -M 3 -n 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertDataAsync.py -N 6 -M 3 -#,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertDataAsync.py -N 6 -M 3 -n 3 -,,n,system-test,python3 ./test.py -f 6-cluster/manually-test/6dnode3mnodeInsertLessDataAlterRep3to1to3.py -N 6 -M 3 -#,,n,system-test,python3 ./test.py -f 6-cluster/5dnode3mnodeRoll.py -N 3 -C 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeAdd1Ddnoe.py -N 7 -M 3 -C 6 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeAdd1Ddnoe.py -N 7 -M 3 -C 6 -n 3 -#,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py -N 5 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeRecreateMnode.py -N 6 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStopFollowerLeader.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/5dnode3mnodeStop2Follower.py -N 5 -M 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_createDb_replica1.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas_querys.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py -N 4 -M 1 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/between.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distinct.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varchar.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ltrim.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/rtrim.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/char_length.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/upper.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/lower.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join2.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cast.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/substr.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union1.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat2.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws2.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/check_tsdb.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/spread.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/explain.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timezone.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Now.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Today.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/min.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mode.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/countAlwaysReturnValue.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/first.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_iso8601.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_unixtimestamp.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timetruncate.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/diff.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Timediff.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/json_tag.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/top.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/bottom.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/percentile.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/apercentile.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ceil.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/floor.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/round.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/log.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pow.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sqrt.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sin.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cos.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tan.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arcsin.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arccos.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arctan.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQueryInterval.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity_1.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/avg.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/elapsed.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/csum.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mavg.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sample.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_diff.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/unique.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stateduration.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_stateduration.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/statecount.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tail.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ttl_comment.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_count.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_max.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_min.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_sum.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_spread.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_apercentile.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_avg.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_stddev.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/twa.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_null.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count_partition.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_partition.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_min_last_interval.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row_interval.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tsbsQuery.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/case_when.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/blockSMA.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-21561.py -Q 2 - -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/between.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distinct.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varchar.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ltrim.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/rtrim.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/char_length.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/upper.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/lower.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join2.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cast.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/substr.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union1.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat2.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws2.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/check_tsdb.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/spread.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/explain.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timezone.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Now.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Today.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/min.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mode.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/countAlwaysReturnValue.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/first.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_iso8601.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_unixtimestamp.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timetruncate.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/diff.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Timediff.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/json_tag.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/top.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/bottom.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/percentile.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/apercentile.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ceil.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/floor.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/round.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/log.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pow.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sqrt.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sin.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cos.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tan.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arcsin.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arccos.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arctan.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQueryInterval.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity_1.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/avg.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/elapsed.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/csum.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mavg.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sample.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_diff.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/unique.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stateduration.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_stateduration.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/statecount.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tail.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ttl_comment.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_count.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_max.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_min.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_sum.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_spread.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_apercentile.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_avg.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_stddev.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/twa.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_null.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count_partition.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_partition.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_min_last_interval.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row_interval.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tsbsQuery.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/case_when.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/blockSMA.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-21561.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/between.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distinct.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/varchar.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ltrim.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/rtrim.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/char_length.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/upper.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/lower.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join2.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/substr.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/union1.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat2.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/concat_ws2.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/check_tsdb.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/spread.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/explain.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timezone.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Now.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Today.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/min.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mode.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/countAlwaysReturnValue.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/first.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_iso8601.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/To_unixtimestamp.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/timetruncate.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/diff.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/Timediff.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/json_tag.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/top.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/bottom.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/percentile.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/apercentile.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/abs.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ceil.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/floor.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/round.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/log.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pow.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sqrt.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sin.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cos.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tan.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arcsin.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arccos.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/arctan.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/nestedQueryInterval.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stablity_1.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/avg.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/elapsed.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/csum.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/mavg.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sample.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/cast.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_diff.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/unique.py -Q 4 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/stateduration.py -Q 4 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_stateduration.py -Q 4 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/statecount.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tail.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/ttl_comment.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_count.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_max.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_min.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_sum.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_spread.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_apercentile.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_avg.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/distribute_agg_stddev.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/twa.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/function_null.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/count_partition.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_partition.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/max_min_last_interval.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row_interval.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last_row.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/tsbsQuery.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/sml.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/case_when.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_select.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_select.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_select.py -Q 2 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_select.py -Q 3 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/insert_select.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -R -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/blockSMA.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/projectionDesc.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/odbc.py -,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/fill_with_group.py -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-21561.py -Q 4 -,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-20582.py -,,n,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/insertMix.py -N 3 -,,n,system-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/stt.py -N 3 - -#tsim test -,,y,script,./test.sh -f tsim/tmq/basic2Of2ConsOverlap.sim -,,y,script,./test.sh -f tsim/parser/where.sim -,,y,script,./test.sh -f tsim/parser/join_manyblocks.sim -,,y,script,./test.sh -f tsim/dnode/redistribute_vgroup_replica3_v1_leader.sim -,,y,script,./test.sh -f tsim/dnode/redistribute_vgroup_replica3_v1_follower.sim -,,y,script,./test.sh -f tsim/dnode/redistribute_vgroup_replica3_v2.sim -,,y,script,./test.sh -f tsim/dnode/redistribute_vgroup_replica3_v3.sim -,,y,script,./test.sh -f tsim/parser/limit1.sim -,,y,script,./test.sh -f tsim/parser/union.sim -,,y,script,./test.sh -f tsim/parser/commit.sim -,,y,script,./test.sh -f tsim/parser/nestquery.sim -,,n,script,./test.sh -f tsim/valgrind/checkError7.sim -,,y,script,./test.sh -f tsim/parser/groupby.sim -,,y,script,./test.sh -f tsim/parser/sliding.sim -,,y,script,./test.sh -f tsim/dnode/balance2.sim -,,y,script,./test.sh -f tsim/vnode/replica3_repeat.sim -,,y,script,./test.sh -f tsim/parser/col_arithmetic_operation.sim -,,y,script,./test.sh -f tsim/trans/create_db.sim -,,y,script,./test.sh -f tsim/dnode/balance3.sim -,,y,script,./test.sh -f tsim/vnode/replica3_many.sim -,,y,script,./test.sh -f tsim/stable/metrics_idx.sim -,,y,script,./test.sh -f tsim/db/alter_replica_13.sim -,,y,script,./test.sh -f tsim/sync/3Replica1VgElect.sim -,,y,script,./test.sh -f tsim/sync/3Replica5VgElect.sim -,,n,script,./test.sh -f tsim/valgrind/checkError6.sim - -,,y,script,./test.sh -f tsim/user/basic.sim -,,y,script,./test.sh -f tsim/user/password.sim -,,y,script,./test.sh -f tsim/user/whitelist.sim -,,y,script,./test.sh -f tsim/user/privilege_db.sim -,,y,script,./test.sh -f tsim/user/privilege_sysinfo.sim -,,y,script,./test.sh -f tsim/user/privilege_topic.sim -,,y,script,./test.sh -f tsim/user/privilege_table.sim -,,y,script,./test.sh -f tsim/user/privilege_create_db.sim -,,y,script,./test.sh -f tsim/db/alter_option.sim -,,y,script,./test.sh -f tsim/db/alter_replica_31.sim -,,y,script,./test.sh -f tsim/db/basic1.sim -,,y,script,./test.sh -f tsim/db/basic2.sim -,,y,script,./test.sh -f tsim/db/basic3.sim -,,y,script,./test.sh -f tsim/db/basic4.sim -,,y,script,./test.sh -f tsim/db/basic5.sim -,,y,script,./test.sh -f tsim/db/basic6.sim -,,y,script,./test.sh -f tsim/db/commit.sim -,,y,script,./test.sh -f tsim/db/create_all_options.sim -,,y,script,./test.sh -f tsim/db/delete_reuse1.sim -,,y,script,./test.sh -f tsim/db/delete_reuse2.sim -,,y,script,./test.sh -f tsim/db/delete_reusevnode.sim -,,y,script,./test.sh -f tsim/db/delete_reusevnode2.sim -,,y,script,./test.sh -f tsim/db/delete_writing1.sim -,,y,script,./test.sh -f tsim/db/delete_writing2.sim -,,y,script,./test.sh -f tsim/db/error1.sim -,,y,script,./test.sh -f tsim/db/keep.sim -,,y,script,./test.sh -f tsim/db/len.sim -,,y,script,./test.sh -f tsim/db/repeat.sim -,,y,script,./test.sh -f tsim/db/show_create_db.sim -,,y,script,./test.sh -f tsim/db/show_create_table.sim -,,y,script,./test.sh -f tsim/db/tables.sim -,,y,script,./test.sh -f tsim/db/taosdlog.sim -,,y,script,./test.sh -f tsim/db/table_prefix_suffix.sim -,,y,script,./test.sh -f tsim/dnode/balance_replica1.sim -,,y,script,./test.sh -f tsim/dnode/balance_replica3.sim -,,y,script,./test.sh -f tsim/dnode/balance1.sim -,,y,script,./test.sh -f tsim/dnode/balancex.sim -,,y,script,./test.sh -f tsim/dnode/create_dnode.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_mnode.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_qnode_snode.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_vnode_replica1.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_vnode_replica3.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_multi_vnode_replica1.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_has_multi_vnode_replica3.sim -,,y,script,./test.sh -f tsim/dnode/drop_dnode_force.sim -,,y,script,./test.sh -f tsim/dnode/offline_reason.sim -,,y,script,./test.sh -f tsim/dnode/redistribute_vgroup_replica1.sim -,,y,script,./test.sh -f tsim/dnode/vnode_clean.sim -,,y,script,./test.sh -f tsim/dnode/use_dropped_dnode.sim -,,y,script,./test.sh -f tsim/dnode/split_vgroup_replica1.sim -,,y,script,./test.sh -f tsim/dnode/split_vgroup_replica3.sim -,,y,script,./test.sh -f tsim/import/basic.sim -,,y,script,./test.sh -f tsim/import/commit.sim -,,y,script,./test.sh -f tsim/import/large.sim -,,y,script,./test.sh -f tsim/import/replica1.sim -,,y,script,./test.sh -f tsim/insert/backquote.sim -,,y,script,./test.sh -f tsim/insert/basic.sim -,,y,script,./test.sh -f tsim/insert/basic0.sim -,,y,script,./test.sh -f tsim/insert/basic1.sim -,,y,script,./test.sh -f tsim/insert/basic2.sim -,,y,script,./test.sh -f tsim/insert/commit-merge0.sim -,,y,script,./test.sh -f tsim/insert/insert_drop.sim -,,y,script,./test.sh -f tsim/insert/insert_select.sim -,,y,script,./test.sh -f tsim/insert/null.sim -,,y,script,./test.sh -f tsim/insert/query_block1_file.sim -,,y,script,./test.sh -f tsim/insert/query_block1_memory.sim -,,y,script,./test.sh -f tsim/insert/query_block2_file.sim -,,y,script,./test.sh -f tsim/insert/query_block2_memory.sim -,,y,script,./test.sh -f tsim/insert/query_file_memory.sim -,,y,script,./test.sh -f tsim/insert/query_multi_file.sim -,,y,script,./test.sh -f tsim/insert/tcp.sim -,,y,script,./test.sh -f tsim/insert/update0.sim -,,y,script,./test.sh -f tsim/insert/delete0.sim -,,y,script,./test.sh -f tsim/insert/update1_sort_merge.sim -,,y,script,./test.sh -f tsim/insert/update2.sim -,,y,script,./test.sh -f tsim/parser/alter__for_community_version.sim -,,y,script,./test.sh -f tsim/parser/alter_column.sim -,,y,script,./test.sh -f tsim/parser/alter_stable.sim -,,y,script,./test.sh -f tsim/parser/alter.sim -,,y,script,./test.sh -f tsim/parser/alter1.sim -,,y,script,./test.sh -f tsim/parser/auto_create_tb_drop_tb.sim -,,y,script,./test.sh -f tsim/parser/auto_create_tb.sim -,,y,script,./test.sh -f tsim/parser/between_and.sim -,,y,script,./test.sh -f tsim/parser/binary_escapeCharacter.sim -,,y,script,./test.sh -f tsim/parser/columnValue_bigint.sim -,,y,script,./test.sh -f tsim/parser/columnValue_bool.sim -,,y,script,./test.sh -f tsim/parser/columnValue_double.sim -,,y,script,./test.sh -f tsim/parser/columnValue_float.sim -,,y,script,./test.sh -f tsim/parser/columnValue_int.sim -,,y,script,./test.sh -f tsim/parser/columnValue_smallint.sim -,,y,script,./test.sh -f tsim/parser/columnValue_tinyint.sim -,,y,script,./test.sh -f tsim/parser/columnValue_unsign.sim -,,y,script,./test.sh -f tsim/parser/condition.sim -,,y,script,./test.sh -f tsim/parser/condition_scl.sim -,,y,script,./test.sh -f tsim/parser/constCol.sim -,,y,script,./test.sh -f tsim/parser/create_db.sim -,,y,script,./test.sh -f tsim/parser/create_mt.sim -,,y,script,./test.sh -f tsim/parser/create_tb_with_tag_name.sim -,,y,script,./test.sh -f tsim/parser/create_tb.sim -,,y,script,./test.sh -f tsim/parser/dbtbnameValidate.sim -,,y,script,./test.sh -f tsim/parser/distinct.sim -,,y,script,./test.sh -f tsim/parser/fill_us.sim -,,y,script,./test.sh -f tsim/parser/fill.sim -,,y,script,./test.sh -f tsim/parser/first_last.sim -,,y,script,./test.sh -f tsim/parser/fill_stb.sim -,,y,script,./test.sh -f tsim/parser/interp.sim -,,y,script,./test.sh -f tsim/parser/fourArithmetic-basic.sim -,,y,script,./test.sh -f tsim/parser/function.sim -,,y,script,./test.sh -f tsim/parser/groupby-basic.sim -,,y,script,./test.sh -f tsim/parser/having_child.sim -,,y,script,./test.sh -f tsim/parser/having.sim -,,y,script,./test.sh -f tsim/parser/import_commit1.sim -,,y,script,./test.sh -f tsim/parser/import_commit2.sim -,,y,script,./test.sh -f tsim/parser/import_commit3.sim -,,y,script,./test.sh -f tsim/parser/import_file.sim -,,y,script,./test.sh -f tsim/parser/import.sim -,,y,script,./test.sh -f tsim/parser/insert_multiTbl.sim -,,y,script,./test.sh -f tsim/parser/insert_tb.sim -,,y,script,./test.sh -f tsim/parser/join_multitables.sim -,,y,script,./test.sh -f tsim/parser/join_multivnode.sim -,,y,script,./test.sh -f tsim/parser/join.sim -,,y,script,./test.sh -f tsim/parser/last_cache.sim -,,y,script,./test.sh -f tsim/parser/last_groupby.sim -,,y,script,./test.sh -f tsim/parser/lastrow.sim -,,y,script,./test.sh -f tsim/parser/lastrow2.sim -,,y,script,./test.sh -f tsim/parser/like.sim -,,y,script,./test.sh -f tsim/parser/limit.sim -,,y,script,./test.sh -f tsim/parser/mixed_blocks.sim -,,y,script,./test.sh -f tsim/parser/nchar.sim -,,y,script,./test.sh -f tsim/parser/null_char.sim -,,y,script,./test.sh -f tsim/parser/precision_ns.sim -,,y,script,./test.sh -f tsim/parser/projection_limit_offset.sim -,,y,script,./test.sh -f tsim/parser/regex.sim -,,y,script,./test.sh -f tsim/parser/regressiontest.sim -,,y,script,./test.sh -f tsim/parser/select_across_vnodes.sim -,,y,script,./test.sh -f tsim/parser/select_distinct_tag.sim -,,y,script,./test.sh -f tsim/parser/select_from_cache_disk.sim -,,y,script,./test.sh -f tsim/parser/select_with_tags.sim -,,y,script,./test.sh -f tsim/parser/selectResNum.sim -,,y,script,./test.sh -f tsim/parser/set_tag_vals.sim -,,y,script,./test.sh -f tsim/parser/single_row_in_tb.sim -,,y,script,./test.sh -f tsim/parser/slimit_alter_tags.sim -,,y,script,./test.sh -f tsim/parser/slimit.sim -,,y,script,./test.sh -f tsim/parser/slimit1.sim -,,y,script,./test.sh -f tsim/parser/stableOp.sim -,,y,script,./test.sh -f tsim/parser/tags_dynamically_specifiy.sim -,,y,script,./test.sh -f tsim/parser/tags_filter.sim -,,y,script,./test.sh -f tsim/parser/tbnameIn.sim -,,y,script,./test.sh -f tsim/parser/timestamp.sim -,,y,script,./test.sh -f tsim/parser/top_groupby.sim -,,y,script,./test.sh -f tsim/parser/topbot.sim -,,y,script,./test.sh -f tsim/parser/union_sysinfo.sim -,,y,script,./test.sh -f tsim/parser/slimit_limit.sim -,,y,script,./test.sh -f tsim/parser/table_merge_limit.sim -,,y,script,./test.sh -f tsim/query/tagLikeFilter.sim -,,y,script,./test.sh -f tsim/query/charScalarFunction.sim -,,y,script,./test.sh -f tsim/query/explain.sim -,,y,script,./test.sh -f tsim/query/interval-offset.sim -,,y,script,./test.sh -f tsim/query/interval.sim -,,y,script,./test.sh -f tsim/query/scalarFunction.sim -,,y,script,./test.sh -f tsim/query/scalarNull.sim -,,y,script,./test.sh -f tsim/query/session.sim -,,y,script,./test.sh -f tsim/query/udf.sim -,,n,script,./test.sh -f tsim/query/udfpy.sim -,,y,script,./test.sh -f tsim/query/udf_with_const.sim -,,y,script,./test.sh -f tsim/query/join_interval.sim -,,y,script,./test.sh -f tsim/query/join_pk.sim -,,y,script,./test.sh -f tsim/query/unionall_as_table.sim -,,y,script,./test.sh -f tsim/query/multi_order_by.sim -,,y,script,./test.sh -f tsim/query/sys_tbname.sim -,,y,script,./test.sh -f tsim/query/groupby.sim -,,y,script,./test.sh -f tsim/query/groupby_distinct.sim -,,y,script,./test.sh -f tsim/query/event.sim -,,y,script,./test.sh -f tsim/query/forceFill.sim -,,y,script,./test.sh -f tsim/query/emptyTsRange.sim -,,y,script,./test.sh -f tsim/query/emptyTsRange_scl.sim -,,y,script,./test.sh -f tsim/query/partitionby.sim -,,y,script,./test.sh -f tsim/query/tableCount.sim -,,y,script,./test.sh -f tsim/query/tag_scan.sim -,,y,script,./test.sh -f tsim/query/nullColSma.sim -,,y,script,./test.sh -f tsim/query/bug3398.sim -,,y,script,./test.sh -f tsim/query/explain_tsorder.sim -,,y,script,./test.sh -f tsim/qnode/basic1.sim -,,y,script,./test.sh -f tsim/snode/basic1.sim -,,y,script,./test.sh -f tsim/mnode/basic1.sim -,,y,script,./test.sh -f tsim/mnode/basic2.sim -,,y,script,./test.sh -f tsim/mnode/basic3.sim -,,y,script,./test.sh -f tsim/mnode/basic4.sim -,,y,script,./test.sh -f tsim/mnode/basic5.sim -,,y,script,./test.sh -f tsim/show/basic.sim -,,y,script,./test.sh -f tsim/table/autocreate.sim -,,y,script,./test.sh -f tsim/table/basic1.sim -,,y,script,./test.sh -f tsim/table/basic2.sim -,,y,script,./test.sh -f tsim/table/basic3.sim -,,y,script,./test.sh -f tsim/table/bigint.sim -,,y,script,./test.sh -f tsim/table/binary.sim -,,y,script,./test.sh -f tsim/table/bool.sim -,,y,script,./test.sh -f tsim/table/column_name.sim -,,y,script,./test.sh -f tsim/table/column_num.sim -,,y,script,./test.sh -f tsim/table/column_value.sim -,,y,script,./test.sh -f tsim/table/column2.sim -,,y,script,./test.sh -f tsim/table/createmulti.sim -,,y,script,./test.sh -f tsim/table/date.sim -,,y,script,./test.sh -f tsim/table/db.table.sim -,,y,script,./test.sh -f tsim/table/delete_reuse1.sim -,,y,script,./test.sh -f tsim/table/delete_reuse2.sim -,,y,script,./test.sh -f tsim/table/delete_writing.sim -,,y,script,./test.sh -f tsim/table/describe.sim -,,y,script,./test.sh -f tsim/table/double.sim -,,y,script,./test.sh -f tsim/table/float.sim -,,y,script,./test.sh -f tsim/table/hash.sim -,,y,script,./test.sh -f tsim/table/int.sim -,,y,script,./test.sh -f tsim/table/limit.sim -,,y,script,./test.sh -f tsim/table/smallint.sim -,,y,script,./test.sh -f tsim/table/table_len.sim -,,y,script,./test.sh -f tsim/table/table.sim -,,y,script,./test.sh -f tsim/table/tinyint.sim -,,y,script,./test.sh -f tsim/table/vgroup.sim -,,n,script,./test.sh -f tsim/stream/basic0.sim -g -,,y,script,./test.sh -f tsim/stream/basic1.sim -,,y,script,./test.sh -f tsim/stream/basic2.sim -,,y,script,./test.sh -f tsim/stream/basic3.sim -,,y,script,./test.sh -f tsim/stream/basic4.sim -,,y,script,./test.sh -f tsim/stream/checkpointInterval0.sim -,,y,script,./test.sh -f tsim/stream/checkStreamSTable1.sim -,,y,script,./test.sh -f tsim/stream/checkStreamSTable.sim -,,y,script,./test.sh -f tsim/stream/deleteInterval.sim -,,y,script,./test.sh -f tsim/stream/deleteSession.sim -,,y,script,./test.sh -f tsim/stream/deleteState.sim -,,y,script,./test.sh -f tsim/stream/distributeInterval0.sim -,,y,script,./test.sh -f tsim/stream/distributeIntervalRetrive0.sim -,,y,script,./test.sh -f tsim/stream/distributeSession0.sim -,,y,script,./test.sh -f tsim/stream/drop_stream.sim -,,y,script,./test.sh -f tsim/stream/fillHistoryBasic1.sim -,,y,script,./test.sh -f tsim/stream/fillHistoryBasic2.sim -,,y,script,./test.sh -f tsim/stream/fillHistoryBasic3.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalDelete0.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalDelete1.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalLinear.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalPartitionBy.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalPrevNext1.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalPrevNext.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalRange.sim -,,y,script,./test.sh -f tsim/stream/fillIntervalValue.sim -,,y,script,./test.sh -f tsim/stream/ignoreCheckUpdate.sim -,,y,script,./test.sh -f tsim/stream/ignoreExpiredData.sim -,,y,script,./test.sh -f tsim/stream/partitionby1.sim -,,y,script,./test.sh -f tsim/stream/partitionbyColumnInterval.sim -,,y,script,./test.sh -f tsim/stream/partitionbyColumnSession.sim -,,y,script,./test.sh -f tsim/stream/partitionbyColumnState.sim -,,y,script,./test.sh -f tsim/stream/partitionby.sim -,,y,script,./test.sh -f tsim/stream/pauseAndResume.sim -,,y,script,./test.sh -f tsim/stream/schedSnode.sim -,,y,script,./test.sh -f tsim/stream/session0.sim -,,y,script,./test.sh -f tsim/stream/session1.sim -,,y,script,./test.sh -f tsim/stream/sliding.sim -,,y,script,./test.sh -f tsim/stream/state0.sim -,,y,script,./test.sh -f tsim/stream/state1.sim -,,y,script,./test.sh -f tsim/stream/triggerInterval0.sim -,,y,script,./test.sh -f tsim/stream/triggerSession0.sim -,,y,script,./test.sh -f tsim/stream/udTableAndTag0.sim -,,y,script,./test.sh -f tsim/stream/udTableAndTag1.sim -,,y,script,./test.sh -f tsim/stream/udTableAndTag2.sim -,,y,script,./test.sh -f tsim/stream/windowClose.sim -,,y,script,./test.sh -f tsim/trans/lossdata1.sim -,,y,script,./test.sh -f tsim/tmq/basic1.sim -,,y,script,./test.sh -f tsim/tmq/basic2.sim -,,y,script,./test.sh -f tsim/tmq/basic3.sim -,,y,script,./test.sh -f tsim/tmq/basic4.sim -,,y,script,./test.sh -f tsim/tmq/basic1Of2Cons.sim -,,y,script,./test.sh -f tsim/tmq/basic2Of2Cons.sim -,,y,script,./test.sh -f tsim/tmq/basic3Of2Cons.sim -,,y,script,./test.sh -f tsim/tmq/basic4Of2Cons.sim -,,y,script,./test.sh -f tsim/tmq/topic.sim -,,y,script,./test.sh -f tsim/tmq/snapshot.sim -,,y,script,./test.sh -f tsim/tmq/snapshot1.sim -,,y,script,./test.sh -f tsim/stable/alter_comment.sim -,,y,script,./test.sh -f tsim/stable/alter_count.sim -,,y,script,./test.sh -f tsim/stable/alter_import.sim -,,y,script,./test.sh -f tsim/stable/alter_insert1.sim -,,y,script,./test.sh -f tsim/stable/alter_insert2.sim -,,y,script,./test.sh -f tsim/stable/alter_metrics.sim -,,y,script,./test.sh -f tsim/stable/column_add.sim -,,y,script,./test.sh -f tsim/stable/column_drop.sim -,,y,script,./test.sh -f tsim/stable/column_modify.sim -,,y,script,./test.sh -f tsim/stable/disk.sim -,,y,script,./test.sh -f tsim/stable/dnode3.sim -,,y,script,./test.sh -f tsim/stable/metrics.sim -,,y,script,./test.sh -f tsim/stable/refcount.sim -,,y,script,./test.sh -f tsim/stable/tag_add.sim -,,y,script,./test.sh -f tsim/stable/tag_drop.sim -,,y,script,./test.sh -f tsim/stable/tag_filter.sim -,,y,script,./test.sh -f tsim/stable/tag_modify.sim -,,y,script,./test.sh -f tsim/stable/tag_rename.sim -,,y,script,./test.sh -f tsim/stable/values.sim -,,y,script,./test.sh -f tsim/stable/vnode3.sim -,,n,script,./test.sh -f tsim/sma/drop_sma.sim -,,y,script,./test.sh -f tsim/sma/sma_leak.sim -,,y,script,./test.sh -f tsim/sma/tsmaCreateInsertQuery.sim -,,y,script,./test.sh -f tsim/sma/rsmaCreateInsertQuery.sim -,,y,script,./test.sh -f tsim/sma/rsmaPersistenceRecovery.sim -,,n,script,./test.sh -f tsim/valgrind/checkError1.sim -,,n,script,./test.sh -f tsim/valgrind/checkError2.sim -,,n,script,./test.sh -f tsim/valgrind/checkError3.sim -,,n,script,./test.sh -f tsim/valgrind/checkError4.sim -,,n,script,./test.sh -f tsim/valgrind/checkError5.sim -,,n,script,./test.sh -f tsim/valgrind/checkError8.sim -,,n,script,./test.sh -f tsim/valgrind/checkUdf.sim -,,y,script,./test.sh -f tsim/vnode/replica3_basic.sim -,,y,script,./test.sh -f tsim/vnode/replica3_vgroup.sim -,,y,script,./test.sh -f tsim/vnode/replica3_import.sim -,,y,script,./test.sh -f tsim/vnode/stable_balance_replica1.sim -,,y,script,./test.sh -f tsim/vnode/stable_dnode2_stop.sim -,,y,script,./test.sh -f tsim/vnode/stable_dnode2.sim -,,y,script,./test.sh -f tsim/vnode/stable_dnode3.sim -,,y,script,./test.sh -f tsim/vnode/stable_replica3_dnode6.sim -,,y,script,./test.sh -f tsim/vnode/stable_replica3_vnode3.sim -,,y,script,./test.sh -f tsim/sync/oneReplica1VgElect.sim -,,y,script,./test.sh -f tsim/sync/oneReplica5VgElect.sim -,,y,script,./test.sh -f tsim/catalog/alterInCurrent.sim -,,y,script,./test.sh -f tsim/scalar/in.sim -,,y,script,./test.sh -f tsim/scalar/scalar.sim -,,y,script,./test.sh -f tsim/scalar/filter.sim -,,y,script,./test.sh -f tsim/scalar/caseWhen.sim -,,y,script,./test.sh -f tsim/scalar/tsConvert.sim -,,y,script,./test.sh -f tsim/alter/cached_schema_after_alter.sim -,,y,script,./test.sh -f tsim/alter/dnode.sim -,,y,script,./test.sh -f tsim/alter/table.sim -,,y,script,./test.sh -f tsim/cache/new_metrics.sim -,,y,script,./test.sh -f tsim/cache/restart_table.sim -,,y,script,./test.sh -f tsim/cache/restart_metrics.sim -,,y,script,./test.sh -f tsim/column/commit.sim -,,y,script,./test.sh -f tsim/column/metrics.sim -,,y,script,./test.sh -f tsim/column/table.sim -,,y,script,./test.sh -f tsim/compress/commitlog.sim -,,y,script,./test.sh -f tsim/compress/compress2.sim -,,y,script,./test.sh -f tsim/compress/compress.sim -,,y,script,./test.sh -f tsim/compress/uncompress.sim -,,y,script,./test.sh -f tsim/compute/avg.sim -,,y,script,./test.sh -f tsim/compute/block_dist.sim -,,y,script,./test.sh -f tsim/compute/bottom.sim -,,y,script,./test.sh -f tsim/compute/count.sim -,,y,script,./test.sh -f tsim/compute/diff.sim -,,y,script,./test.sh -f tsim/compute/diff2.sim -,,y,script,./test.sh -f tsim/compute/first.sim -,,y,script,./test.sh -f tsim/compute/interval.sim -,,y,script,./test.sh -f tsim/compute/last_row.sim -,,y,script,./test.sh -f tsim/compute/last.sim -,,y,script,./test.sh -f tsim/compute/leastsquare.sim -,,y,script,./test.sh -f tsim/compute/max.sim -,,y,script,./test.sh -f tsim/compute/min.sim -,,y,script,./test.sh -f tsim/compute/null.sim -,,y,script,./test.sh -f tsim/compute/percentile.sim -,,y,script,./test.sh -f tsim/compute/stddev.sim -,,y,script,./test.sh -f tsim/compute/sum.sim -,,y,script,./test.sh -f tsim/compute/top.sim -,,y,script,./test.sh -f tsim/field/2.sim -,,y,script,./test.sh -f tsim/field/3.sim -,,y,script,./test.sh -f tsim/field/4.sim -,,y,script,./test.sh -f tsim/field/5.sim -,,y,script,./test.sh -f tsim/field/6.sim -,,y,script,./test.sh -f tsim/field/binary.sim -,,y,script,./test.sh -f tsim/field/bigint.sim -,,y,script,./test.sh -f tsim/field/bool.sim -,,y,script,./test.sh -f tsim/field/double.sim -,,y,script,./test.sh -f tsim/field/float.sim -,,y,script,./test.sh -f tsim/field/int.sim -,,y,script,./test.sh -f tsim/field/single.sim -,,y,script,./test.sh -f tsim/field/smallint.sim -,,y,script,./test.sh -f tsim/field/tinyint.sim -,,y,script,./test.sh -f tsim/field/unsigined_bigint.sim -,,y,script,./test.sh -f tsim/vector/metrics_field.sim -,,y,script,./test.sh -f tsim/vector/metrics_mix.sim -,,y,script,./test.sh -f tsim/vector/metrics_query.sim -,,y,script,./test.sh -f tsim/vector/metrics_tag.sim -,,y,script,./test.sh -f tsim/vector/metrics_time.sim -,,y,script,./test.sh -f tsim/vector/multi.sim -,,y,script,./test.sh -f tsim/vector/single.sim -,,y,script,./test.sh -f tsim/vector/table_field.sim -,,y,script,./test.sh -f tsim/vector/table_mix.sim -,,y,script,./test.sh -f tsim/vector/table_query.sim -,,y,script,./test.sh -f tsim/vector/table_time.sim -,,y,script,./test.sh -f tsim/wal/kill.sim -,,y,script,./test.sh -f tsim/tag/3.sim -,,y,script,./test.sh -f tsim/tag/4.sim -,,y,script,./test.sh -f tsim/tag/5.sim -,,y,script,./test.sh -f tsim/tag/6.sim -,,y,script,./test.sh -f tsim/tag/add.sim -,,y,script,./test.sh -f tsim/tag/bigint.sim -,,y,script,./test.sh -f tsim/tag/binary_binary.sim -,,y,script,./test.sh -f tsim/tag/binary.sim -,,y,script,./test.sh -f tsim/tag/bool_binary.sim -,,y,script,./test.sh -f tsim/tag/bool_int.sim -,,y,script,./test.sh -f tsim/tag/bool.sim -,,y,script,./test.sh -f tsim/tag/change.sim -,,y,script,./test.sh -f tsim/tag/column.sim -,,y,script,./test.sh -f tsim/tag/commit.sim -,,y,script,./test.sh -f tsim/tag/create.sim -,,y,script,./test.sh -f tsim/tag/delete.sim -,,y,script,./test.sh -f tsim/tag/double.sim -,,y,script,./test.sh -f tsim/tag/filter.sim -,,y,script,./test.sh -f tsim/tag/float.sim -,,y,script,./test.sh -f tsim/tag/int_binary.sim -,,y,script,./test.sh -f tsim/tag/int_float.sim -,,y,script,./test.sh -f tsim/tag/int.sim -,,y,script,./test.sh -f tsim/tag/set.sim -,,y,script,./test.sh -f tsim/tag/smallint.sim -,,y,script,./test.sh -f tsim/tag/tinyint.sim -,,y,script,./test.sh -f tsim/tag/drop_tag.sim -,,y,script,./test.sh -f tsim/tag/tbNameIn.sim -,,y,script,./test.sh -f tmp/monitor.sim -,,y,script,./test.sh -f tsim/tagindex/add_index.sim -,,n,script,./test.sh -f tsim/tagindex/sma_and_tag_index.sim - - -#develop test -,,n,develop-test,python3 ./test.py -f 2-query/table_count_scan.py -,,n,develop-test,python3 ./test.py -f 2-query/show_create_db.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/auto_create_table_json.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/custom_col_tag.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/default_json.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/demo.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/insert_alltypes_json.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/invalid_commandline.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/json_tag.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/query_json.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/sample_csv_json.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/sml_json_alltypes.py -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestQueryWithJson.py -R -,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/telnet_tcp.py -R - -#docs-examples test -,,n,docs-examples-test,bash python.sh -,,n,docs-examples-test,bash node.sh -,,n,docs-examples-test,bash csharp.sh -,,n,docs-examples-test,bash jdbc.sh -,,n,docs-examples-test,bash go.sh -,,n,docs-examples-test,bash test_R.sh From 1dbd322fa0f1e592fd50b04ef69996fab3a37aef Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 13 Sep 2023 11:42:09 +0800 Subject: [PATCH 2/7] fix:remove useless code --- include/common/tmsg.h | 26 ------------------- source/common/src/tmsg.c | 36 -------------------------- source/dnode/mnode/impl/src/mndTopic.c | 6 ----- source/dnode/vnode/src/inc/tq.h | 4 --- 4 files changed, 72 deletions(-) diff --git a/include/common/tmsg.h b/include/common/tmsg.h index bb843ced91..2be6aca97e 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -3132,32 +3132,6 @@ int32_t tEncodeSTqCheckInfo(SEncoder* pEncoder, const STqCheckInfo* pInfo); int32_t tDecodeSTqCheckInfo(SDecoder* pDecoder, STqCheckInfo* pInfo); void tDeleteSTqCheckInfo(STqCheckInfo* pInfo); -typedef struct { - char topic[TSDB_TOPIC_FNAME_LEN]; -} STqDelCheckInfoReq; - -typedef struct { - int32_t vgId; - int64_t offset; - char topicName[TSDB_TOPIC_FNAME_LEN]; - char cgroup[TSDB_CGROUP_LEN]; -} SMqOffset; - -typedef struct { - int64_t consumerId; - int32_t num; - SMqOffset* offsets; -} SMqCMCommitOffsetReq; - -typedef struct { - int32_t reserved; -} SMqCMCommitOffsetRsp; - -int32_t tEncodeSMqOffset(SEncoder* encoder, const SMqOffset* pOffset); -int32_t tDecodeSMqOffset(SDecoder* decoder, SMqOffset* pOffset); -int32_t tEncodeSMqCMCommitOffsetReq(SEncoder* encoder, const SMqCMCommitOffsetReq* pReq); -int32_t tDecodeSMqCMCommitOffsetReq(SDecoder* decoder, SMqCMCommitOffsetReq* pReq); - // tqOffset enum { TMQ_OFFSET__RESET_NONE = -3, diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 0553f73bb3..49b1e4f6f4 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -5174,43 +5174,7 @@ int32_t tDeserializeSServerStatusRsp(void *buf, int32_t bufLen, SServerStatusRsp tDecoderClear(&decoder); return 0; } -int32_t tEncodeSMqOffset(SEncoder *encoder, const SMqOffset *pOffset) { - if (tEncodeI32(encoder, pOffset->vgId) < 0) return -1; - if (tEncodeI64(encoder, pOffset->offset) < 0) return -1; - if (tEncodeCStr(encoder, pOffset->topicName) < 0) return -1; - if (tEncodeCStr(encoder, pOffset->cgroup) < 0) return -1; - return encoder->pos; -} -int32_t tDecodeSMqOffset(SDecoder *decoder, SMqOffset *pOffset) { - if (tDecodeI32(decoder, &pOffset->vgId) < 0) return -1; - if (tDecodeI64(decoder, &pOffset->offset) < 0) return -1; - if (tDecodeCStrTo(decoder, pOffset->topicName) < 0) return -1; - if (tDecodeCStrTo(decoder, pOffset->cgroup) < 0) return -1; - return 0; -} - -int32_t tEncodeSMqCMCommitOffsetReq(SEncoder *encoder, const SMqCMCommitOffsetReq *pReq) { - if (tStartEncode(encoder) < 0) return -1; - if (tEncodeI32(encoder, pReq->num) < 0) return -1; - for (int32_t i = 0; i < pReq->num; i++) { - tEncodeSMqOffset(encoder, &pReq->offsets[i]); - } - tEndEncode(encoder); - return encoder->pos; -} - -int32_t tDecodeSMqCMCommitOffsetReq(SDecoder *decoder, SMqCMCommitOffsetReq *pReq) { - if (tStartDecode(decoder) < 0) return -1; - if (tDecodeI32(decoder, &pReq->num) < 0) return -1; - pReq->offsets = (SMqOffset *)tDecoderMalloc(decoder, sizeof(SMqOffset) * pReq->num); - if (pReq->offsets == NULL) return -1; - for (int32_t i = 0; i < pReq->num; i++) { - tDecodeSMqOffset(decoder, &pReq->offsets[i]); - } - tEndDecode(decoder); - return 0; -} int32_t tSerializeSExplainRsp(void *buf, int32_t bufLen, SExplainRsp *pRsp) { SEncoder encoder = {0}; tEncoderInit(&encoder, buf, bufLen); diff --git a/source/dnode/mnode/impl/src/mndTopic.c b/source/dnode/mnode/impl/src/mndTopic.c index a9fb5096fb..94fd6027c0 100644 --- a/source/dnode/mnode/impl/src/mndTopic.c +++ b/source/dnode/mnode/impl/src/mndTopic.c @@ -485,12 +485,6 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq * topicObj.astLen = strlen(pCreate->ast) + 1; } } - /*} else if (pCreate->subType == TOPIC_SUB_TYPE__DB) {*/ - /*topicObj.ast = NULL;*/ - /*topicObj.astLen = 0;*/ - /*topicObj.physicalPlan = NULL;*/ - /*topicObj.withTbName = 1;*/ - /*topicObj.withSchema = 1;*/ SSdbRaw *pCommitRaw = mndTopicActionEncode(&topicObj); if (pCommitRaw == NULL || mndTransAppendCommitlog(pTrans, pCommitRaw) != 0) { diff --git a/source/dnode/vnode/src/inc/tq.h b/source/dnode/vnode/src/inc/tq.h index c6a424666c..72310f6b19 100644 --- a/source/dnode/vnode/src/inc/tq.h +++ b/source/dnode/vnode/src/inc/tq.h @@ -88,14 +88,10 @@ typedef struct { int64_t snapshotVer; SWalReader* pWalReader; SWalRef* pRef; - // STqPushHandle pushHandle; // push STqExecHandle execHandle; // exec SRpcMsg* msg; tq_handle_status status; } STqHandle; -typedef struct { - int64_t snapshotVer; -} SStreamHandle; struct STQ { SVnode* pVnode; From f7291504979a49a89254fb45e5f77d3f50d651f6 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 13 Sep 2023 18:32:45 +0800 Subject: [PATCH 3/7] fix:opti poll callbak logic & send epoch as -1 to get epset if vnode transformed --- include/common/tcommon.h | 4 +- source/client/src/clientTmq.c | 152 +++++++++------------- source/dnode/mnode/impl/src/mndConsumer.c | 9 ++ 3 files changed, 70 insertions(+), 95 deletions(-) diff --git a/include/common/tcommon.h b/include/common/tcommon.h index 8482ba8a78..6f4f15d1e8 100644 --- a/include/common/tcommon.h +++ b/include/common/tcommon.h @@ -135,13 +135,11 @@ static inline int STupleKeyCmpr(const void* pKey1, int kLen1, const void* pKey2, } enum { - TMQ_MSG_TYPE__DUMMY = 0, - TMQ_MSG_TYPE__POLL_DATA_RSP, + TMQ_MSG_TYPE__POLL_DATA_RSP = 0, TMQ_MSG_TYPE__POLL_META_RSP, TMQ_MSG_TYPE__EP_RSP, TMQ_MSG_TYPE__POLL_DATA_META_RSP, TMQ_MSG_TYPE__WALINFO_RSP, - TMQ_MSG_TYPE__END_RSP, }; enum { diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index d804a83d51..bede846762 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -40,11 +40,13 @@ volatile int32_t tmqInitRes = 0; // initialize rsp code static struct SMqMgmt tmqMgmt = {0}; typedef struct { + int32_t code; int8_t tmqRspType; int32_t epoch; } SMqRspWrapper; typedef struct { + int32_t code; int8_t tmqRspType; int32_t epoch; SMqAskEpRsp msg; @@ -131,7 +133,6 @@ enum { enum { TMQ_DELAYED_TASK__ASK_EP = 1, - TMQ_DELAYED_TASK__REPORT, TMQ_DELAYED_TASK__COMMIT, }; @@ -163,6 +164,7 @@ typedef struct { } SMqClientTopic; typedef struct { + int32_t code; int8_t tmqRspType; int32_t epoch; // epoch can be used to guard the vgHandle int32_t vgId; @@ -255,7 +257,7 @@ static int32_t makeTopicVgroupKey(char* dst, const char* topicName, int32_t vg); static int32_t tmqCommitDone(SMqCommitCbParamSet* pParamSet); static int32_t doSendCommitMsg(tmq_t* tmq, int32_t vgId, SEpSet* epSet, STqOffsetVal* offset, const char* pTopicName, SMqCommitCbParamSet* pParamSet); static void commitRspCountDown(SMqCommitCbParamSet* pParamSet, int64_t consumerId, const char* pTopic, int32_t vgId); -static void askEp(tmq_t* pTmq, void* param, bool sync); +static void askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpset); tmq_conf_t* tmq_conf_new() { tmq_conf_t* conf = taosMemoryCalloc(1, sizeof(tmq_conf_t)); @@ -845,7 +847,7 @@ int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { while (pTaskType != NULL) { if (*pTaskType == TMQ_DELAYED_TASK__ASK_EP) { - askEp(pTmq, NULL, false); + askEp(pTmq, NULL, false, false); int64_t* pRefId = taosMemoryMalloc(sizeof(int64_t)); *pRefId = pTmq->refId; @@ -862,7 +864,8 @@ int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { tscDebug("consumer:0x%" PRIx64 " next commit to vnode(s) in %.2fs", pTmq->consumerId, pTmq->autoCommitInterval / 1000.0); taosTmrReset(tmqAssignDelayedCommitTask, pTmq->autoCommitInterval, pRefId, tmqMgmt.timer, &pTmq->commitTimer); - } else if (*pTaskType == TMQ_DELAYED_TASK__REPORT) { + } else { + tscError("consumer:0x%" PRIx64 " invalid task type:%d", pTmq->consumerId, *pTaskType); } taosFreeQitem(pTaskType); @@ -874,9 +877,7 @@ int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { } static void tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { - if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__END_RSP) { - // do nothing - } else if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { + if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { SMqAskEpRspWrapper* pEpRspWrapper = (SMqAskEpRspWrapper*)rspWrapper; tDeleteSMqAskEpRsp(&pEpRspWrapper->msg); } else if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_DATA_RSP) { @@ -1300,33 +1301,19 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) { uint64_t requestId = pParam->requestId; tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, refId); if (tmq == NULL) { - taosMemoryFree(pParam); - taosMemoryFreeClear(pMsg->pData); - taosMemoryFreeClear(pMsg->pEpSet); - terrno = TSDB_CODE_TMQ_CONSUMER_CLOSED; - return -1; + code = TSDB_CODE_TMQ_CONSUMER_CLOSED; + goto FAIL; } - if (code != 0) { - if (code == TSDB_CODE_TMQ_CONSUMER_MISMATCH) { - atomic_store_8(&tmq->status, TMQ_CONSUMER_STATUS__RECOVER); - tscDebug("consumer:0x%" PRIx64 " wait for the re-balance, set status to be RECOVER", - tmq->consumerId); - } else if (code == TSDB_CODE_TQ_NO_COMMITTED_OFFSET) { - SMqPollRspWrapper* pRspWrapper = taosAllocateQitem(sizeof(SMqPollRspWrapper), DEF_QITEM, 0); - if (pRspWrapper == NULL) { - tscWarn("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since out of memory, reqId:0x%" PRIx64, - tmq->consumerId, vgId, requestId); - goto END; - } - - pRspWrapper->tmqRspType = TMQ_MSG_TYPE__END_RSP; - taosWriteQitem(tmq->mqueue, pRspWrapper); - } else{ - tscError("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since %s, reqId:0x%" PRIx64, tmq->consumerId, - vgId, tstrerror(code), requestId); - } + SMqPollRspWrapper* pRspWrapper = taosAllocateQitem(sizeof(SMqPollRspWrapper), DEF_QITEM, 0); + if (pRspWrapper == NULL) { + tscWarn("consumer:0x%" PRIx64 " msg discard from vgId:%d, since out of memory", tmq->consumerId, vgId); + taosReleaseRef(tmqMgmt.rsetId, refId); + code = TSDB_CODE_OUT_OF_MEMORY; + goto FAIL; + } + if(code != 0){ goto END; } @@ -1335,30 +1322,19 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) { if (msgEpoch < clientEpoch) { // do not write into queue since updating epoch reset tscWarn("consumer:0x%" PRIx64 - " msg discard from vgId:%d since from earlier epoch, rsp epoch %d, current epoch %d, reqId:0x%" PRIx64, + " msg discard from vgId:%d since from earlier epoch, rsp epoch %d, current epoch %d, reqId:0x%" PRIx64, tmq->consumerId, vgId, msgEpoch, clientEpoch, requestId); code = -1; goto END; } ASSERT(msgEpoch == clientEpoch); - // handle meta rsp int8_t rspType = ((SMqRspHead*)pMsg->pData)->mqMsgType; - - SMqPollRspWrapper* pRspWrapper = taosAllocateQitem(sizeof(SMqPollRspWrapper), DEF_QITEM, 0); - if (pRspWrapper == NULL) { - tscWarn("consumer:0x%" PRIx64 " msg discard from vgId:%d, since out of memory", tmq->consumerId, vgId); - code = TSDB_CODE_OUT_OF_MEMORY; - goto END; - } - pRspWrapper->tmqRspType = rspType; pRspWrapper->reqId = requestId; pRspWrapper->pEpset = pMsg->pEpSet; pMsg->pEpSet = NULL; - pRspWrapper->vgId = vgId; - strcpy(pRspWrapper->topicName, pParam->topicName); if (rspType == TMQ_MSG_TYPE__POLL_DATA_RSP) { SDecoder decoder; @@ -1387,22 +1363,22 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) { tscError("consumer:0x%" PRIx64 " invalid rsp msg received, type:%d ignored", tmq->consumerId, rspType); } +END: + pRspWrapper->code = code; + pRspWrapper->vgId = vgId; + strcpy(pRspWrapper->topicName, pParam->topicName); taosWriteQitem(tmq->mqueue, pRspWrapper); int32_t total = taosQueueItemSize(tmq->mqueue); tscDebug("consumer:0x%" PRIx64 " put poll res into mqueue, type:%d, vgId:%d, total in queue:%d, reqId:0x%" PRIx64, tmq->consumerId, rspType, vgId, total, requestId); - -END: - if(code != 0){ - setVgIdle(tmq, pParam->topicName, vgId); - } - - tsem_post(&tmq->rspSem); taosReleaseRef(tmqMgmt.rsetId, refId); + +FAIL: + tsem_post(&tmq->rspSem); taosMemoryFree(pParam); - taosMemoryFreeClear(pMsg->pData); - taosMemoryFreeClear(pMsg->pEpSet); + if(pMsg) taosMemoryFreeClear(pMsg->pData); + if(pMsg) taosMemoryFreeClear(pMsg->pEpSet); return code; } @@ -1473,7 +1449,9 @@ static bool doUpdateLocalEp(tmq_t* tmq, int32_t epoch, const SMqAskEpRsp* pRsp) bool set = false; int32_t topicNumGet = taosArrayGetSize(pRsp->topics); - if (epoch <= tmq->epoch) { + if (topicNumGet <= 0) { + tscInfo("consumer:0x%" PRIx64 " no update ep epoch from %d to epoch %d, incoming topics:%d", + tmq->consumerId, tmq->epoch, epoch, topicNumGet); return false; } @@ -1675,10 +1653,9 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p int64_t transporterId = 0; char offsetFormatBuf[TSDB_OFFSET_LEN] = {0}; tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pVg->offsetInfo.endOffset); - - tscDebug("consumer:0x%" PRIx64 " send poll to %s vgId:%d, epoch %d, req:%s, reqId:0x%" PRIx64, pTmq->consumerId, - pTopic->topicName, pVg->vgId, pTmq->epoch, offsetFormatBuf, req.reqId); code = asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &pVg->epSet, &transporterId, sendInfo); + tscDebug("consumer:0x%" PRIx64 " send poll to %s vgId:%d, code:%d, epoch %d, req:%s, reqId:0x%" PRIx64, pTmq->consumerId, + pTopic->topicName, pVg->vgId, code, pTmq->epoch, offsetFormatBuf, req.reqId); if(code != 0){ goto FAIL; } @@ -1688,11 +1665,9 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p pTmq->pollCnt++; return 0; - FAIL: - taosMemoryFreeClear(pParam); taosMemoryFreeClear(msg); - return code; + return tmqPollCb(pParam, NULL, code); } // broadcast the poll request to all related vnodes @@ -1729,8 +1704,6 @@ static int32_t tmqPollImpl(tmq_t* tmq, int64_t timeout) { atomic_store_32(&pVg->vgSkipCnt, 0); code = doTmqPollImpl(tmq, pTopic, pVg, timeout); if (code != TSDB_CODE_SUCCESS) { - atomic_store_32(&pVg->vgStatus, TMQ_VG_STATUS__IDLE); - tsem_post(&tmq->rspSem); goto end; } } @@ -1742,22 +1715,6 @@ end: return code; } -static int32_t tmqHandleEpRsp(tmq_t* tmq, SMqRspWrapper* rspWrapper) { - if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { - if (rspWrapper->epoch > atomic_load_32(&tmq->epoch)) { - SMqAskEpRspWrapper* pEpRspWrapper = (SMqAskEpRspWrapper*)rspWrapper; - SMqAskEpRsp* rspMsg = &pEpRspWrapper->msg; - doUpdateLocalEp(tmq, rspWrapper->epoch, rspMsg); - tDeleteSMqAskEpRsp(rspMsg); - } else { - tmqFreeRspWrapper(rspWrapper); - } - } else { - return -1; - } - return 0; -} - static void updateVgInfo(SMqClientVg* pVg, STqOffsetVal* reqOffset, STqOffsetVal* rspOffset, int64_t sver, int64_t ever, int64_t consumerId, bool hasData){ if (!pVg->seekUpdated) { tscDebug("consumer:0x%" PRIx64" local offset is update, since seekupdate not set", consumerId); @@ -1792,11 +1749,28 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { tscDebug("consumer:0x%" PRIx64 " handle rsp, type:%d", tmq->consumerId, pRspWrapper->tmqRspType); - if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__END_RSP) { + if (pRspWrapper->code != 0) { + SMqPollRspWrapper* pollRspWrapper = (SMqPollRspWrapper*)pRspWrapper; + if (pRspWrapper->code == TSDB_CODE_TMQ_CONSUMER_MISMATCH) { + atomic_store_8(&tmq->status, TMQ_CONSUMER_STATUS__RECOVER); + tscDebug("consumer:0x%" PRIx64 " wait for the re-balance, set status to be RECOVER", tmq->consumerId); + } else if (pRspWrapper->code == TSDB_CODE_TQ_NO_COMMITTED_OFFSET) { + taosFreeQitem(pRspWrapper); + terrno = pRspWrapper->code; + tscError("consumer:0x%" PRIx64 " unexpected rsp from poll, code:%s", tmq->consumerId, tstrerror(pRspWrapper->code)); + return NULL; + } else{ + if(pRspWrapper->code == TSDB_CODE_VND_INVALID_VGROUP_ID){ // for vnode transform + askEp(tmq, NULL, false, true); + } + tscError("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since %s", tmq->consumerId, pollRspWrapper->vgId, tstrerror(pRspWrapper->code)); + taosWLockLatch(&tmq->lock); + SMqClientVg* pVg = getVgInfo(tmq, pollRspWrapper->topicName, pollRspWrapper->vgId); + pVg->emptyBlockReceiveTs = taosGetTimestampMs(); + taosWUnLockLatch(&tmq->lock); + } + setVgIdle(tmq, pollRspWrapper->topicName, pollRspWrapper->vgId); taosFreeQitem(pRspWrapper); - terrno = TSDB_CODE_TQ_NO_COMMITTED_OFFSET; - tscError("consumer:0x%" PRIx64 " unexpected rsp from poll, code:%s", tmq->consumerId, tstrerror(terrno)); - return NULL; } else if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_DATA_RSP) { SMqPollRspWrapper* pollRspWrapper = (SMqPollRspWrapper*)pRspWrapper; @@ -1834,6 +1808,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { pVg->emptyBlockReceiveTs = taosGetTimestampMs(); tmqFreeRspWrapper(pRspWrapper); taosFreeQitem(pRspWrapper); + taosWUnLockLatch(&tmq->lock); } else { // build rsp int64_t numOfRows = 0; SMqRspObj* pRsp = tmqBuildRspFromWrapper(pollRspWrapper, pVg, &numOfRows); @@ -1847,7 +1822,6 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { taosWUnLockLatch(&tmq->lock); return pRsp; } - taosWUnLockLatch(&tmq->lock); } else { tscInfo("consumer:0x%" PRIx64 " vgId:%d msg discard since epoch mismatch: msg epoch %d, consumer epoch %d", tmq->consumerId, pollRspWrapper->vgId, pDataRsp->head.epoch, consumerEpoch); @@ -2379,13 +2353,7 @@ int32_t askEpCb(void* param, SDataBuf* pMsg, int32_t code) { SMqRspHead* head = pMsg->pData; int32_t epoch = atomic_load_32(&tmq->epoch); - if (head->epoch <= epoch) { - tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, no need to update local ep", - tmq->consumerId, head->epoch, epoch); - goto END; - } - - tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d, update local ep", tmq->consumerId, + tscInfo("consumer:0x%" PRIx64 ", recv ep, msg epoch %d, current epoch %d", tmq->consumerId, head->epoch, epoch); if(pParam->sync){ SMqAskEpRsp rsp = {0}; @@ -2427,7 +2395,7 @@ int32_t syncAskEp(tmq_t* pTmq) { SAskEpInfo* pInfo = taosMemoryMalloc(sizeof(SAskEpInfo)); tsem_init(&pInfo->sem, 0, 0); - askEp(pTmq, pInfo, true); + askEp(pTmq, pInfo, true, false); tsem_wait(&pInfo->sem); int32_t code = pInfo->code; @@ -2436,10 +2404,10 @@ int32_t syncAskEp(tmq_t* pTmq) { return code; } -void askEp(tmq_t* pTmq, void* param, bool sync) { +void askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) { SMqAskEpReq req = {0}; req.consumerId = pTmq->consumerId; - req.epoch = pTmq->epoch; + req.epoch = updateEpSet ? -1 :pTmq->epoch; strcpy(req.cgroup, pTmq->groupId); int code = 0; SMqAskEpCbParam* pParam = NULL; diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 7f96255b1e..4aa4a4ddf2 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -16,6 +16,7 @@ #define _DEFAULT_SOURCE #include "mndConsumer.h" #include "mndPrivilege.h" +#include "mndVgroup.h" #include "mndShow.h" #include "mndSubscribe.h" #include "mndTopic.h" @@ -542,6 +543,14 @@ static int32_t mndProcessAskEpReq(SRpcMsg *pMsg) { SMqVgEp *pVgEp = taosArrayGetP(pConsumerEp->vgs, j); char offsetKey[TSDB_PARTITION_KEY_LEN]; mndMakePartitionKey(offsetKey, pConsumer->cgroup, topic, pVgEp->vgId); + + if(epoch == -1){ + SVgObj *pVgroup = mndAcquireVgroup(pMnode, pVgEp->vgId); + if(pVgroup){ + pVgEp->epSet = mndGetVgroupEpset(pMnode, pVgroup); + mndReleaseVgroup(pMnode, pVgroup); + } + } // 2.2.1 build vg ep SMqSubVgEp vgEp = { .epSet = pVgEp->epSet, From a833d5d76946ca9162c95e3d88f2700ba8005410 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 14 Sep 2023 10:39:22 +0800 Subject: [PATCH 4/7] fix:need update epset if unsubscribe topic and topicNumGet is 0 at the same time --- source/client/src/clientTmq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index bede846762..62fb23c064 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -1449,7 +1449,7 @@ static bool doUpdateLocalEp(tmq_t* tmq, int32_t epoch, const SMqAskEpRsp* pRsp) bool set = false; int32_t topicNumGet = taosArrayGetSize(pRsp->topics); - if (topicNumGet <= 0) { + if (topicNumGet <= 0 && epoch <= tmq->epoch) { tscInfo("consumer:0x%" PRIx64 " no update ep epoch from %d to epoch %d, incoming topics:%d", tmq->consumerId, tmq->epoch, epoch, topicNumGet); return false; From ef81299494058bceeaf43541ad152a43b9f69010 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 14 Sep 2023 13:41:14 +0800 Subject: [PATCH 5/7] fix:heap use after free --- source/client/src/clientTmq.c | 2 +- source/common/src/tglobal.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 62fb23c064..054302974c 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -1755,9 +1755,9 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { atomic_store_8(&tmq->status, TMQ_CONSUMER_STATUS__RECOVER); tscDebug("consumer:0x%" PRIx64 " wait for the re-balance, set status to be RECOVER", tmq->consumerId); } else if (pRspWrapper->code == TSDB_CODE_TQ_NO_COMMITTED_OFFSET) { - taosFreeQitem(pRspWrapper); terrno = pRspWrapper->code; tscError("consumer:0x%" PRIx64 " unexpected rsp from poll, code:%s", tmq->consumerId, tstrerror(pRspWrapper->code)); + taosFreeQitem(pRspWrapper); return NULL; } else{ if(pRspWrapper->code == TSDB_CODE_VND_INVALID_VGROUP_ID){ // for vnode transform diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 90812a66b2..03285edcf7 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -478,7 +478,7 @@ static int32_t taosAddSystemCfg(SConfig *pCfg) { if (cfgAddTimezone(pCfg, "timezone", tsTimezoneStr, CFG_SCOPE_BOTH) != 0) return -1; if (cfgAddLocale(pCfg, "locale", tsLocale, CFG_SCOPE_BOTH) != 0) return -1; if (cfgAddCharset(pCfg, "charset", tsCharset, CFG_SCOPE_BOTH) != 0) return -1; - if (cfgAddBool(pCfg, "assert", 1, CFG_SCOPE_BOTH) != 0) return -1; + if (cfgAddBool(pCfg, "assert", tsAssert, CFG_SCOPE_BOTH) != 0) return -1; if (cfgAddBool(pCfg, "enableCoreFile", 1, CFG_SCOPE_BOTH) != 0) return -1; if (cfgAddFloat(pCfg, "numOfCores", tsNumOfCores, 1, 100000, CFG_SCOPE_BOTH) != 0) return -1; From edb42aa2aad03838f85219e42fd3f3ecd49d75fc Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 19 Sep 2023 11:51:52 +0800 Subject: [PATCH 6/7] fix:move from main to 3.0 --- source/dnode/mnode/impl/src/mndConsumer.c | 9 ++++++++- source/dnode/mnode/impl/src/mndSubscribe.c | 6 +++++- source/dnode/vnode/src/tq/tq.c | 9 ++++++++- source/dnode/vnode/src/tq/tqRead.c | 4 +++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 4aa4a4ddf2..c1494fd0d0 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -402,6 +402,9 @@ static int32_t mndProcessMqHbReq(SRpcMsg *pMsg) { SMqSubscribeObj *pSub = mndAcquireSubscribe(pMnode, pConsumer->cgroup, data->topicName); if(pSub == NULL){ +#ifdef TMQ_DEBUG + ASSERT(0); +#endif continue; } taosWLockLatch(&pSub->lock); @@ -499,7 +502,9 @@ static int32_t mndProcessAskEpReq(SRpcMsg *pMsg) { SMqSubscribeObj *pSub = mndAcquireSubscribe(pMnode, pConsumer->cgroup, topic); // txn guarantees pSub is created if(pSub == NULL) { +#ifdef TMQ_DEBUG ASSERT(0); +#endif continue; } taosRLockLatch(&pSub->lock); @@ -510,7 +515,9 @@ static int32_t mndProcessAskEpReq(SRpcMsg *pMsg) { // 2.1 fetch topic schema SMqTopicObj *pTopic = mndAcquireTopic(pMnode, topic); if(pTopic == NULL) { +#ifdef TMQ_DEBUG ASSERT(0); +#endif taosRUnLockLatch(&pSub->lock); mndReleaseSubscribe(pMnode, pSub); continue; @@ -657,7 +664,7 @@ int32_t mndProcessSubscribeReq(SRpcMsg *pMsg) { } // check topic existence - pTrans = mndTransCreate(pMnode, TRN_POLICY_RETRY, TRN_CONFLICT_TOPIC, pMsg, "subscribe"); + pTrans = mndTransCreate(pMnode, TRN_POLICY_RETRY, TRN_CONFLICT_NOTHING, pMsg, "subscribe"); if (pTrans == NULL) { goto _over; } diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index c756341164..ae58eeee35 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -847,7 +847,11 @@ end: mndReleaseSubscribe(pMnode, pSub); mndTransDrop(pTrans); - return code; + if (code != 0) { + mError("cgroup %s on topic:%s, failed to drop", dropReq.cgroup, dropReq.topic); + return code; + } + return TSDB_CODE_ACTION_IN_PROGRESS; } void mndCleanupSubscribe(SMnode *pMnode) {} diff --git a/source/dnode/vnode/src/tq/tq.c b/source/dnode/vnode/src/tq/tq.c index 58544090e2..3aeb679eb7 100644 --- a/source/dnode/vnode/src/tq/tq.c +++ b/source/dnode/vnode/src/tq/tq.c @@ -670,7 +670,14 @@ int32_t tqProcessSubscribeReq(STQ* pTq, int64_t sversion, char* msg, int32_t msg STqHandle* pHandle = NULL; while (1) { pHandle = taosHashGet(pTq->pHandle, req.subKey, strlen(req.subKey)); - if (pHandle || tqMetaGetHandle(pTq, req.subKey) < 0) { + if (pHandle) { + break; + } + taosRLockLatch(&pTq->lock); + ret = tqMetaGetHandle(pTq, req.subKey); + taosRUnLockLatch(&pTq->lock); + + if (ret < 0) { break; } } diff --git a/source/dnode/vnode/src/tq/tqRead.c b/source/dnode/vnode/src/tq/tqRead.c index 39627a5f7b..4d470ee5b6 100644 --- a/source/dnode/vnode/src/tq/tqRead.c +++ b/source/dnode/vnode/src/tq/tqRead.c @@ -1087,6 +1087,7 @@ int32_t tqUpdateTbUidList(STQ* pTq, const SArray* tbUidList, bool isAdd) { int32_t vgId = TD_VID(pTq->pVnode); // update the table list for each consumer handle + taosWLockLatch(&pTq->lock); while (1) { pIter = taosHashIterate(pTq->pHandle, pIter); if (pIter == NULL) { @@ -1116,6 +1117,7 @@ int32_t tqUpdateTbUidList(STQ* pTq, const SArray* tbUidList, bool isAdd) { tqError("qGetTableList in tqUpdateTbUidList error:%d handle %s consumer:0x%" PRIx64, ret, pTqHandle->subKey, pTqHandle->consumerId); taosArrayDestroy(list); taosHashCancelIterate(pTq->pHandle, pIter); + taosWUnLockLatch(&pTq->lock); return ret; } tqReaderSetTbUidList(pTqHandle->execHandle.pTqReader, list, NULL); @@ -1125,7 +1127,7 @@ int32_t tqUpdateTbUidList(STQ* pTq, const SArray* tbUidList, bool isAdd) { } } } - + taosWUnLockLatch(&pTq->lock); // update the table list handle for each stream scanner/wal reader taosWLockLatch(&pTq->pStreamMeta->lock); while (1) { From 9ea4984cbd7a0a1093fa124c818cc03b84e8b0ab Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 19 Sep 2023 14:39:30 +0800 Subject: [PATCH 7/7] fix:add empty line to the end to avoid fail --- tests/parallel_test/cases.task | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index fc50b993bf..51adfb4d06 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -1267,4 +1267,4 @@ ,,n,docs-examples-test,bash csharp.sh ,,n,docs-examples-test,bash jdbc.sh ,,n,docs-examples-test,bash go.sh -,,n,docs-examples-test,bash test_R.sh \ No newline at end of file +,,n,docs-examples-test,bash test_R.sh