update merge 3.0
This commit is contained in:
commit
605c97af45
|
@ -555,6 +555,7 @@ int32_t* taosGetErrno();
|
|||
#define TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE TAOS_DEF_ERROR_CODE(0, 0x265F)
|
||||
#define TSDB_CODE_PAR_INVALID_SMA_INDEX TAOS_DEF_ERROR_CODE(0, 0x2660)
|
||||
#define TSDB_CODE_PAR_INVALID_SELECTED_EXPR TAOS_DEF_ERROR_CODE(0, 0x2661)
|
||||
#define TSDB_CODE_PAR_GET_META_ERROR TAOS_DEF_ERROR_CODE(0, 0x2662)
|
||||
#define TSDB_CODE_PAR_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x26FF)
|
||||
|
||||
//planner
|
||||
|
|
|
@ -353,6 +353,7 @@ int32_t hbBuildQueryDesc(SQueryHbReqBasic *hbBasic, STscObj *pObj) {
|
|||
desc.subDesc = NULL;
|
||||
desc.subPlanNum = 0;
|
||||
}
|
||||
ASSERT(desc.subPlanNum == taosArrayGetSize(desc.subDesc));
|
||||
} else {
|
||||
desc.subDesc = NULL;
|
||||
}
|
||||
|
|
|
@ -1278,8 +1278,8 @@ int32_t doProcessMsgFromServer(void* param) {
|
|||
char tbuf[40] = {0};
|
||||
TRACE_TO_STR(trace, tbuf);
|
||||
|
||||
tscDebug("processMsgFromServer handle %p, message: %s, code: %s, gtid: %s", pMsg->info.handle, TMSG_INFO(pMsg->msgType), tstrerror(pMsg->code),
|
||||
tbuf);
|
||||
tscDebug("processMsgFromServer handle %p, message: %s, code: %s, gtid: %s", pMsg->info.handle,
|
||||
TMSG_INFO(pMsg->msgType), tstrerror(pMsg->code), tbuf);
|
||||
|
||||
if (pSendInfo->requestObjRefId != 0) {
|
||||
SRequestObj* pRequest = (SRequestObj*)taosAcquireRef(clientReqRefPool, pSendInfo->requestObjRefId);
|
||||
|
@ -2114,7 +2114,7 @@ TAOS_RES* taosQueryImpl(TAOS* taos, const char* sql, bool validateOnly) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TAOS_RES* pRes = execQuery(connId, sql, sqlLen, validateOnly);
|
||||
TAOS_RES* pRes = execQuery(*(int64_t*)taos, sql, sqlLen, validateOnly);
|
||||
return pRes;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -306,6 +306,8 @@ static int32_t tDeserializeSClientHbReq(SDecoder *pDecoder, SClientHbReq *pReq)
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(desc.subPlanNum == taosArrayGetSize(desc.subDesc));
|
||||
|
||||
taosArrayPush(pReq->query->queryDesc, &desc);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -374,11 +374,12 @@ static int32_t tsdbGetOrCreateTbData(SMemTable *pMemTable, tb_uid_t suid, tb_uid
|
|||
p = taosArrayInsert(pMemTable->aTbData, idx, &pTbData);
|
||||
taosWUnLockLatch(&pMemTable->latch);
|
||||
|
||||
tsdbDebug("vgId:%d add table data %p at idx:%d", TD_VID(pMemTable->pTsdb->pVnode), pTbData, idx);
|
||||
|
||||
if (p == NULL) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
goto _err;
|
||||
}
|
||||
|
||||
_exit:
|
||||
*ppTbData = pTbData;
|
||||
return code;
|
||||
|
|
|
@ -694,8 +694,8 @@ static int32_t tsdbSnapWriteTableDataImpl(STsdbSnapWriter* pWriter) {
|
|||
if (pWriter->bDataW.nRow < pWriter->maxRow * 4 / 5) continue;
|
||||
|
||||
_write_block:
|
||||
code = tsdbWriteBlockData(pWriter->pDataFWriter, &pWriter->bDataW, NULL, NULL, pWriter->pBlockIdx, &pWriter->blockW,
|
||||
pWriter->cmprAlg);
|
||||
code = tsdbWriteBlockData(pWriter->pDataFWriter, &pWriter->bDataW, NULL, NULL, pWriter->pBlockIdxW,
|
||||
&pWriter->blockW, pWriter->cmprAlg);
|
||||
if (code) goto _err;
|
||||
|
||||
code = tMapDataPutItem(&pWriter->mBlockW, &pWriter->blockW, tPutBlock);
|
||||
|
@ -756,7 +756,7 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, TABLEID id) {
|
|||
if (pWriter->iBlockIdx < taosArrayGetSize(pWriter->aBlockIdx)) {
|
||||
ASSERT(pWriter->pDataFReader);
|
||||
|
||||
SBlockIdx* pBlockIdx = (SBlockIdx*)taosArrayGet(pWriter->aBlockIdx, pWriter->iBlock);
|
||||
SBlockIdx* pBlockIdx = (SBlockIdx*)taosArrayGet(pWriter->aBlockIdx, pWriter->iBlockIdx);
|
||||
int32_t c = tTABLEIDCmprFn(pBlockIdx, &id);
|
||||
|
||||
ASSERT(c >= 0);
|
||||
|
@ -833,7 +833,7 @@ static int32_t tsdbSnapWriteDataEnd(STsdbSnapWriter* pWriter) {
|
|||
}
|
||||
|
||||
_exit:
|
||||
tsdbError("vgId:%d vnode snapshot tsdb writer data end", TD_VID(pTsdb->pVnode));
|
||||
tsdbInfo("vgId:%d vnode snapshot tsdb writer data end", TD_VID(pTsdb->pVnode));
|
||||
return code;
|
||||
|
||||
_err:
|
||||
|
|
|
@ -288,7 +288,7 @@ int vnodeCommit(SVnode *pVnode) {
|
|||
// apply the commit (TODO)
|
||||
walEndSnapshot(pVnode->pWal);
|
||||
|
||||
vInfo("vgId:%d, commit over", TD_VID(pVnode));
|
||||
vInfo("vgId:%d, commit end", TD_VID(pVnode));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -180,6 +180,7 @@ struct SVSnapWriter {
|
|||
SVnode *pVnode;
|
||||
int64_t sver;
|
||||
int64_t ever;
|
||||
int64_t commitID;
|
||||
int64_t index;
|
||||
// meta
|
||||
SMetaSnapWriter *pMetaSnapWriter;
|
||||
|
@ -201,7 +202,16 @@ int32_t vnodeSnapWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWr
|
|||
pWriter->sver = sver;
|
||||
pWriter->ever = ever;
|
||||
|
||||
vInfo("vgId:%d vnode snapshot writer opened", TD_VID(pVnode));
|
||||
// commit it
|
||||
code = vnodeCommit(pVnode);
|
||||
if (code) goto _err;
|
||||
|
||||
// inc commit ID
|
||||
pVnode->state.commitID++;
|
||||
pWriter->commitID = pVnode->state.commitID;
|
||||
|
||||
vInfo("vgId:%d vnode snapshot writer opened, sver:%" PRId64 " ever:%" PRId64 " commit id:%" PRId64, TD_VID(pVnode),
|
||||
sver, ever, pWriter->commitID);
|
||||
*ppWriter = pWriter;
|
||||
return code;
|
||||
|
||||
|
@ -244,6 +254,8 @@ int32_t vnodeSnapWriterClose(SVSnapWriter *pWriter, int8_t rollback, SSnapshot *
|
|||
|
||||
code = vnodeCommitInfo(dir, &info);
|
||||
if (code) goto _err;
|
||||
|
||||
vnodeBegin(pVnode);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
|
|
|
@ -251,17 +251,31 @@ int32_t qUpdateQualifiedTableId(qTaskInfo_t tinfo, const SArray* tableIdList, bo
|
|||
}
|
||||
}
|
||||
|
||||
bool assignUid = false;
|
||||
|
||||
if (LIST_LENGTH(pScanInfo->pGroupTags) > 0) {
|
||||
SNode* p = nodesListGetNode(pScanInfo->pGroupTags, 0);
|
||||
if (p->type == QUERY_NODE_FUNCTION) {
|
||||
// partition by tbname/group by tbname
|
||||
assignUid = (strcmp(((struct SFunctionNode*)p)->functionName, "tbname") == 0);
|
||||
}
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < taosArrayGetSize(qa); ++i) {
|
||||
uint64_t* uid = taosArrayGet(qa, i);
|
||||
STableKeyInfo keyInfo = {.uid = *uid, .groupId = 0};
|
||||
|
||||
if (bufLen > 0) {
|
||||
if (assignUid) {
|
||||
keyInfo.groupId = keyInfo.uid;
|
||||
} else {
|
||||
code = getGroupIdFromTagsVal(pScanInfo->readHandle.meta, keyInfo.uid, pScanInfo->pGroupTags, keyBuf,
|
||||
&keyInfo.groupId);
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
taosArrayPush(pTaskInfo->tableqinfoList.pTableList, &keyInfo);
|
||||
if (pTaskInfo->tableqinfoList.map == NULL) {
|
||||
|
|
|
@ -3140,6 +3140,26 @@ void destroyStreamAggSupporter(SStreamAggSupporter* pSup) {
|
|||
blockDataDestroy(pSup->pScanBlock);
|
||||
}
|
||||
|
||||
void destroyStateWinInfo(void* ptr) {
|
||||
if (ptr == NULL) {
|
||||
return;
|
||||
}
|
||||
SStateWindowInfo* pWin = (SStateWindowInfo*) ptr;
|
||||
taosMemoryFreeClear(pWin->stateKey.pData);
|
||||
}
|
||||
|
||||
void destroyStateStreamAggSupporter(SStreamAggSupporter* pSup) {
|
||||
taosMemoryFreeClear(pSup->pKeyBuf);
|
||||
void** pIte = NULL;
|
||||
while ((pIte = taosHashIterate(pSup->pResultRows, pIte)) != NULL) {
|
||||
SArray* pWins = (SArray*)(*pIte);
|
||||
taosArrayDestroyEx(pWins, (FDelete)destroyStateWinInfo);
|
||||
}
|
||||
taosHashCleanup(pSup->pResultRows);
|
||||
destroyDiskbasedBuf(pSup->pResultBuf);
|
||||
blockDataDestroy(pSup->pScanBlock);
|
||||
}
|
||||
|
||||
void destroyStreamSessionAggOperatorInfo(void* param, int32_t numOfOutput) {
|
||||
SStreamSessionAggOperatorInfo* pInfo = (SStreamSessionAggOperatorInfo*)param;
|
||||
cleanupBasicInfo(&pInfo->binfo);
|
||||
|
@ -3607,12 +3627,17 @@ static void doStreamSessionAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSData
|
|||
}
|
||||
}
|
||||
|
||||
void deleteWindow(SArray* pWinInfos, int32_t index) {
|
||||
void deleteWindow(SArray* pWinInfos, int32_t index, FDelete fp) {
|
||||
ASSERT(index >= 0 && index < taosArrayGetSize(pWinInfos));
|
||||
if (fp) {
|
||||
void* ptr = taosArrayGet(pWinInfos, index);
|
||||
fp(ptr);
|
||||
}
|
||||
taosArrayRemove(pWinInfos, index);
|
||||
}
|
||||
|
||||
static void doDeleteTimeWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock, int64_t gap, SArray* result) {
|
||||
static void doDeleteTimeWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock, int64_t gap,
|
||||
SArray* result, FDelete fp) {
|
||||
SColumnInfoData* pStartTsCol = taosArrayGet(pBlock->pDataBlock, START_TS_COLUMN_INDEX);
|
||||
TSKEY* startDatas = (TSKEY*)pStartTsCol->pData;
|
||||
SColumnInfoData* pEndTsCol = taosArrayGet(pBlock->pDataBlock, END_TS_COLUMN_INDEX);
|
||||
|
@ -3626,7 +3651,7 @@ static void doDeleteTimeWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
|
|||
if (!pCurWin) {
|
||||
break;
|
||||
}
|
||||
deleteWindow(pAggSup->pCurWins, winIndex);
|
||||
deleteWindow(pAggSup->pCurWins, winIndex, fp);
|
||||
if (result) {
|
||||
taosArrayPush(result, pCurWin);
|
||||
}
|
||||
|
@ -3751,7 +3776,7 @@ SResultWindowInfo* getResWinForSession(void* pData) { return (SResultWindowInfo*
|
|||
SResultWindowInfo* getResWinForState(void* pData) { return &((SStateWindowInfo*)pData)->winInfo; }
|
||||
|
||||
int32_t closeSessionWindow(SHashObj* pHashMap, STimeWindowAggSupp* pTwSup, SArray* pClosed, __get_win_info_ fn,
|
||||
bool delete) {
|
||||
bool delete, FDelete fp) {
|
||||
// Todo(liuyao) save window to tdb
|
||||
void** pIte = NULL;
|
||||
size_t keyLen = 0;
|
||||
|
@ -3773,7 +3798,7 @@ int32_t closeSessionWindow(SHashObj* pHashMap, STimeWindowAggSupp* pTwSup, SArra
|
|||
pSeWin->isOutput = true;
|
||||
}
|
||||
if (delete) {
|
||||
deleteWindow(pWins, i);
|
||||
deleteWindow(pWins, i, fp);
|
||||
i--;
|
||||
size = taosArrayGetSize(pWins);
|
||||
}
|
||||
|
@ -3786,13 +3811,13 @@ int32_t closeSessionWindow(SHashObj* pHashMap, STimeWindowAggSupp* pTwSup, SArra
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static void closeChildSessionWindow(SArray* pChildren, TSKEY maxTs, bool delete) {
|
||||
static void closeChildSessionWindow(SArray* pChildren, TSKEY maxTs, bool delete, FDelete fp) {
|
||||
int32_t size = taosArrayGetSize(pChildren);
|
||||
for (int32_t i = 0; i < size; i++) {
|
||||
SOperatorInfo* pChildOp = taosArrayGetP(pChildren, i);
|
||||
SStreamSessionAggOperatorInfo* pChInfo = pChildOp->info;
|
||||
pChInfo->twAggSup.maxTs = TMAX(pChInfo->twAggSup.maxTs, maxTs);
|
||||
closeSessionWindow(pChInfo->streamAggSup.pResultRows, &pChInfo->twAggSup, NULL, getResWinForSession, delete);
|
||||
closeSessionWindow(pChInfo->streamAggSup.pResultRows, &pChInfo->twAggSup, NULL, getResWinForSession, delete, fp);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3870,13 +3895,13 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) {
|
|||
} else if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT) {
|
||||
SArray* pWins = taosArrayInit(16, sizeof(SResultWindowInfo));
|
||||
// gap must be 0
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, pWins);
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, pWins, NULL);
|
||||
if (IS_FINAL_OP(pInfo)) {
|
||||
int32_t childIndex = getChildIndex(pBlock);
|
||||
SOperatorInfo* pChildOp = taosArrayGetP(pInfo->pChildren, childIndex);
|
||||
SStreamSessionAggOperatorInfo* pChildInfo = pChildOp->info;
|
||||
// gap must be 0
|
||||
doDeleteTimeWindows(&pChildInfo->streamAggSup, pBlock, 0, NULL);
|
||||
doDeleteTimeWindows(&pChildInfo->streamAggSup, pBlock, 0, NULL, NULL);
|
||||
rebuildTimeWindow(pInfo, pWins, pBlock->info.groupId, pOperator->exprSupp.numOfExprs, pOperator);
|
||||
}
|
||||
copyDeleteWindowInfo(pWins, pInfo->pStDeleted);
|
||||
|
@ -3918,8 +3943,8 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) {
|
|||
pOperator->status = OP_RES_TO_RETURN;
|
||||
|
||||
closeSessionWindow(pInfo->streamAggSup.pResultRows, &pInfo->twAggSup, pUpdated, getResWinForSession,
|
||||
pInfo->ignoreExpiredData);
|
||||
closeChildSessionWindow(pInfo->pChildren, pInfo->twAggSup.maxTs, pInfo->ignoreExpiredData);
|
||||
pInfo->ignoreExpiredData, NULL);
|
||||
closeChildSessionWindow(pInfo->pChildren, pInfo->twAggSup.maxTs, pInfo->ignoreExpiredData, NULL);
|
||||
copyUpdateResult(pStUpdated, pUpdated);
|
||||
taosHashCleanup(pStUpdated);
|
||||
|
||||
|
@ -4014,7 +4039,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) {
|
|||
break;
|
||||
} else if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT) {
|
||||
// gap must be 0
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, NULL);
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, NULL, NULL);
|
||||
copyDataBlock(pInfo->pDelRes, pBlock);
|
||||
pInfo->pDelRes->info.type = STREAM_DELETE_RESULT;
|
||||
break;
|
||||
|
@ -4120,7 +4145,7 @@ _error:
|
|||
void destroyStreamStateOperatorInfo(void* param, int32_t numOfOutput) {
|
||||
SStreamStateAggOperatorInfo* pInfo = (SStreamStateAggOperatorInfo*)param;
|
||||
cleanupBasicInfo(&pInfo->binfo);
|
||||
destroyStreamAggSupporter(&pInfo->streamAggSup);
|
||||
destroyStateStreamAggSupporter(&pInfo->streamAggSup);
|
||||
cleanupGroupResInfo(&pInfo->groupResInfo);
|
||||
if (pInfo->pChildren != NULL) {
|
||||
int32_t size = taosArrayGetSize(pInfo->pChildren);
|
||||
|
@ -4132,6 +4157,10 @@ void destroyStreamStateOperatorInfo(void* param, int32_t numOfOutput) {
|
|||
taosMemoryFreeClear(pChInfo);
|
||||
}
|
||||
}
|
||||
colDataDestroy(&pInfo->twAggSup.timeWindowData);
|
||||
blockDataDestroy(pInfo->pDelRes);
|
||||
taosHashCleanup(pInfo->pSeDeleted);
|
||||
destroySqlFunctionCtx(pInfo->pDummyCtx, 0);
|
||||
|
||||
taosMemoryFreeClear(param);
|
||||
}
|
||||
|
@ -4314,7 +4343,7 @@ static void doClearStateWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBloc
|
|||
pSeDeleted);
|
||||
ASSERT(isTsInWindow(pCurWin, tsCol[i]) || isEqualStateKey(pCurWin, pKeyData));
|
||||
taosHashRemove(pSeUpdated, &pCurWin->winInfo.pos, sizeof(SResultRowPosition));
|
||||
deleteWindow(pAggSup->pCurWins, winIndex);
|
||||
deleteWindow(pAggSup->pCurWins, winIndex, destroyStateWinInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4357,7 +4386,7 @@ static void doStreamStateAggImpl(SOperatorInfo* pOperator, SSDataBlock* pSDataBl
|
|||
appendOneRow(pAggSup->pScanBlock, &pCurWin->winInfo.win.skey, &pCurWin->winInfo.win.ekey,
|
||||
&pSDataBlock->info.groupId);
|
||||
taosHashRemove(pSeUpdated, &pCurWin->winInfo.pos, sizeof(SResultRowPosition));
|
||||
deleteWindow(pAggSup->pCurWins, winIndex);
|
||||
deleteWindow(pAggSup->pCurWins, winIndex, destroyStateWinInfo);
|
||||
continue;
|
||||
}
|
||||
code = doOneStateWindowAgg(pInfo, pSDataBlock, &pCurWin->winInfo, &pResult, i, winRows, numOfOutput, pOperator);
|
||||
|
@ -4415,7 +4444,7 @@ static SSDataBlock* doStreamStateAgg(SOperatorInfo* pOperator) {
|
|||
continue;
|
||||
} else if (pBlock->info.type == STREAM_DELETE_DATA) {
|
||||
SArray* pWins = taosArrayInit(16, sizeof(SResultWindowInfo));
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, pWins);
|
||||
doDeleteTimeWindows(&pInfo->streamAggSup, pBlock, 0, pWins, destroyStateWinInfo);
|
||||
copyDeleteWindowInfo(pWins, pInfo->pSeDeleted);
|
||||
taosArrayDestroy(pWins);
|
||||
continue;
|
||||
|
@ -4437,8 +4466,8 @@ static SSDataBlock* doStreamStateAgg(SOperatorInfo* pOperator) {
|
|||
pOperator->status = OP_RES_TO_RETURN;
|
||||
|
||||
closeSessionWindow(pInfo->streamAggSup.pResultRows, &pInfo->twAggSup, pUpdated, getResWinForState,
|
||||
pInfo->ignoreExpiredData);
|
||||
closeChildSessionWindow(pInfo->pChildren, pInfo->twAggSup.maxTs, pInfo->ignoreExpiredData);
|
||||
pInfo->ignoreExpiredData, destroyStateWinInfo);
|
||||
// closeChildSessionWindow(pInfo->pChildren, pInfo->twAggSup.maxTs, pInfo->ignoreExpiredData, destroyStateWinInfo);
|
||||
copyUpdateResult(pSeUpdated, pUpdated);
|
||||
taosHashCleanup(pSeUpdated);
|
||||
|
||||
|
|
|
@ -2358,7 +2358,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
|
|||
{
|
||||
.name = "histogram",
|
||||
.type = FUNCTION_TYPE_HISTOGRAM,
|
||||
.classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_MULTI_ROWS_FUNC | FUNC_MGT_FORBID_FILL_FUNC,
|
||||
.classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_TIMELINE_FUNC | FUNC_MGT_MULTI_ROWS_FUNC | FUNC_MGT_FORBID_FILL_FUNC,
|
||||
.translateFunc = translateHistogram,
|
||||
.getEnvFunc = getHistogramFuncEnv,
|
||||
.initFunc = histogramFunctionSetup,
|
||||
|
@ -2373,7 +2373,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
|
|||
{
|
||||
.name = "_histogram_partial",
|
||||
.type = FUNCTION_TYPE_HISTOGRAM_PARTIAL,
|
||||
.classification = FUNC_MGT_AGG_FUNC,
|
||||
.classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_TIMELINE_FUNC | FUNC_MGT_MULTI_ROWS_FUNC | FUNC_MGT_FORBID_FILL_FUNC,
|
||||
.translateFunc = translateHistogramPartial,
|
||||
.getEnvFunc = getHistogramFuncEnv,
|
||||
.initFunc = histogramFunctionSetup,
|
||||
|
@ -2385,7 +2385,7 @@ const SBuiltinFuncDefinition funcMgtBuiltins[] = {
|
|||
{
|
||||
.name = "_histogram_merge",
|
||||
.type = FUNCTION_TYPE_HISTOGRAM_MERGE,
|
||||
.classification = FUNC_MGT_AGG_FUNC,
|
||||
.classification = FUNC_MGT_AGG_FUNC | FUNC_MGT_TIMELINE_FUNC | FUNC_MGT_MULTI_ROWS_FUNC | FUNC_MGT_FORBID_FILL_FUNC,
|
||||
.translateFunc = translateHistogramMerge,
|
||||
.getEnvFunc = getHistogramFuncEnv,
|
||||
.initFunc = functionSetup,
|
||||
|
|
|
@ -34,6 +34,7 @@ typedef struct STranslateContext {
|
|||
SMsgBuf msgBuf;
|
||||
SArray* pNsLevel; // element is SArray*, the element of this subarray is STableNode*
|
||||
int32_t currLevel;
|
||||
int32_t levelNo;
|
||||
ESqlClause currClause;
|
||||
SNode* pCurrStmt;
|
||||
SCmdMsgInfo* pCmdMsg;
|
||||
|
@ -354,6 +355,7 @@ static int32_t initTranslateContext(SParseContext* pParseCxt, SParseMetaCache* p
|
|||
pCxt->msgBuf.len = pParseCxt->msgLen;
|
||||
pCxt->pNsLevel = taosArrayInit(TARRAY_MIN_SIZE, POINTER_BYTES);
|
||||
pCxt->currLevel = 0;
|
||||
pCxt->levelNo = 0;
|
||||
pCxt->currClause = 0;
|
||||
pCxt->pMetaCache = pMetaCache;
|
||||
pCxt->pDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK);
|
||||
|
@ -1857,7 +1859,7 @@ static int32_t translateTable(STranslateContext* pCxt, SNode* pTable) {
|
|||
pCxt, toName(pCxt->pParseCxt->acctId, pRealTable->table.dbName, pRealTable->table.tableName, &name),
|
||||
&(pRealTable->pMeta));
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TABLE_NOT_EXIST, pRealTable->table.tableName);
|
||||
return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code));
|
||||
}
|
||||
code = setTableVgroupList(pCxt, &name, pRealTable);
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
|
@ -4960,13 +4962,14 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
|||
}
|
||||
|
||||
static int32_t translateSubquery(STranslateContext* pCxt, SNode* pNode) {
|
||||
++(pCxt->currLevel);
|
||||
ESqlClause currClause = pCxt->currClause;
|
||||
SNode* pCurrStmt = pCxt->pCurrStmt;
|
||||
int32_t currLevel = pCxt->currLevel;
|
||||
pCxt->currLevel = ++(pCxt->levelNo);
|
||||
int32_t code = translateQuery(pCxt, pNode);
|
||||
--(pCxt->currLevel);
|
||||
pCxt->currClause = currClause;
|
||||
pCxt->pCurrStmt = pCurrStmt;
|
||||
pCxt->currLevel = currLevel;
|
||||
return code;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
|
|||
return "Invalid column name: %s";
|
||||
case TSDB_CODE_PAR_TABLE_NOT_EXIST:
|
||||
return "Table does not exist: %s";
|
||||
case TSDB_CODE_PAR_GET_META_ERROR:
|
||||
return "Fail to get table info, error: %s";
|
||||
case TSDB_CODE_PAR_AMBIGUOUS_COLUMN:
|
||||
return "Column ambiguously defined: %s";
|
||||
case TSDB_CODE_PAR_WRONG_VALUE_TYPE:
|
||||
|
|
|
@ -341,11 +341,12 @@ TEST_F(ParserSelectTest, semanticCheck) {
|
|||
|
||||
run("SELECT t1.c1, t1.cc1 FROM t1", TSDB_CODE_PAR_INVALID_COLUMN);
|
||||
|
||||
// TSDB_CODE_PAR_GET_META_ERROR
|
||||
run("SELECT * FROM t10", TSDB_CODE_PAR_GET_META_ERROR);
|
||||
|
||||
run("SELECT * FROM test.t10", TSDB_CODE_PAR_GET_META_ERROR);
|
||||
|
||||
// TSDB_CODE_PAR_TABLE_NOT_EXIST
|
||||
run("SELECT * FROM t10", TSDB_CODE_PAR_TABLE_NOT_EXIST);
|
||||
|
||||
run("SELECT * FROM test.t10", TSDB_CODE_PAR_TABLE_NOT_EXIST);
|
||||
|
||||
run("SELECT t2.c1 FROM t1", TSDB_CODE_PAR_TABLE_NOT_EXIST);
|
||||
|
||||
// TSDB_CODE_PAR_AMBIGUOUS_COLUMN
|
||||
|
|
|
@ -1229,6 +1229,7 @@ static int32_t createDeleteScanLogicNode(SLogicPlanContext* pCxt, SDeleteStmt* p
|
|||
// set columns to scan
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
pScan->scanType = SCAN_TYPE_TABLE;
|
||||
pScan->scanRange = pDelete->timeRange;
|
||||
pScan->pScanCols = nodesCloneList(((SFunctionNode*)pDelete->pCountFunc)->pParameterList);
|
||||
if (NULL == pScan->pScanCols) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
|
|
|
@ -916,7 +916,7 @@ int32_t schProcessOnOpBegin(SSchJob* pJob, SCH_OP_TYPE type, SSchedulerReq* pReq
|
|||
qDebug("job not initialized or not executable job, refId:0x%" PRIx64, pJob->refId);
|
||||
SCH_ERR_RET(TSDB_CODE_SCH_STATUS_ERROR);
|
||||
}
|
||||
break;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
default:
|
||||
SCH_JOB_ELOG("unknown operation type %d", type);
|
||||
SCH_ERR_RET(TSDB_CODE_TSC_APP_ERROR);
|
||||
|
|
|
@ -1094,6 +1094,7 @@ int32_t schBuildAndSendMsg(SSchJob *pJob, SSchTask *pTask, SQueryNodeAddr *addr,
|
|||
break;
|
||||
}
|
||||
|
||||
#if 1
|
||||
SSchTrans trans = {.pTrans = pJob->conn.pTrans, .pHandle = SCH_GET_TASK_HANDLE(pTask)};
|
||||
schAsyncSendMsg(pJob, pTask, &trans, addr, msgType, msg, msgSize, persistHandle, (rpcCtx.args ? &rpcCtx : NULL));
|
||||
msg = NULL;
|
||||
|
@ -1102,6 +1103,20 @@ int32_t schBuildAndSendMsg(SSchJob *pJob, SSchTask *pTask, SQueryNodeAddr *addr,
|
|||
if (msgType == TDMT_SCH_QUERY || msgType == TDMT_SCH_MERGE_QUERY) {
|
||||
SCH_ERR_RET(schAppendTaskExecNode(pJob, pTask, addr, pTask->execId));
|
||||
}
|
||||
#else
|
||||
if (TDMT_VND_SUBMIT != msgType) {
|
||||
SSchTrans trans = {.pTrans = pJob->conn.pTrans, .pHandle = SCH_GET_TASK_HANDLE(pTask)};
|
||||
schAsyncSendMsg(pJob, pTask, &trans, addr, msgType, msg, msgSize, persistHandle, (rpcCtx.args ? &rpcCtx : NULL));
|
||||
msg = NULL;
|
||||
SCH_ERR_JRET(code);
|
||||
|
||||
if (msgType == TDMT_SCH_QUERY || msgType == TDMT_SCH_MERGE_QUERY) {
|
||||
SCH_ERR_RET(schAppendTaskExecNode(pJob, pTask, addr, pTask->execId));
|
||||
}
|
||||
} else {
|
||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
||||
}
|
||||
#endif
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
||||
|
|
|
@ -559,6 +559,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN, "Not valid function
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE, "Only support single table")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_SMA_INDEX, "Invalid sma index")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_SELECTED_EXPR, "Invalid SELECTed expression")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_GET_META_ERROR, "Fail to get table info")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTERNAL_ERROR, "Parser internal error")
|
||||
|
||||
//planner
|
||||
|
|
|
@ -489,7 +489,7 @@ class TDDnode:
|
|||
onlyKillOnceWindows = 0
|
||||
while(processID):
|
||||
if not platform.system().lower() == 'windows' or (onlyKillOnceWindows == 0 and platform.system().lower() == 'windows'):
|
||||
killCmd = "kill -4 %s > /dev/null 2>&1" % processID
|
||||
killCmd = "kill -INT %s > /dev/null 2>&1" % processID
|
||||
os.system(killCmd)
|
||||
onlyKillOnceWindows = 1
|
||||
time.sleep(1)
|
||||
|
@ -503,7 +503,7 @@ class TDDnode:
|
|||
time.sleep(2)
|
||||
|
||||
self.running = 0
|
||||
tdLog.debug("dnode:%d is stopped by kill -4" % (self.index))
|
||||
tdLog.debug("dnode:%d is stopped by kill -INT" % (self.index))
|
||||
|
||||
|
||||
def stoptaosd(self):
|
||||
|
@ -527,7 +527,7 @@ class TDDnode:
|
|||
onlyKillOnceWindows = 0
|
||||
while(processID):
|
||||
if not platform.system().lower() == 'windows' or (onlyKillOnceWindows == 0 and platform.system().lower() == 'windows'):
|
||||
killCmd = "kill -4 %s > /dev/null 2>&1" % processID
|
||||
killCmd = "kill -INT %s > /dev/null 2>&1" % processID
|
||||
os.system(killCmd)
|
||||
onlyKillOnceWindows = 1
|
||||
time.sleep(1)
|
||||
|
@ -537,7 +537,7 @@ class TDDnode:
|
|||
time.sleep(2)
|
||||
|
||||
self.running = 0
|
||||
tdLog.debug("dnode:%d is stopped by kill -4" % (self.index))
|
||||
tdLog.debug("dnode:%d is stopped by kill -INT" % (self.index))
|
||||
|
||||
def forcestop(self):
|
||||
if (not self.remoteIP == ""):
|
||||
|
|
|
@ -135,6 +135,7 @@ print ===================> nest query interval
|
|||
sql_error select ts, avg(c1) from (select ts, c1 from nest_tb0);
|
||||
|
||||
sql select _wstart, avg(c1) from (select * from nest_tb0) interval(3d)
|
||||
print $data00 $data01 $data10 $data11 $data20 $data21
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -147,19 +148,19 @@ endi
|
|||
if $data10 != @20-09-17 00:00:00.000@ then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 49.581325301 then
|
||||
if $data11 != 49.685185185 then
|
||||
return -1
|
||||
endi
|
||||
if $data20 != @20-09-20 00:00:00.000@ then
|
||||
return -1
|
||||
endi
|
||||
if $data21 != 49.703539823 then
|
||||
if $data21 != 49.500000000 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql select stddev(c1) from (select c1 from nest_tb0);
|
||||
sql_error select percentile(c1, 20) from (select * from nest_tb0);
|
||||
sql_error select interp(c1) from (select * from nest_tb0);
|
||||
sql select interp(c1) from (select * from nest_tb0);
|
||||
sql_error select derivative(val, 1s, 0) from (select c1 val from nest_tb0);
|
||||
sql_error select twa(c1) from (select c1 from nest_tb0);
|
||||
sql_error select irate(c1) from (select c1 from nest_tb0);
|
||||
|
@ -217,19 +218,14 @@ if $data00 != 0.016666667 then
|
|||
endi
|
||||
|
||||
sql select derivative(c1, 1s, 0) from (select * from nest_tb0);
|
||||
print $rows $data00 $data10
|
||||
if $rows != 9999 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != @20-09-15 00:01:00.000@ then
|
||||
if $data00 != 0.016666667 then
|
||||
return -1
|
||||
endi
|
||||
if $data01 != 0.016666667 then
|
||||
return -1
|
||||
endi
|
||||
if $data10 != @20-09-15 00:02:00.000@ then
|
||||
return -1
|
||||
endi
|
||||
if $data11 != 0.016666667 then
|
||||
if $data10 != 0.016666667 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
@ -238,7 +234,7 @@ if $rows != 9999 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql select avg(c1),sum(c2), max(c3), min(c4), count(*), first(c7), last(c7),spread(c6) from (select * from nest_tb0) interval(1d);
|
||||
sql select _wstart, avg(c1),sum(c2), max(c3), min(c4), count(*), first(c7), last(c7),spread(c6) from (select * from nest_tb0) interval(1d);
|
||||
if $rows != 7 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -291,7 +287,7 @@ print ===================> group by + having
|
|||
print =========================> ascending order/descending order
|
||||
|
||||
print =========================> nest query join
|
||||
sql select a.ts,a.k,b.ts from (select count(*) k from nest_tb0 interval(30a)) a, (select count(*) f from nest_tb1 interval(30a)) b where a.ts = b.ts ;
|
||||
sql select a.ts,a.k,b.ts from (select _wstart ts, count(*) k from nest_tb0 interval(30a)) a, (select _wstart ts, count(*) f from nest_tb1 interval(30a)) b where a.ts = b.ts ;
|
||||
if $rows != 10000 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -314,7 +310,7 @@ if $data12 != @20-09-15 00:01:00.000@ then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql select sum(a.k), sum(b.f) from (select count(*) k from nest_tb0 interval(30a)) a, (select count(*) f from nest_tb1 interval(30a)) b where a.ts = b.ts ;
|
||||
sql select sum(a.k), sum(b.f) from (select _wstart ts, count(*) k from nest_tb0 interval(30a)) a, (select _wstart ts, count(*) f from nest_tb1 interval(30a)) b where a.ts = b.ts ;
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -325,7 +321,7 @@ if $data01 != 10000 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
sql select a.ts,a.k,b.ts,c.ts,c.ts,c.x from (select count(*) k from nest_tb0 interval(30a)) a, (select count(*) f from nest_tb1 interval(30a)) b, (select count(*) x from nest_tb2 interval(30a)) c where a.ts = b.ts and a.ts = c.ts
|
||||
sql select a.ts,a.k,b.ts,c.ts,c.ts,c.x from (select _wstart ts, count(*) k from nest_tb0 interval(30a)) a, (select _wstart ts, count(*) f from nest_tb1 interval(30a)) b, (select _wstart ts, count(*) x from nest_tb2 interval(30a)) c where a.ts = b.ts and a.ts = c.ts
|
||||
if $rows != 10000 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -346,10 +342,7 @@ sql select diff(val) from (select c1 val from nest_tb0);
|
|||
if $rows != 9999 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != @70-01-01 08:00:00.000@ then
|
||||
return -1
|
||||
endi
|
||||
if $data01 != 1 then
|
||||
if $data00 != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
@ -376,7 +369,7 @@ if $data11 != 1 then
|
|||
endi
|
||||
|
||||
print =====================>TD-5157
|
||||
sql select twa(c1) from nest_tb1 interval(19a);
|
||||
sql select _wstart, twa(c1) from nest_tb1 interval(19a);
|
||||
if $rows != 10000 then
|
||||
return -1
|
||||
endi
|
||||
|
@ -388,29 +381,14 @@ if $data01 != 0.000083333 then
|
|||
endi
|
||||
|
||||
print ======================>TD-5271
|
||||
sql select min(val),max(val),first(val),last(val),count(val),sum(val),avg(val) from (select count(*) val from nest_mt0 group by tbname)
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != 10000 then
|
||||
return -1
|
||||
endi
|
||||
if $data01 != 10000 then
|
||||
return -1
|
||||
endi
|
||||
if $data04 != 10 then
|
||||
return -1
|
||||
endi
|
||||
if $data05 != 100000 then
|
||||
return -1
|
||||
endi
|
||||
sql_error select min(val),max(val),first(val),last(val),count(val),sum(val),avg(val) from (select count(*) val from nest_mt0 group by tbname)
|
||||
|
||||
print =================>us database interval query, TD-5039
|
||||
sql create database test precision 'us';
|
||||
sql use test;
|
||||
sql create table t1(ts timestamp, k int);
|
||||
sql insert into t1 values('2020-01-01 01:01:01.000', 1) ('2020-01-01 01:02:00.000', 2);
|
||||
sql select avg(k) from (select avg(k) k from t1 interval(1s)) interval(1m);
|
||||
sql select _wstart, avg(k) from (select _wstart, avg(k) k from t1 interval(1s)) interval(1m);
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
endi
|
||||
|
|
|
@ -498,4 +498,7 @@ if $data15 != 3 then
|
|||
goto loop5
|
||||
endi
|
||||
|
||||
sql drop database test;
|
||||
sql drop database test1;
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||
|
|
|
@ -0,0 +1,172 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/deploy.sh -n dnode2 -i 2
|
||||
system sh/deploy.sh -n dnode3 -i 3
|
||||
system sh/deploy.sh -n dnode4 -i 4
|
||||
|
||||
system sh/cfg.sh -n dnode1 -c supportVnodes -v 0
|
||||
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
system sh/exec.sh -n dnode2 -s start
|
||||
system sh/exec.sh -n dnode3 -s start
|
||||
system sh/exec.sh -n dnode4 -s start
|
||||
|
||||
sql connect
|
||||
sql create dnode $hostname port 7200
|
||||
sql create dnode $hostname port 7300
|
||||
sql create dnode $hostname port 7400
|
||||
|
||||
$x = 0
|
||||
step1:
|
||||
$x = $x + 1
|
||||
sleep 1000
|
||||
if $x == 10 then
|
||||
print ====> dnode not ready!
|
||||
return -1
|
||||
endi
|
||||
sql show dnodes
|
||||
print ===> $data00 $data01 $data02 $data03 $data04 $data05
|
||||
print ===> $data10 $data11 $data12 $data13 $data14 $data15
|
||||
print ===> $data20 $data21 $data22 $data23 $data24 $data25
|
||||
print ===> $data30 $data31 $data32 $data33 $data34 $data35
|
||||
if $rows != 4 then
|
||||
return -1
|
||||
endi
|
||||
if $data(1)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
if $data(2)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
if $data(3)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
if $data(4)[4] != ready then
|
||||
goto step1
|
||||
endi
|
||||
|
||||
$replica = 3
|
||||
$vgroups = 1
|
||||
$retentions = 5s:7d,15s:21d
|
||||
|
||||
print ============= create database
|
||||
sql create database db replica $replica vgroups $vgroups retentions $retentions
|
||||
|
||||
$loop_cnt = 0
|
||||
check_db_ready:
|
||||
$loop_cnt = $loop_cnt + 1
|
||||
sleep 200
|
||||
if $loop_cnt == 100 then
|
||||
print ====> db not ready!
|
||||
return -1
|
||||
endi
|
||||
sql show databases
|
||||
print ===> rows: $rows
|
||||
print $data[2][0] $data[2][1] $data[2][2] $data[2][3] $data[2][4] $data[2][5] $data[2][6] $data[2][7] $data[2][8] $data[2][9] $data[2][6] $data[2][11] $data[2][12] $data[2][13] $data[2][14] $data[2][15] $data[2][16] $data[2][17] $data[2][18] $data[2][19]
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
endi
|
||||
if $data[2][15] != ready then
|
||||
goto check_db_ready
|
||||
endi
|
||||
|
||||
sql use db
|
||||
|
||||
$loop_cnt = 0
|
||||
check_vg_ready:
|
||||
$loop_cnt = $loop_cnt + 1
|
||||
sleep 200
|
||||
if $loop_cnt == 300 then
|
||||
print ====> vgroups not ready!
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql show vgroups
|
||||
print ===> rows: $rows
|
||||
print $data[0][0] $data[0][1] $data[0][2] $data[0][3] $data[0][4] $data[0][5] $data[0][6] $data[0][7] $data[0][8] $data[0][9] $data[0][10] $data[0][11]
|
||||
|
||||
if $rows != $vgroups then
|
||||
return -1
|
||||
endi
|
||||
|
||||
if $data[0][4] == leader then
|
||||
if $data[0][6] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][3]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][6] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][8] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][5]
|
||||
endi
|
||||
endi
|
||||
elif $data[0][8] == leader then
|
||||
if $data[0][4] == follower then
|
||||
if $data[0][6] == follower then
|
||||
print ---- vgroup $data[0][0] leader locate on dnode $data[0][7]
|
||||
endi
|
||||
endi
|
||||
else
|
||||
goto check_vg_ready
|
||||
endi
|
||||
|
||||
|
||||
vg_ready:
|
||||
print ====> create stable/child table
|
||||
sql create table stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int) rollup(sum)
|
||||
|
||||
sql show stables
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
sql create table ct1 using stb tags(1000)
|
||||
|
||||
|
||||
print ===> stop dnode4
|
||||
system sh/exec.sh -n dnode4 -s stop -x SIGINT
|
||||
sleep 3000
|
||||
|
||||
|
||||
print ===> write 100 records
|
||||
$N = 100
|
||||
$count = 0
|
||||
while $count < $N
|
||||
$ms = 1659000000000 + $count
|
||||
sql insert into ct1 values( $ms , $count , 2.1, 3.1)
|
||||
$count = $count + 1
|
||||
endw
|
||||
|
||||
|
||||
#sql flush database db;
|
||||
|
||||
|
||||
sleep 3000
|
||||
|
||||
|
||||
print ===> stop dnode1 dnode2 dnode3
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||
system sh/exec.sh -n dnode2 -s stop -x SIGINT
|
||||
system sh/exec.sh -n dnode3 -s stop -x SIGINT
|
||||
|
||||
sleep 10000
|
||||
|
||||
########################################################
|
||||
print ===> start dnode1 dnode2 dnode3 dnode4
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
system sh/exec.sh -n dnode2 -s start
|
||||
system sh/exec.sh -n dnode3 -s start
|
||||
system sh/exec.sh -n dnode4 -s start
|
||||
|
||||
sleep 3000
|
||||
|
||||
print =============== query data
|
||||
sql connect
|
||||
sql use db
|
||||
sql select * from ct1
|
||||
print rows: $rows
|
||||
print $data00 $data01 $data02
|
||||
if $rows != 100 then
|
||||
return -1
|
||||
endi
|
|
@ -3,27 +3,417 @@ set -e
|
|||
set -x
|
||||
|
||||
|
||||
# test case of vnode
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_createDb_replica1.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_vgroups_stopOne.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_sync.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_follower_unsync_force_stop.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_leader.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_leader_forece_stop.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_querydatas_stop_follower.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_querydatas_stop_follower_force_stop.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_querydatas_stop_leader.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_querydatas_stop_leader_force_stop.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica1_insertdatas_querys.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_follower.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_leader.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_querys_loop_restart_all_vnode.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_stop_all_dnodes.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_insertdatas_force_stop_all_dnodes.py -N 4 -M 1
|
||||
python3 ./test.py -f 6-cluster/vnode/4dnode1mnode_basic_replica3_mnode3_insertdatas_querys.py -N 4 -M 1
|
||||
python3 ./test.py -f 0-others/sysinfo.py
|
||||
python3 ./test.py -f 0-others/user_control.py
|
||||
python3 ./test.py -f 0-others/fsync.py
|
||||
|
||||
python3 ./test.py -f 1-insert/influxdb_line_taosc_insert.py
|
||||
python3 ./test.py -f 1-insert/opentsdb_telnet_line_taosc_insert.py
|
||||
python3 ./test.py -f 1-insert/opentsdb_json_taosc_insert.py
|
||||
python3 ./test.py -f 1-insert/test_stmt_muti_insert_query.py
|
||||
python3 ./test.py -f 1-insert/test_stmt_set_tbname_tag.py
|
||||
python3 ./test.py -f 1-insert/alter_stable.py
|
||||
python3 ./test.py -f 1-insert/alter_table.py
|
||||
python3 ./test.py -f 1-insert/insertWithMoreVgroup.py
|
||||
python3 ./test.py -f 1-insert/table_comment.py
|
||||
python3 ./test.py -f 1-insert/time_range_wise.py
|
||||
python3 ./test.py -f 1-insert/block_wise.py
|
||||
python3 ./test.py -f 1-insert/create_retentions.py
|
||||
python3 ./test.py -f 1-insert/table_param_ttl.py
|
||||
|
||||
python3 ./test.py -f 1-insert/update_data_muti_rows.py
|
||||
|
||||
|
||||
python3 ./test.py -f 2-query/abs.py
|
||||
python3 ./test.py -f 2-query/abs.py -R
|
||||
python3 ./test.py -f 2-query/and_or_for_byte.py
|
||||
python3 ./test.py -f 2-query/and_or_for_byte.py -R
|
||||
python3 ./test.py -f 2-query/apercentile.py
|
||||
python3 ./test.py -f 2-query/apercentile.py -R
|
||||
python3 ./test.py -f 2-query/arccos.py
|
||||
python3 ./test.py -f 2-query/arccos.py -R
|
||||
python3 ./test.py -f 2-query/arcsin.py
|
||||
python3 ./test.py -f 2-query/arcsin.py -R
|
||||
python3 ./test.py -f 2-query/arctan.py
|
||||
python3 ./test.py -f 2-query/arctan.py -R
|
||||
python3 ./test.py -f 2-query/avg.py
|
||||
python3 ./test.py -f 2-query/avg.py -R
|
||||
python3 ./test.py -f 2-query/between.py
|
||||
python3 ./test.py -f 2-query/between.py -R
|
||||
python3 ./test.py -f 2-query/bottom.py
|
||||
python3 ./test.py -f 2-query/bottom.py -R
|
||||
python3 ./test.py -f 2-query/cast.py
|
||||
python3 ./test.py -f 2-query/cast.py -R
|
||||
python3 ./test.py -f 2-query/ceil.py
|
||||
python3 ./test.py -f 2-query/ceil.py -R
|
||||
python3 ./test.py -f 2-query/char_length.py
|
||||
python3 ./test.py -f 2-query/char_length.py -R
|
||||
# python3 ./test.py -f 2-query/check_tsdb.py
|
||||
# python3 ./test.py -f 2-query/check_tsdb.py -R
|
||||
python3 ./test.py -f 2-query/concat.py
|
||||
python3 ./test.py -f 2-query/concat.py -R
|
||||
python3 ./test.py -f 2-query/concat_ws.py
|
||||
python3 ./test.py -f 2-query/concat_ws.py -R
|
||||
python3 ./test.py -f 2-query/concat_ws2.py
|
||||
python3 ./test.py -f 2-query/concat_ws2.py -R
|
||||
python3 ./test.py -f 2-query/cos.py
|
||||
python3 ./test.py -f 2-query/cos.py -R
|
||||
python3 ./test.py -f 2-query/count_partition.py
|
||||
python3 ./test.py -f 2-query/count_partition.py -R
|
||||
python3 ./test.py -f 2-query/count.py
|
||||
python3 ./test.py -f 2-query/count.py -R
|
||||
python3 ./test.py -f 2-query/db.py
|
||||
python3 ./test.py -f 2-query/db.py -R
|
||||
python3 ./test.py -f 2-query/diff.py
|
||||
python3 ./test.py -f 2-query/diff.py -R
|
||||
python3 ./test.py -f 2-query/distinct.py
|
||||
python3 ./test.py -f 2-query/distinct.py -R
|
||||
python3 ./test.py -f 2-query/distribute_agg_apercentile.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_apercentile.py -R
|
||||
python3 ./test.py -f 2-query/distribute_agg_avg.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_avg.py -R
|
||||
python3 ./test.py -f 2-query/distribute_agg_count.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_count.py -R
|
||||
python3 ./test.py -f 2-query/distribute_agg_max.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_max.py -R
|
||||
python3 ./test.py -f 2-query/distribute_agg_min.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_min.py -R
|
||||
|
||||
|
||||
|
||||
|
||||
python3 ./test.py -f 1-insert/update_data.py
|
||||
|
||||
python3 ./test.py -f 1-insert/delete_data.py
|
||||
|
||||
python3 ./test.py -f 2-query/varchar.py
|
||||
python3 ./test.py -f 2-query/ltrim.py
|
||||
python3 ./test.py -f 2-query/rtrim.py
|
||||
python3 ./test.py -f 2-query/length.py
|
||||
python3 ./test.py -f 2-query/upper.py
|
||||
python3 ./test.py -f 2-query/lower.py
|
||||
python3 ./test.py -f 2-query/join.py
|
||||
python3 ./test.py -f 2-query/join2.py
|
||||
python3 ./test.py -f 2-query/substr.py
|
||||
python3 ./test.py -f 2-query/union.py
|
||||
python3 ./test.py -f 2-query/union1.py
|
||||
python3 ./test.py -f 2-query/concat2.py
|
||||
python3 ./test.py -f 2-query/spread.py
|
||||
python3 ./test.py -f 2-query/hyperloglog.py
|
||||
python3 ./test.py -f 2-query/explain.py
|
||||
python3 ./test.py -f 2-query/leastsquares.py
|
||||
python3 ./test.py -f 2-query/histogram.py
|
||||
|
||||
|
||||
python3 ./test.py -f 2-query/timezone.py
|
||||
python3 ./test.py -f 2-query/Now.py
|
||||
python3 ./test.py -f 2-query/Today.py
|
||||
python3 ./test.py -f 2-query/max.py
|
||||
python3 ./test.py -f 2-query/min.py
|
||||
python3 ./test.py -f 2-query/last.py
|
||||
python3 ./test.py -f 2-query/first.py
|
||||
python3 ./test.py -f 2-query/To_iso8601.py
|
||||
python3 ./test.py -f 2-query/To_unixtimestamp.py
|
||||
python3 ./test.py -f 2-query/timetruncate.py
|
||||
python3 ./test.py -f 2-query/Timediff.py
|
||||
python3 ./test.py -f 2-query/json_tag.py
|
||||
|
||||
python3 ./test.py -f 2-query/top.py
|
||||
python3 ./test.py -f 2-query/percentile.py
|
||||
python3 ./test.py -f 2-query/floor.py
|
||||
python3 ./test.py -f 2-query/round.py
|
||||
python3 ./test.py -f 2-query/log.py
|
||||
python3 ./test.py -f 2-query/pow.py
|
||||
python3 ./test.py -f 2-query/sqrt.py
|
||||
python3 ./test.py -f 2-query/sin.py
|
||||
python3 ./test.py -f 2-query/tan.py
|
||||
python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
||||
# python3 ./test.py -f 2-query/nestedQuery.py
|
||||
# TD-15983 subquery output duplicate name column.
|
||||
# Please Xiangyang Guo modify the following script
|
||||
# python3 ./test.py -f 2-query/nestedQuery_str.py
|
||||
|
||||
python3 ./test.py -f 2-query/elapsed.py
|
||||
python3 ./test.py -f 2-query/csum.py
|
||||
python3 ./test.py -f 2-query/mavg.py
|
||||
python3 ./test.py -f 2-query/sample.py
|
||||
python3 ./test.py -f 2-query/function_diff.py
|
||||
python3 ./test.py -f 2-query/unique.py
|
||||
python3 ./test.py -f 2-query/stateduration.py
|
||||
python3 ./test.py -f 2-query/function_stateduration.py
|
||||
python3 ./test.py -f 2-query/statecount.py
|
||||
python3 ./test.py -f 2-query/tail.py
|
||||
python3 ./test.py -f 2-query/ttl_comment.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_sum.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_spread.py
|
||||
python3 ./test.py -f 2-query/distribute_agg_stddev.py
|
||||
python3 ./test.py -f 2-query/twa.py
|
||||
python3 ./test.py -f 2-query/irate.py
|
||||
python3 ./test.py -f 2-query/function_null.py
|
||||
python3 ./test.py -f 2-query/queryQnode.py
|
||||
python3 ./test.py -f 2-query/max_partition.py
|
||||
python3 ./test.py -f 2-query/last_row.py
|
||||
python3 ./test.py -f 2-query/tsbsQuery.py
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode1mnode.py
|
||||
python3 ./test.py -f 6-cluster/5dnode2mnode.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeStop2Follower.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeStopLoop.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateDb.py -N 5 -M 3
|
||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateDb.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateDb.py -N 5 -M 3
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopDnodeCreateStb.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopMnodeCreateStb.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeSep1VnodeStopVnodeCreateStb.py -N 5 -M 3
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertData.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertDataAsync.py -N 5 -M 3
|
||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartMnodeInsertData.py -N 5 -M 3
|
||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartVnodeInsertData.py -N 5 -M 3
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeAdd1Ddnoe.py -N 6 -M 3 -C 5
|
||||
# BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStopInsert.py
|
||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py -N 5
|
||||
# python3 test.py -f 6-cluster/5dnode3mnodeStopConnect.py -N 5 -M 3
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeRecreateMnode.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeStopFollowerLeader.py -N 5 -M 3
|
||||
python3 ./test.py -f 6-cluster/5dnode3mnodeStop2Follower.py -N 5 -M 3
|
||||
|
||||
|
||||
python3 ./test.py -f 7-tmq/dropDbR3ConflictTransaction.py -N 3
|
||||
python3 ./test.py -f 7-tmq/basic5.py
|
||||
python3 ./test.py -f 7-tmq/subscribeDb.py
|
||||
python3 ./test.py -f 7-tmq/subscribeDb0.py
|
||||
python3 ./test.py -f 7-tmq/subscribeDb1.py
|
||||
python3 ./test.py -f 7-tmq/subscribeDb2.py
|
||||
python3 ./test.py -f 7-tmq/subscribeDb3.py
|
||||
#python3 ./test.py -f 7-tmq/subscribeDb4.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb0.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb1.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb2.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb3.py
|
||||
python3 ./test.py -f 7-tmq/subscribeStb4.py
|
||||
python3 ./test.py -f 7-tmq/db.py
|
||||
python3 ./test.py -f 7-tmq/tmqError.py
|
||||
python3 ./test.py -f 7-tmq/schema.py
|
||||
python3 ./test.py -f 7-tmq/stbFilter.py
|
||||
python3 ./test.py -f 7-tmq/tmqCheckData.py
|
||||
python3 ./test.py -f 7-tmq/tmqCheckData1.py
|
||||
#python3 ./test.py -f 7-tmq/tmq3mnodeSwitch.py -N 5
|
||||
python3 ./test.py -f 7-tmq/tmqConsumerGroup.py
|
||||
python3 ./test.py -f 7-tmq/tmqShow.py
|
||||
python3 ./test.py -f 7-tmq/tmqAlterSchema.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb1.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb-mutilVg.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-mutilVg.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb-1ctb.py
|
||||
# python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-1ctb.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb-1ctb-funcNFilter.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb-mutilVg-mutilCtb-funcNFilter.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb-mutilVg-mutilCtb.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-1ctb-funcNFilter.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-mutilVg-mutilCtb-funcNFilter.py
|
||||
python3 ./test.py -f 7-tmq/tmqConsFromTsdb1-mutilVg-mutilCtb.py
|
||||
#python3 ./test.py -f 7-tmq/tmqAutoCreateTbl.py
|
||||
#python3 ./test.py -f 7-tmq/tmqDnodeRestart.py
|
||||
python3 ./test.py -f 7-tmq/tmqUpdate-1ctb.py
|
||||
python3 ./test.py -f 7-tmq/tmqUpdateWithConsume.py
|
||||
python3 ./test.py -f 7-tmq/tmqUpdate-multiCtb-snapshot0.py
|
||||
python3 ./test.py -f 7-tmq/tmqUpdate-multiCtb-snapshot1.py
|
||||
python3 ./test.py -f 7-tmq/tmqDelete-1ctb.py
|
||||
python3 ./test.py -f 7-tmq/tmqDelete-multiCtb.py
|
||||
python3 ./test.py -f 7-tmq/tmqDropStb.py
|
||||
python3 ./test.py -f 7-tmq/tmqDropStbCtb.py
|
||||
python3 ./test.py -f 7-tmq/tmqDropNtb-snapshot0.py
|
||||
python3 ./test.py -f 7-tmq/tmqDropNtb-snapshot1.py
|
||||
python3 ./test.py -f 7-tmq/tmqUdf.py
|
||||
python3 ./test.py -f 7-tmq/tmqUdf-multCtb-snapshot0.py
|
||||
python3 ./test.py -f 7-tmq/tmqUdf-multCtb-snapshot1.py
|
||||
python3 ./test.py -f 7-tmq/stbTagFilter-1ctb.py
|
||||
python3 ./test.py -f 7-tmq/dataFromTsdbNWal.py
|
||||
python3 ./test.py -f 7-tmq/dataFromTsdbNWal-multiCtb.py
|
||||
python3 ./test.py -f 7-tmq/tmq_taosx.py
|
||||
# python3 ./test.py -f 7-tmq/stbTagFilter-multiCtb.py
|
||||
|
||||
#------------querPolicy 2-----------
|
||||
|
||||
python3 ./test.py -f 2-query/between.py -Q 2
|
||||
python3 ./test.py -f 2-query/distinct.py -Q 2
|
||||
python3 ./test.py -f 2-query/varchar.py -Q 2
|
||||
python3 ./test.py -f 2-query/ltrim.py -Q 2
|
||||
python3 ./test.py -f 2-query/rtrim.py -Q 2
|
||||
python3 ./test.py -f 2-query/length.py -Q 2
|
||||
python3 ./test.py -f 2-query/char_length.py -Q 2
|
||||
python3 ./test.py -f 2-query/upper.py -Q 2
|
||||
python3 ./test.py -f 2-query/lower.py -Q 2
|
||||
python3 ./test.py -f 2-query/join.py -Q 2
|
||||
python3 ./test.py -f 2-query/join2.py -Q 2
|
||||
python3 ./test.py -f 2-query/cast.py -Q 2
|
||||
python3 ./test.py -f 2-query/substr.py -Q 2
|
||||
python3 ./test.py -f 2-query/union.py -Q 2
|
||||
python3 ./test.py -f 2-query/union1.py -Q 2
|
||||
python3 ./test.py -f 2-query/concat.py -Q 2
|
||||
python3 ./test.py -f 2-query/concat2.py -Q 2
|
||||
python3 ./test.py -f 2-query/concat_ws.py -Q 2
|
||||
python3 ./test.py -f 2-query/concat_ws2.py -Q 2
|
||||
#python3 ./test.py -f 2-query/check_tsdb.py -Q 2
|
||||
python3 ./test.py -f 2-query/spread.py -Q 2
|
||||
python3 ./test.py -f 2-query/hyperloglog.py -Q 2
|
||||
python3 ./test.py -f 2-query/explain.py -Q 2
|
||||
python3 ./test.py -f 2-query/leastsquares.py -Q 2
|
||||
python3 ./test.py -f 2-query/timezone.py -Q 2
|
||||
python3 ./test.py -f 2-query/Now.py -Q 2
|
||||
python3 ./test.py -f 2-query/Today.py -Q 2
|
||||
python3 ./test.py -f 2-query/max.py -Q 2
|
||||
python3 ./test.py -f 2-query/min.py -Q 2
|
||||
python3 ./test.py -f 2-query/count.py -Q 2
|
||||
python3 ./test.py -f 2-query/last.py -Q 2
|
||||
python3 ./test.py -f 2-query/first.py -Q 2
|
||||
python3 ./test.py -f 2-query/To_iso8601.py -Q 2
|
||||
python3 ./test.py -f 2-query/To_unixtimestamp.py -Q 2
|
||||
python3 ./test.py -f 2-query/timetruncate.py -Q 2
|
||||
python3 ./test.py -f 2-query/diff.py -Q 2
|
||||
python3 ./test.py -f 2-query/Timediff.py -Q 2
|
||||
python3 ./test.py -f 2-query/json_tag.py -Q 2
|
||||
python3 ./test.py -f 2-query/top.py -Q 2
|
||||
python3 ./test.py -f 2-query/bottom.py -Q 2
|
||||
python3 ./test.py -f 2-query/percentile.py -Q 2
|
||||
python3 ./test.py -f 2-query/apercentile.py -Q 2
|
||||
python3 ./test.py -f 2-query/abs.py -Q 2
|
||||
python3 ./test.py -f 2-query/ceil.py -Q 2
|
||||
python3 ./test.py -f 2-query/floor.py -Q 2
|
||||
python3 ./test.py -f 2-query/round.py -Q 2
|
||||
python3 ./test.py -f 2-query/log.py -Q 2
|
||||
python3 ./test.py -f 2-query/pow.py -Q 2
|
||||
python3 ./test.py -f 2-query/sqrt.py -Q 2
|
||||
python3 ./test.py -f 2-query/sin.py -Q 2
|
||||
python3 ./test.py -f 2-query/cos.py -Q 2
|
||||
python3 ./test.py -f 2-query/tan.py -Q 2
|
||||
python3 ./test.py -f 2-query/arcsin.py -Q 2
|
||||
python3 ./test.py -f 2-query/arccos.py -Q 2
|
||||
python3 ./test.py -f 2-query/arctan.py -Q 2
|
||||
python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 2
|
||||
|
||||
# python3 ./test.py -f 2-query/nestedQuery.py -Q 2
|
||||
# python3 ./test.py -f 2-query/nestedQuery_str.py -Q 2
|
||||
|
||||
python3 ./test.py -f 2-query/avg.py -Q 2
|
||||
# python3 ./test.py -f 2-query/elapsed.py -Q 2
|
||||
python3 ./test.py -f 2-query/csum.py -Q 2
|
||||
python3 ./test.py -f 2-query/mavg.py -Q 2
|
||||
python3 ./test.py -f 2-query/sample.py -Q 2
|
||||
python3 ./test.py -f 2-query/function_diff.py -Q 2
|
||||
python3 ./test.py -f 2-query/unique.py -Q 2
|
||||
python3 ./test.py -f 2-query/stateduration.py -Q 2
|
||||
python3 ./test.py -f 2-query/function_stateduration.py -Q 2
|
||||
python3 ./test.py -f 2-query/statecount.py -Q 2
|
||||
python3 ./test.py -f 2-query/tail.py -Q 2
|
||||
python3 ./test.py -f 2-query/ttl_comment.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_count.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_max.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_min.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_sum.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_spread.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_apercentile.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_avg.py -Q 2
|
||||
python3 ./test.py -f 2-query/distribute_agg_stddev.py -Q 2
|
||||
python3 ./test.py -f 2-query/twa.py -Q 2
|
||||
python3 ./test.py -f 2-query/irate.py -Q 2
|
||||
python3 ./test.py -f 2-query/function_null.py -Q 2
|
||||
python3 ./test.py -f 2-query/count_partition.py -Q 2
|
||||
python3 ./test.py -f 2-query/max_partition.py -Q 2
|
||||
python3 ./test.py -f 2-query/last_row.py -Q 2
|
||||
python3 ./test.py -f 2-query/tsbsQuery.py -Q 2
|
||||
#------------querPolicy 3-----------
|
||||
|
||||
python3 ./test.py -f 2-query/between.py -Q 3
|
||||
python3 ./test.py -f 2-query/distinct.py -Q 3
|
||||
python3 ./test.py -f 2-query/varchar.py -Q 3
|
||||
python3 ./test.py -f 2-query/ltrim.py -Q 3
|
||||
python3 ./test.py -f 2-query/rtrim.py -Q 3
|
||||
python3 ./test.py -f 2-query/length.py -Q 3
|
||||
python3 ./test.py -f 2-query/char_length.py -Q 3
|
||||
python3 ./test.py -f 2-query/upper.py -Q 3
|
||||
python3 ./test.py -f 2-query/lower.py -Q 3
|
||||
python3 ./test.py -f 2-query/join.py -Q 3
|
||||
python3 ./test.py -f 2-query/join2.py -Q 3
|
||||
python3 ./test.py -f 2-query/cast.py -Q 3
|
||||
python3 ./test.py -f 2-query/substr.py -Q 3
|
||||
python3 ./test.py -f 2-query/union.py -Q 3
|
||||
python3 ./test.py -f 2-query/union1.py -Q 3
|
||||
python3 ./test.py -f 2-query/concat.py -Q 3
|
||||
python3 ./test.py -f 2-query/concat2.py -Q 3
|
||||
python3 ./test.py -f 2-query/concat_ws.py -Q 3
|
||||
python3 ./test.py -f 2-query/concat_ws2.py -Q 3
|
||||
#python3 ./test.py -f 2-query/check_tsdb.py -Q 3
|
||||
python3 ./test.py -f 2-query/spread.py -Q 3
|
||||
python3 ./test.py -f 2-query/hyperloglog.py -Q 3
|
||||
python3 ./test.py -f 2-query/explain.py -Q 3
|
||||
python3 ./test.py -f 2-query/leastsquares.py -Q 3
|
||||
python3 ./test.py -f 2-query/timezone.py -Q 3
|
||||
python3 ./test.py -f 2-query/Now.py -Q 3
|
||||
python3 ./test.py -f 2-query/Today.py -Q 3
|
||||
python3 ./test.py -f 2-query/max.py -Q 3
|
||||
python3 ./test.py -f 2-query/min.py -Q 3
|
||||
python3 ./test.py -f 2-query/count.py -Q 3
|
||||
#python3 ./test.py -f 2-query/last.py -Q 3
|
||||
python3 ./test.py -f 2-query/first.py -Q 3
|
||||
python3 ./test.py -f 2-query/To_iso8601.py -Q 3
|
||||
python3 ./test.py -f 2-query/To_unixtimestamp.py -Q 3
|
||||
python3 ./test.py -f 2-query/timetruncate.py -Q 3
|
||||
python3 ./test.py -f 2-query/diff.py -Q 3
|
||||
python3 ./test.py -f 2-query/Timediff.py -Q 3
|
||||
python3 ./test.py -f 2-query/json_tag.py -Q 3
|
||||
python3 ./test.py -f 2-query/top.py -Q 3
|
||||
python3 ./test.py -f 2-query/bottom.py -Q 3
|
||||
python3 ./test.py -f 2-query/percentile.py -Q 3
|
||||
python3 ./test.py -f 2-query/apercentile.py -Q 3
|
||||
python3 ./test.py -f 2-query/abs.py -Q 3
|
||||
python3 ./test.py -f 2-query/ceil.py -Q 3
|
||||
python3 ./test.py -f 2-query/floor.py -Q 3
|
||||
python3 ./test.py -f 2-query/round.py -Q 3
|
||||
python3 ./test.py -f 2-query/log.py -Q 3
|
||||
python3 ./test.py -f 2-query/pow.py -Q 3
|
||||
python3 ./test.py -f 2-query/sqrt.py -Q 3
|
||||
python3 ./test.py -f 2-query/sin.py -Q 3
|
||||
python3 ./test.py -f 2-query/cos.py -Q 3
|
||||
python3 ./test.py -f 2-query/tan.py -Q 3
|
||||
python3 ./test.py -f 2-query/arcsin.py -Q 3
|
||||
python3 ./test.py -f 2-query/arccos.py -Q 3
|
||||
python3 ./test.py -f 2-query/arctan.py -Q 3
|
||||
python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 3
|
||||
# python3 ./test.py -f 2-query/nestedQuery.py -Q 3
|
||||
# python3 ./test.py -f 2-query/nestedQuery_str.py -Q 3
|
||||
# python3 ./test.py -f 2-query/avg.py -Q 3
|
||||
# python3 ./test.py -f 2-query/elapsed.py -Q 3
|
||||
python3 ./test.py -f 2-query/csum.py -Q 3
|
||||
python3 ./test.py -f 2-query/mavg.py -Q 3
|
||||
python3 ./test.py -f 2-query/sample.py -Q 3
|
||||
python3 ./test.py -f 2-query/function_diff.py -Q 3
|
||||
python3 ./test.py -f 2-query/unique.py -Q 3
|
||||
python3 ./test.py -f 2-query/stateduration.py -Q 3
|
||||
python3 ./test.py -f 2-query/function_stateduration.py -Q 3
|
||||
python3 ./test.py -f 2-query/statecount.py -Q 3
|
||||
python3 ./test.py -f 2-query/tail.py -Q 3
|
||||
python3 ./test.py -f 2-query/ttl_comment.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_count.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_max.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_min.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_sum.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_spread.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_apercentile.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_avg.py -Q 3
|
||||
python3 ./test.py -f 2-query/distribute_agg_stddev.py -Q 3
|
||||
python3 ./test.py -f 2-query/twa.py -Q 3
|
||||
python3 ./test.py -f 2-query/irate.py -Q 3
|
||||
python3 ./test.py -f 2-query/function_null.py -Q 3
|
||||
python3 ./test.py -f 2-query/count_partition.py -Q 3
|
||||
python3 ./test.py -f 2-query/max_partition.py -Q 3
|
||||
python3 ./test.py -f 2-query/last_row.py -Q 3
|
||||
python3 ./test.py -f 2-query/tsbsQuery.py -Q 3
|
||||
|
||||
|
|
Loading…
Reference in New Issue