From 42905822495f67d1db606d7013d77f07de760997 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Wed, 10 Aug 2022 17:47:28 +0800 Subject: [PATCH 001/108] enh: insert optimize --- include/libs/parser/parser.h | 6 +- source/client/src/clientImpl.c | 36 +++--- source/libs/parser/inc/parUtil.h | 53 ++++++--- source/libs/parser/src/parInsert.c | 170 +++++++++++++++++++---------- source/libs/parser/src/parUtil.c | 170 ++++++++++++++++++++++++++++- source/libs/parser/src/parser.c | 4 +- 6 files changed, 343 insertions(+), 96 deletions(-) diff --git a/include/libs/parser/parser.h b/include/libs/parser/parser.h index a3de9164a2..717278d51d 100644 --- a/include/libs/parser/parser.h +++ b/include/libs/parser/parser.h @@ -53,6 +53,8 @@ typedef struct SParseContext { int8_t schemalessType; const char* svrVer; bool nodeOffline; + SArray* pTableMetaPos; // sql table pos => catalog data pos + SArray* pTableVgroupPos; // sql table pos => catalog data pos } SParseContext; int32_t qParseSql(SParseContext* pCxt, SQuery** pQuery); @@ -84,8 +86,8 @@ int32_t qBindStmtSingleColValue(void* pBlock, TAOS_MULTI_BIND* bind, char* msgBu int32_t rowNum); int32_t qBuildStmtColFields(void* pDataBlock, int32_t* fieldNum, TAOS_FIELD_E** fields); int32_t qBuildStmtTagFields(void* pBlock, void* boundTags, int32_t* fieldNum, TAOS_FIELD_E** fields); -int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const char* sTableName, char* tName, TAOS_MULTI_BIND* bind, - char* msgBuf, int32_t msgBufLen); +int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const char* sTableName, char* tName, + TAOS_MULTI_BIND* bind, char* msgBuf, int32_t msgBufLen); void destroyBoundColumnInfo(void* pBoundInfo); int32_t qCreateSName(SName* pName, const char* pTableName, int32_t acctId, char* dbName, char* msgBuf, int32_t msgBufLen); diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 4917a01c55..a694c8c93b 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -689,11 +689,11 @@ int32_t scheduleQuery(SRequestObj* pRequest, SQueryPlan* pDag, SArray* pNodeList TDMT_VND_CREATE_TABLE == pRequest->type) { pRequest->body.resInfo.numOfRows = res.numOfRows; if (TDMT_VND_SUBMIT == pRequest->type) { - STscObj *pTscObj = pRequest->pTscObj; - SAppClusterSummary *pActivity = &pTscObj->pAppInfo->summary; - atomic_add_fetch_64((int64_t *)&pActivity->numOfInsertRows, res.numOfRows); + STscObj* pTscObj = pRequest->pTscObj; + SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary; + atomic_add_fetch_64((int64_t*)&pActivity->numOfInsertRows, res.numOfRows); } - + schedulerFreeJob(&pRequest->body.queryJob, 0); } @@ -800,8 +800,8 @@ int32_t handleQueryExecRsp(SRequestObj* pRequest) { break; } case TDMT_VND_SUBMIT: { - atomic_add_fetch_64((int64_t *)&pAppInfo->summary.insertBytes, pRes->numOfBytes); - + atomic_add_fetch_64((int64_t*)&pAppInfo->summary.insertBytes, pRes->numOfBytes); + code = handleSubmitExecRes(pRequest, pRes->res, pCatalog, &epset); break; } @@ -832,9 +832,9 @@ void schedulerExecCb(SExecResult* pResult, void* param, int32_t code) { if (pResult) { pRequest->body.resInfo.numOfRows = pResult->numOfRows; if (TDMT_VND_SUBMIT == pRequest->type) { - STscObj *pTscObj = pRequest->pTscObj; - SAppClusterSummary *pActivity = &pTscObj->pAppInfo->summary; - atomic_add_fetch_64((int64_t *)&pActivity->numOfInsertRows, pResult->numOfRows); + STscObj* pTscObj = pRequest->pTscObj; + SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary; + atomic_add_fetch_64((int64_t*)&pActivity->numOfInsertRows, pResult->numOfRows); } } @@ -877,14 +877,14 @@ SRequestObj* launchQueryImpl(SRequestObj* pRequest, SQuery* pQuery, bool keepQue if (pQuery->pRoot) { pRequest->stmtType = pQuery->pRoot->type; } - + if (pQuery->pRoot && !pRequest->inRetry) { - STscObj *pTscObj = pRequest->pTscObj; - SAppClusterSummary *pActivity = &pTscObj->pAppInfo->summary; + STscObj* pTscObj = pRequest->pTscObj; + SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary; if (QUERY_NODE_VNODE_MODIF_STMT == pQuery->pRoot->type) { - atomic_add_fetch_64((int64_t *)&pActivity->numOfInsertsReq, 1); + atomic_add_fetch_64((int64_t*)&pActivity->numOfInsertsReq, 1); } else if (QUERY_NODE_SELECT_STMT == pQuery->pRoot->type) { - atomic_add_fetch_64((int64_t *)&pActivity->numOfQueryReq, 1); + atomic_add_fetch_64((int64_t*)&pActivity->numOfQueryReq, 1); } } @@ -1467,9 +1467,9 @@ void* doFetchRows(SRequestObj* pRequest, bool setupOneRowPtr, bool convertUcs4) tscDebug("0x%" PRIx64 " fetch results, numOfRows:%d total Rows:%" PRId64 ", complete:%d, reqId:0x%" PRIx64, pRequest->self, pResInfo->numOfRows, pResInfo->totalRows, pResInfo->completed, pRequest->requestId); - STscObj *pTscObj = pRequest->pTscObj; - SAppClusterSummary *pActivity = &pTscObj->pAppInfo->summary; - atomic_add_fetch_64((int64_t *)&pActivity->fetchBytes, pRequest->body.resInfo.payloadLen); + STscObj* pTscObj = pRequest->pTscObj; + SAppClusterSummary* pActivity = &pTscObj->pAppInfo->summary; + atomic_add_fetch_64((int64_t*)&pActivity->fetchBytes, pRequest->body.resInfo.payloadLen); if (pResultInfo->numOfRows == 0) { return NULL; @@ -1983,7 +1983,7 @@ int32_t transferTableNameList(const char* tbList, int32_t acctId, char* dbName, bool inEscape = false; int32_t code = 0; - void *pIter = NULL; + void* pIter = NULL; int32_t vIdx = 0; int32_t vPos[2]; diff --git a/source/libs/parser/inc/parUtil.h b/source/libs/parser/inc/parUtil.h index 2249bc7823..308afd467f 100644 --- a/source/libs/parser/inc/parUtil.h +++ b/source/libs/parser/inc/parUtil.h @@ -22,6 +22,7 @@ extern "C" { #include "catalog.h" #include "os.h" +#include "parser.h" #include "query.h" #define parserFatal(param, ...) qFatal("PARSER: " param, ##__VA_ARGS__) @@ -44,18 +45,37 @@ typedef struct SParseTablesMetaReq { SHashObj* pTables; } SParseTablesMetaReq; +typedef enum ECatalogReqType { + CATALOG_REQ_TYPE_META = 1, + CATALOG_REQ_TYPE_VGROUP, + CATALOG_REQ_TYPE_BOTH +} ECatalogReqType; + +typedef struct SInsertTablesMetaReq { + char dbFName[TSDB_DB_FNAME_LEN]; + SArray* pTableMetaPos; + SArray* pTableMetaReq; // element is SName + SArray* pTableVgroupPos; + SArray* pTableVgroupReq; // element is SName +} SInsertTablesMetaReq; + typedef struct SParseMetaCache { - SHashObj* pTableMeta; // key is tbFName, element is STableMeta* - SHashObj* pDbVgroup; // key is dbFName, element is SArray* - SHashObj* pTableVgroup; // key is tbFName, element is SVgroupInfo* - SHashObj* pDbCfg; // key is tbFName, element is SDbCfgInfo* - SHashObj* pDbInfo; // key is tbFName, element is SDbInfo* - SHashObj* pUserAuth; // key is SUserAuthInfo serialized string, element is bool indicating whether or not to pass - SHashObj* pUdf; // key is funcName, element is SFuncInfo* - SHashObj* pTableIndex; // key is tbFName, element is SArray* - SHashObj* pTableCfg; // key is tbFName, element is STableCfg* - SArray* pDnodes; // element is SEpSet - bool dnodeRequired; + SHashObj* pTableMeta; // key is tbFName, element is STableMeta* + SHashObj* pDbVgroup; // key is dbFName, element is SArray* + SHashObj* pTableVgroup; // key is tbFName, element is SVgroupInfo* + SHashObj* pDbCfg; // key is tbFName, element is SDbCfgInfo* + SHashObj* pDbInfo; // key is tbFName, element is SDbInfo* + SHashObj* pUserAuth; // key is SUserAuthInfo serialized string, element is bool indicating whether or not to pass + SHashObj* pUdf; // key is funcName, element is SFuncInfo* + SHashObj* pTableIndex; // key is tbFName, element is SArray* + SHashObj* pTableCfg; // key is tbFName, element is STableCfg* + SArray* pDnodes; // element is SEpSet + bool dnodeRequired; + SHashObj* pInsertTables; // key is dbName, element is SInsertTablesMetaReq*, for insert + const char* pUser; + const SArray* pTableMetaData; // pRes = STableMeta* + const SArray* pTableVgroupData; // pRes = SVgroupInfo* + int32_t sqlTableNum; } SParseMetaCache; int32_t generateSyntaxErrMsg(SMsgBuf* pBuf, int32_t errCode, ...); @@ -72,8 +92,9 @@ STableMeta* tableMetaDup(const STableMeta* pTableMeta); int32_t trimString(const char* src, int32_t len, char* dst, int32_t dlen); -int32_t buildCatalogReq(const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq); -int32_t putMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache); +int32_t buildCatalogReq(SParseContext* pCxt, const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq); +int32_t putMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache, + bool insertValuesStmt); int32_t reserveTableMetaInCache(int32_t acctId, const char* pDb, const char* pTable, SParseMetaCache* pMetaCache); int32_t reserveTableMetaInCacheExt(const SName* pName, SParseMetaCache* pMetaCache); int32_t reserveDbVgInfoInCache(int32_t acctId, const char* pDb, SParseMetaCache* pMetaCache); @@ -100,6 +121,12 @@ int32_t getUdfInfoFromCache(SParseMetaCache* pMetaCache, const char* pFunc, SFun int32_t getTableIndexFromCache(SParseMetaCache* pMetaCache, const SName* pName, SArray** pIndexes); int32_t getTableCfgFromCache(SParseMetaCache* pMetaCache, const SName* pName, STableCfg** pOutput); int32_t getDnodeListFromCache(SParseMetaCache* pMetaCache, SArray** pDnodes); +int32_t reserveTableMetaInCacheForInsert(const SName* pName, ECatalogReqType reqType, int32_t tableNo, + SParseMetaCache* pMetaCache); +int32_t getTableMetaFromCacheForInsert(SArray* pTableMetaPos, SParseMetaCache* pMetaCache, int32_t tableNo, + STableMeta** pMeta); +int32_t getTableVgroupFromCacheForInsert(SArray* pTableVgroupPos, SParseMetaCache* pMetaCache, int32_t tableNo, + SVgroupInfo* pVgroup); void destoryParseMetaCache(SParseMetaCache* pMetaCache, bool request); #ifdef __cplusplus diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index 85f73f0663..112c1f54e4 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -18,10 +18,10 @@ #include "parInt.h" #include "parToken.h" #include "parUtil.h" +#include "query.h" #include "tglobal.h" #include "ttime.h" #include "ttypes.h" -#include "query.h" #define NEXT_TOKEN(pSql, sToken) \ do { \ @@ -73,6 +73,9 @@ typedef struct SInsertParseContext { SStmtCallback* pStmtCb; SParseMetaCache* pMetaCache; char sTableName[TSDB_TABLE_NAME_LEN]; + char tmpTokenBuf[TSDB_MAX_BYTES_PER_ROW]; + int64_t memElapsed; + int64_t parRowElapsed; } SInsertParseContext; typedef struct SInsertParseSyntaxCxt { @@ -203,10 +206,11 @@ static int32_t checkAuth(SInsertParseContext* pCxt, char* pDbFname, bool* pPass) return catalogChkAuth(pBasicCtx->pCatalog, &conn, pBasicCtx->pUser, pDbFname, AUTH_TYPE_WRITE, pPass); } -static int32_t getTableSchema(SInsertParseContext* pCxt, SName* pTbName, bool isStb, STableMeta** pTableMeta) { +static int32_t getTableSchema(SInsertParseContext* pCxt, int32_t tbNo, SName* pTbName, bool isStb, + STableMeta** pTableMeta) { SParseContext* pBasicCtx = pCxt->pComCxt; if (pBasicCtx->async) { - return getTableMetaFromCache(pCxt->pMetaCache, pTbName, pTableMeta); + return getTableMetaFromCacheForInsert(pBasicCtx->pTableMetaPos, pCxt->pMetaCache, tbNo, pTableMeta); } SRequestConnInfo conn = {.pTrans = pBasicCtx->pTransporter, .requestId = pBasicCtx->requestId, @@ -219,10 +223,10 @@ static int32_t getTableSchema(SInsertParseContext* pCxt, SName* pTbName, bool is return catalogGetTableMeta(pBasicCtx->pCatalog, &conn, pTbName, pTableMeta); } -static int32_t getTableVgroup(SInsertParseContext* pCxt, SName* pTbName, SVgroupInfo* pVg) { +static int32_t getTableVgroup(SInsertParseContext* pCxt, int32_t tbNo, SName* pTbName, SVgroupInfo* pVg) { SParseContext* pBasicCtx = pCxt->pComCxt; if (pBasicCtx->async) { - return getTableVgroupFromCache(pCxt->pMetaCache, pTbName, pVg); + return getTableVgroupFromCacheForInsert(pBasicCtx->pTableVgroupPos, pCxt->pMetaCache, tbNo, pVg); } SRequestConnInfo conn = {.pTrans = pBasicCtx->pTransporter, .requestId = pBasicCtx->requestId, @@ -231,28 +235,28 @@ static int32_t getTableVgroup(SInsertParseContext* pCxt, SName* pTbName, SVgroup return catalogGetTableHashVgroup(pBasicCtx->pCatalog, &conn, pTbName, pVg); } -static int32_t getTableMetaImpl(SInsertParseContext* pCxt, SName* name, char* dbFname, bool isStb) { - bool pass = false; - CHECK_CODE(checkAuth(pCxt, dbFname, &pass)); - if (!pass) { - return TSDB_CODE_PAR_PERMISSION_DENIED; - } +static int32_t getTableMetaImpl(SInsertParseContext* pCxt, int32_t tbNo, SName* name, char* dbFname, bool isStb) { + // bool pass = false; + // CHECK_CODE(checkAuth(pCxt, dbFname, &pass)); + // if (!pass) { + // return TSDB_CODE_PAR_PERMISSION_DENIED; + // } - CHECK_CODE(getTableSchema(pCxt, name, isStb, &pCxt->pTableMeta)); + CHECK_CODE(getTableSchema(pCxt, tbNo, name, isStb, &pCxt->pTableMeta)); if (!isStb) { SVgroupInfo vg; - CHECK_CODE(getTableVgroup(pCxt, name, &vg)); + CHECK_CODE(getTableVgroup(pCxt, tbNo, name, &vg)); CHECK_CODE(taosHashPut(pCxt->pVgroupsHashObj, (const char*)&vg.vgId, sizeof(vg.vgId), (char*)&vg, sizeof(vg))); } return TSDB_CODE_SUCCESS; } -static int32_t getTableMeta(SInsertParseContext* pCxt, SName* name, char* dbFname) { - return getTableMetaImpl(pCxt, name, dbFname, false); +static int32_t getTableMeta(SInsertParseContext* pCxt, int32_t tbNo, SName* name, char* dbFname) { + return getTableMetaImpl(pCxt, tbNo, name, dbFname, false); } -static int32_t getSTableMeta(SInsertParseContext* pCxt, SName* name, char* dbFname) { - return getTableMetaImpl(pCxt, name, dbFname, true); +static int32_t getSTableMeta(SInsertParseContext* pCxt, int32_t tbNo, SName* name, char* dbFname) { + return getTableMetaImpl(pCxt, tbNo, name, dbFname, true); } static int32_t getDBCfg(SInsertParseContext* pCxt, const char* pDbFName, SDbCfgInfo* pInfo) { @@ -1028,10 +1032,10 @@ end: return code; } -static int32_t storeTableMeta(SInsertParseContext* pCxt, SHashObj* pHash, SName* pTableName, const char* pName, - int32_t len, STableMeta* pMeta) { +static int32_t storeTableMeta(SInsertParseContext* pCxt, SHashObj* pHash, int32_t tbNo, SName* pTableName, + const char* pName, int32_t len, STableMeta* pMeta) { SVgroupInfo vg; - CHECK_CODE(getTableVgroup(pCxt, pTableName, &vg)); + CHECK_CODE(getTableVgroup(pCxt, tbNo, pTableName, &vg)); CHECK_CODE(taosHashPut(pCxt->pVgroupsHashObj, (const char*)&vg.vgId, sizeof(vg.vgId), (char*)&vg, sizeof(vg))); pMeta->uid = 0; @@ -1084,7 +1088,7 @@ static int32_t ignoreAutoCreateTableClause(SInsertParseContext* pCxt) { } // pSql -> stb_name [(tag1_name, ...)] TAGS (tag1_value, ...) -static int32_t parseUsingClause(SInsertParseContext* pCxt, SName* name, char* tbFName) { +static int32_t parseUsingClause(SInsertParseContext* pCxt, int32_t tbNo, SName* name, char* tbFName) { int32_t len = strlen(tbFName); STableMeta** pMeta = taosHashGet(pCxt->pSubTableHashObj, tbFName, len); if (NULL != pMeta) { @@ -1102,11 +1106,11 @@ static int32_t parseUsingClause(SInsertParseContext* pCxt, SName* name, char* tb tNameGetFullDbName(&sname, dbFName); strcpy(pCxt->sTableName, sname.tname); - CHECK_CODE(getSTableMeta(pCxt, &sname, dbFName)); + CHECK_CODE(getSTableMeta(pCxt, tbNo, &sname, dbFName)); if (TSDB_SUPER_TABLE != pCxt->pTableMeta->tableType) { return buildInvalidOperationMsg(&pCxt->msg, "create table only from super table is allowed"); } - CHECK_CODE(storeTableMeta(pCxt, pCxt->pSubTableHashObj, name, tbFName, len, pCxt->pTableMeta)); + CHECK_CODE(storeTableMeta(pCxt, pCxt->pSubTableHashObj, tbNo, name, tbFName, len, pCxt->pTableMeta)); SSchema* pTagsSchema = getTableTagSchema(pCxt->pTableMeta); setBoundColumnInfo(&pCxt->tags, pTagsSchema, getNumOfTags(pCxt->pTableMeta)); @@ -1216,7 +1220,7 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo CHECK_CODE(initRowBuilder(&pDataBlock->rowBuilder, pDataBlock->pTableMeta->sversion, &pDataBlock->boundColumnInfo)); (*numOfRows) = 0; - char tmpTokenBuf[TSDB_MAX_BYTES_PER_ROW] = {0}; // used for deleting Escape character: \\, \', \" + // char tmpTokenBuf[TSDB_MAX_BYTES_PER_ROW] = {0}; // used for deleting Escape character: \\, \', \" SToken sToken; while (1) { int32_t index = 0; @@ -1226,6 +1230,8 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo } pCxt->pSql += index; + // int64_t memStart = taosGetTimestampMs(); + if ((*numOfRows) >= maxRows || pDataBlock->size + extendedRowSize >= pDataBlock->nAllocSize) { int32_t tSize; CHECK_CODE(allocateMemIfNeed(pDataBlock, extendedRowSize, &tSize)); @@ -1233,12 +1239,17 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo maxRows = tSize; } + // pCxt->memElapsed += taosGetTimestampMs() - memStart; + // int64_t parRowStart = taosGetTimestampMs(); + bool gotRow = false; - CHECK_CODE(parseOneRow(pCxt, pDataBlock, tinfo.precision, &gotRow, tmpTokenBuf)); + CHECK_CODE(parseOneRow(pCxt, pDataBlock, tinfo.precision, &gotRow, pCxt->tmpTokenBuf)); if (gotRow) { pDataBlock->size += extendedRowSize; // len; } + // pCxt->parRowElapsed += taosGetTimestampMs() - parRowStart; + NEXT_VALID_TOKEN(pCxt->pSql, sToken); if (TK_NK_COMMA == sToken.type) { return generateSyntaxErrMsg(&pCxt->msg, TSDB_CODE_PAR_INVALID_COLUMNS_NUM); @@ -1258,15 +1269,20 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo } static int32_t parseValuesClause(SInsertParseContext* pCxt, STableDataBlocks* dataBuf) { + // int64_t memStart = taosGetTimestampMs(); + int32_t maxNumOfRows; CHECK_CODE(allocateMemIfNeed(dataBuf, getExtendedRowSize(dataBuf), &maxNumOfRows)); + // pCxt->memElapsed += taosGetTimestampMs() - memStart; + int32_t numOfRows = 0; CHECK_CODE(parseValues(pCxt, dataBuf, maxNumOfRows, &numOfRows)); SSubmitBlk* pBlocks = (SSubmitBlk*)(dataBuf->pData); if (TSDB_CODE_SUCCESS != setBlockInfo(pBlocks, dataBuf, numOfRows)) { - return buildInvalidOperationMsg(&pCxt->msg, "too many rows in sql, total number of rows should be less than INT32_MAX"); + return buildInvalidOperationMsg(&pCxt->msg, + "too many rows in sql, total number of rows should be less than INT32_MAX"); } dataBuf->numOfTables = 1; @@ -1338,7 +1354,8 @@ static int32_t parseDataFromFile(SInsertParseContext* pCxt, SToken filePath, STa SSubmitBlk* pBlocks = (SSubmitBlk*)(dataBuf->pData); if (TSDB_CODE_SUCCESS != setBlockInfo(pBlocks, dataBuf, numOfRows)) { - return buildInvalidOperationMsg(&pCxt->msg, "too many rows in sql, total number of rows should be less than INT32_MAX"); + return buildInvalidOperationMsg(&pCxt->msg, + "too many rows in sql, total number of rows should be less than INT32_MAX"); } dataBuf->numOfTables = 1; @@ -1347,7 +1364,9 @@ static int32_t parseDataFromFile(SInsertParseContext* pCxt, SToken filePath, STa } static void destroyInsertParseContextForTable(SInsertParseContext* pCxt) { - taosMemoryFreeClear(pCxt->pTableMeta); + if (!pCxt->pComCxt->async) { + taosMemoryFreeClear(pCxt->pTableMeta); + } destroyBoundColumnInfo(&pCxt->tags); tdDestroySVCreateTbReq(&pCxt->createTblReq); } @@ -1372,11 +1391,21 @@ static void destroyInsertParseContext(SInsertParseContext* pCxt) { // [...]; static int32_t parseInsertBody(SInsertParseContext* pCxt) { int32_t tbNum = 0; + SName name; char tbFName[TSDB_TABLE_FNAME_LEN]; + char dbFName[TSDB_DB_FNAME_LEN]; bool autoCreateTbl = false; + // int64_t parBodyStart = taosGetTimestampMs(); + // int64_t parTableElapsed = 0; + // int64_t getTableElapsed = 0; + // int64_t getDataBufElapsed = 0; + // int64_t parValueElapsed = 0; + // for each table while (1) { + // int64_t parTableStart = taosGetTimestampMs(); + SToken sToken; char* tbName = NULL; @@ -1415,20 +1444,21 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { SToken tbnameToken = sToken; NEXT_TOKEN(pCxt->pSql, sToken); - SName name; - CHECK_CODE(createSName(&name, &tbnameToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); + if (!pCxt->pComCxt->async) { + CHECK_CODE(createSName(&name, &tbnameToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); - tNameExtractFullName(&name, tbFName); - CHECK_CODE(taosHashPut(pCxt->pTableNameHashObj, tbFName, strlen(tbFName), &name, sizeof(SName))); - char dbFName[TSDB_DB_FNAME_LEN]; - tNameGetFullDbName(&name, dbFName); - CHECK_CODE(taosHashPut(pCxt->pDbFNameHashObj, dbFName, strlen(dbFName), dbFName, sizeof(dbFName))); + tNameExtractFullName(&name, tbFName); + CHECK_CODE(taosHashPut(pCxt->pTableNameHashObj, tbFName, strlen(tbFName), &name, sizeof(SName))); + + tNameGetFullDbName(&name, dbFName); + CHECK_CODE(taosHashPut(pCxt->pDbFNameHashObj, dbFName, strlen(dbFName), dbFName, sizeof(dbFName))); + } bool existedUsing = false; // USING clause if (TK_USING == sToken.type) { existedUsing = true; - CHECK_CODE(parseUsingClause(pCxt, &name, tbFName)); + CHECK_CODE(parseUsingClause(pCxt, tbNum, &name, tbFName)); NEXT_TOKEN(pCxt->pSql, sToken); autoCreateTbl = true; } @@ -1438,22 +1468,28 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { // pSql -> field1_name, ...) pBoundColsStart = pCxt->pSql; CHECK_CODE(ignoreBoundColumns(pCxt)); - // CHECK_CODE(parseBoundColumns(pCxt, &dataBuf->boundColumnInfo, getTableColumnSchema(pCxt->pTableMeta))); NEXT_TOKEN(pCxt->pSql, sToken); } + // parTableElapsed += taosGetTimestampMs() - parTableStart; + // int64_t getTableStart = taosGetTimestampMs(); + if (TK_USING == sToken.type) { - CHECK_CODE(parseUsingClause(pCxt, &name, tbFName)); + CHECK_CODE(parseUsingClause(pCxt, tbNum, &name, tbFName)); NEXT_TOKEN(pCxt->pSql, sToken); autoCreateTbl = true; } else if (!existedUsing) { - CHECK_CODE(getTableMeta(pCxt, &name, dbFName)); + CHECK_CODE(getTableMeta(pCxt, tbNum, &name, dbFName)); } + // getTableElapsed += taosGetTimestampMs() - getTableStart; + // int64_t getDataBufStart = taosGetTimestampMs(); + STableDataBlocks* dataBuf = NULL; - CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, tbFName, strlen(tbFName), TSDB_DEFAULT_PAYLOAD_SIZE, - sizeof(SSubmitBlk), getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, - &dataBuf, NULL, &pCxt->createTblReq)); + CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, &pCxt->pTableMeta->uid, sizeof(pCxt->pTableMeta->uid), + TSDB_DEFAULT_PAYLOAD_SIZE, sizeof(SSubmitBlk), + getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, &dataBuf, NULL, + &pCxt->createTblReq)); if (NULL != pBoundColsStart) { char* pCurrPos = pCxt->pSql; @@ -1462,9 +1498,13 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { pCxt->pSql = pCurrPos; } + // getDataBufElapsed += taosGetTimestampMs() - getDataBufStart; + if (TK_VALUES == sToken.type) { // pSql -> (field1_value, ...) [(field1_value2, ...) ...] + // int64_t parValueStart = taosGetTimestampMs(); CHECK_CODE(parseValuesClause(pCxt, dataBuf)); + // parValueElapsed += taosGetTimestampMs() - parValueStart; TSDB_QUERY_SET_TYPE(pCxt->pOutput->insertType, TSDB_QUERY_TYPE_INSERT); tbNum++; @@ -1488,6 +1528,12 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { return buildSyntaxErrMsg(&pCxt->msg, "keyword VALUES or FILE is expected", sToken.z); } + // printf( + // "parse %d sql %d tables %d rows elapsed parBodyElapsed=%ldms parTableElapsed=%ldms getTableElapsed=%ldms " + // "getDataBufElapsed=%ldms parValueElapsed=%ldms(memElapsed=%ldms parRowElapsed=%ldms)\n", + // pCxt->pComCxt->sqlLen, tbNum, pCxt->totalNum, taosGetTimestampMs() - parBodyStart, parTableElapsed, + // getTableElapsed, getDataBufElapsed, parValueElapsed, pCxt->memElapsed, pCxt->parRowElapsed); + qDebug("0x%" PRIx64 " insert input rows: %d", pCxt->pComCxt->requestId, pCxt->totalNum); if (TSDB_QUERY_HAS_TYPE(pCxt->pOutput->insertType, TSDB_QUERY_TYPE_STMT_INSERT)) { @@ -1532,7 +1578,9 @@ int32_t parseInsertSql(SParseContext* pContext, SQuery** pQuery, SParseMetaCache .totalNum = 0, .pOutput = (SVnodeModifOpStmt*)nodesMakeNode(QUERY_NODE_VNODE_MODIF_STMT), .pStmtCb = pContext->pStmtCb, - .pMetaCache = pMetaCache}; + .pMetaCache = pMetaCache, + .memElapsed = 0, + .parRowElapsed = 0}; if (pContext->pStmtCb && *pQuery) { (*pContext->pStmtCb->getExecInfoFn)(pContext->pStmtCb->pStmt, &context.pVgroupsHashObj, @@ -1540,7 +1588,7 @@ int32_t parseInsertSql(SParseContext* pContext, SQuery** pQuery, SParseMetaCache } else { context.pVgroupsHashObj = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_NO_LOCK); context.pTableBlockHashObj = - taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); + taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), true, HASH_NO_LOCK); } if (NULL == context.pVgroupsHashObj || NULL == context.pTableBlockHashObj || NULL == context.pSubTableHashObj || @@ -1649,24 +1697,27 @@ static int32_t skipUsingClause(SInsertParseSyntaxCxt* pCxt) { return TSDB_CODE_SUCCESS; } -static int32_t collectTableMetaKey(SInsertParseSyntaxCxt* pCxt, SToken* pTbToken) { +static int32_t collectTableMetaKey(SInsertParseSyntaxCxt* pCxt, bool isStable, int32_t tableNo, SToken* pTbToken) { SName name; CHECK_CODE(createSName(&name, pTbToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); - CHECK_CODE(reserveUserAuthInCacheExt(pCxt->pComCxt->pUser, &name, AUTH_TYPE_WRITE, pCxt->pMetaCache)); - CHECK_CODE(reserveTableMetaInCacheExt(&name, pCxt->pMetaCache)); - CHECK_CODE(reserveTableVgroupInCacheExt(&name, pCxt->pMetaCache)); + // CHECK_CODE(reserveUserAuthInCacheExt(pCxt->pComCxt->pUser, &name, AUTH_TYPE_WRITE, pCxt->pMetaCache)); + // CHECK_CODE(reserveTableMetaInCacheExt(&name, pCxt->pMetaCache)); + // CHECK_CODE(reserveTableVgroupInCacheExt(&name, pCxt->pMetaCache)); + CHECK_CODE(reserveTableMetaInCacheForInsert(&name, isStable ? CATALOG_REQ_TYPE_META : CATALOG_REQ_TYPE_BOTH, tableNo, + pCxt->pMetaCache)); return TSDB_CODE_SUCCESS; } -static int32_t collectAutoCreateTableMetaKey(SInsertParseSyntaxCxt* pCxt, SToken* pTbToken) { +static int32_t collectAutoCreateTableMetaKey(SInsertParseSyntaxCxt* pCxt, int32_t tableNo, SToken* pTbToken) { SName name; CHECK_CODE(createSName(&name, pTbToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); - CHECK_CODE(reserveTableVgroupInCacheExt(&name, pCxt->pMetaCache)); + CHECK_CODE(reserveTableMetaInCacheForInsert(&name, CATALOG_REQ_TYPE_VGROUP, tableNo, pCxt->pMetaCache)); return TSDB_CODE_SUCCESS; } static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { - bool hasData = false; + bool hasData = false; + int32_t tableNo = 0; // for each table while (1) { SToken sToken; @@ -1695,9 +1746,9 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { // USING clause if (TK_USING == sToken.type) { existedUsing = true; - CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, &tbnameToken)); + CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, tableNo, &tbnameToken)); NEXT_TOKEN(pCxt->pSql, sToken); - CHECK_CODE(collectTableMetaKey(pCxt, &sToken)); + CHECK_CODE(collectTableMetaKey(pCxt, true, tableNo, &sToken)); CHECK_CODE(skipUsingClause(pCxt)); NEXT_TOKEN(pCxt->pSql, sToken); } @@ -1710,15 +1761,17 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { if (TK_USING == sToken.type && !existedUsing) { existedUsing = true; - CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, &tbnameToken)); + CHECK_CODE(collectAutoCreateTableMetaKey(pCxt, tableNo, &tbnameToken)); NEXT_TOKEN(pCxt->pSql, sToken); - CHECK_CODE(collectTableMetaKey(pCxt, &sToken)); + CHECK_CODE(collectTableMetaKey(pCxt, true, tableNo, &sToken)); CHECK_CODE(skipUsingClause(pCxt)); NEXT_TOKEN(pCxt->pSql, sToken); } else { - CHECK_CODE(collectTableMetaKey(pCxt, &tbnameToken)); + CHECK_CODE(collectTableMetaKey(pCxt, false, tableNo, &tbnameToken)); } + ++tableNo; + if (TK_VALUES == sToken.type) { // pSql -> (field1_value, ...) [(field1_value2, ...) ...] CHECK_CODE(skipValuesClause(pCxt)); @@ -1750,7 +1803,9 @@ int32_t parseInsertSyntax(SParseContext* pContext, SQuery** pQuery, SParseMetaCa .pMetaCache = pMetaCache}; int32_t code = skipInsertInto(&context.pSql, &context.msg); if (TSDB_CODE_SUCCESS == code) { + // int64_t parSyntaxStart = taosGetTimestampMs(); code = parseInsertBodySyntax(&context); + // printf("parse %d sql elapsed=%ldms\n", pContext->sqlLen, taosGetTimestampMs() - parSyntaxStart); } if (TSDB_CODE_SUCCESS == code) { *pQuery = (SQuery*)nodesMakeNode(QUERY_NODE_QUERY); @@ -2073,7 +2128,8 @@ int32_t qBindStmtSingleColValue(void* pBlock, TAOS_MULTI_BIND* bind, char* msgBu SSubmitBlk* pBlocks = (SSubmitBlk*)(pDataBlock->pData); if (TSDB_CODE_SUCCESS != setBlockInfo(pBlocks, pDataBlock, bind->num)) { - return buildInvalidOperationMsg(&pBuf, "too many rows in sql, total number of rows should be less than INT32_MAX"); + return buildInvalidOperationMsg(&pBuf, + "too many rows in sql, total number of rows should be less than INT32_MAX"); } } diff --git a/source/libs/parser/src/parUtil.c b/source/libs/parser/src/parUtil.c index ae5a281aab..de4f70d3f3 100644 --- a/source/libs/parser/src/parUtil.c +++ b/source/libs/parser/src/parUtil.c @@ -476,9 +476,11 @@ static int32_t buildDbReq(SHashObj* pDbsHash, SArray** pDbs) { static int32_t buildTableReqFromDb(SHashObj* pDbsHash, SArray** pDbs) { if (NULL != pDbsHash) { - *pDbs = taosArrayInit(taosHashGetSize(pDbsHash), sizeof(STablesReq)); if (NULL == *pDbs) { - return TSDB_CODE_OUT_OF_MEMORY; + *pDbs = taosArrayInit(taosHashGetSize(pDbsHash), sizeof(STablesReq)); + if (NULL == *pDbs) { + return TSDB_CODE_OUT_OF_MEMORY; + } } SParseTablesMetaReq* p = taosHashIterate(pDbsHash, NULL); while (NULL != p) { @@ -530,7 +532,62 @@ static int32_t buildUdfReq(SHashObj* pUdfHash, SArray** pUdf) { return TSDB_CODE_SUCCESS; } -int32_t buildCatalogReq(const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq) { +static int32_t buildCatalogReqForInsert(SParseContext* pCxt, const SParseMetaCache* pMetaCache, + SCatalogReq* pCatalogReq) { + int32_t ndbs = taosHashGetSize(pMetaCache->pInsertTables); + pCatalogReq->pTableMeta = taosArrayInit(ndbs, sizeof(STablesReq)); + if (NULL == pCatalogReq->pTableMeta) { + return TSDB_CODE_OUT_OF_MEMORY; + } + pCatalogReq->pTableHash = taosArrayInit(ndbs, sizeof(STablesReq)); + if (NULL == pCatalogReq->pTableHash) { + return TSDB_CODE_OUT_OF_MEMORY; + } + pCatalogReq->pUser = taosArrayInit(ndbs, sizeof(SUserAuthInfo)); + if (NULL == pCatalogReq->pUser) { + return TSDB_CODE_OUT_OF_MEMORY; + } + + pCxt->pTableMetaPos = taosArrayInit(pMetaCache->sqlTableNum, sizeof(int32_t)); + pCxt->pTableVgroupPos = taosArrayInit(pMetaCache->sqlTableNum, sizeof(int32_t)); + + int32_t metaReqNo = 0; + int32_t vgroupReqNo = 0; + SInsertTablesMetaReq* p = taosHashIterate(pMetaCache->pInsertTables, NULL); + while (NULL != p) { + STablesReq req = {0}; + strcpy(req.dbFName, p->dbFName); + TSWAP(req.pTables, p->pTableMetaReq); + taosArrayPush(pCatalogReq->pTableMeta, &req); + + req.pTables = NULL; + TSWAP(req.pTables, p->pTableVgroupReq); + taosArrayPush(pCatalogReq->pTableHash, &req); + + int32_t ntables = taosArrayGetSize(p->pTableMetaPos); + for (int32_t i = 0; i < ntables; ++i) { + taosArrayInsert(pCxt->pTableMetaPos, *(int32_t*)taosArrayGet(p->pTableMetaPos, i), &metaReqNo); + ++metaReqNo; + } + + ntables = taosArrayGetSize(p->pTableVgroupPos); + for (int32_t i = 0; i < ntables; ++i) { + taosArrayInsert(pCxt->pTableVgroupPos, *(int32_t*)taosArrayGet(p->pTableVgroupPos, i), &vgroupReqNo); + ++vgroupReqNo; + } + + SUserAuthInfo auth = {0}; + strcpy(auth.user, pCxt->pUser); + strcpy(auth.dbFName, p->dbFName); + auth.type = AUTH_TYPE_WRITE; + taosArrayPush(pCatalogReq->pUser, &auth); + + p = taosHashIterate(pMetaCache->pInsertTables, p); + } + return TSDB_CODE_SUCCESS; +} + +int32_t buildCatalogReqForQuery(const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq) { int32_t code = buildTableReqFromDb(pMetaCache->pTableMeta, &pCatalogReq->pTableMeta); if (TSDB_CODE_SUCCESS == code) { code = buildDbReq(pMetaCache->pDbVgroup, &pCatalogReq->pDbVgroup); @@ -560,6 +617,13 @@ int32_t buildCatalogReq(const SParseMetaCache* pMetaCache, SCatalogReq* pCatalog return code; } +int32_t buildCatalogReq(SParseContext* pCxt, const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq) { + if (NULL != pMetaCache->pInsertTables) { + return buildCatalogReqForInsert(pCxt, pMetaCache, pCatalogReq); + } + return buildCatalogReqForQuery(pMetaCache, pCatalogReq); +} + static int32_t putMetaDataToHash(const char* pKey, int32_t len, const SArray* pData, int32_t index, SHashObj** pHash) { if (NULL == *pHash) { *pHash = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); @@ -647,7 +711,8 @@ static int32_t putUdfToCache(const SArray* pUdfReq, const SArray* pUdfData, SHas return TSDB_CODE_SUCCESS; } -int32_t putMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache) { +int32_t putMetaDataToCacheForQuery(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, + SParseMetaCache* pMetaCache) { int32_t code = putDbTableDataToCache(pCatalogReq->pTableMeta, pMetaData->pTableMeta, &pMetaCache->pTableMeta); if (TSDB_CODE_SUCCESS == code) { code = putDbDataToCache(pCatalogReq->pDbVgroup, pMetaData->pDbVgroup, &pMetaCache->pDbVgroup); @@ -677,6 +742,27 @@ int32_t putMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMet return code; } +int32_t putMetaDataToCacheForInsert(const SMetaData* pMetaData, SParseMetaCache* pMetaCache) { + int32_t ndbs = taosArrayGetSize(pMetaData->pUser); + for (int32_t i = 0; i < ndbs; ++i) { + SMetaRes* pRes = taosArrayGet(pMetaData->pUser, i); + if (!(*(bool*)pRes->pRes)) { + return TSDB_CODE_PAR_PERMISSION_DENIED; + } + } + pMetaCache->pTableMetaData = pMetaData->pTableMeta; + pMetaCache->pTableVgroupData = pMetaData->pTableHash; + return TSDB_CODE_SUCCESS; +} + +int32_t putMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache, + bool insertValuesStmt) { + if (insertValuesStmt) { + return putMetaDataToCacheForInsert(pMetaData, pMetaCache); + } + return putMetaDataToCacheForQuery(pCatalogReq, pMetaData, pMetaCache); +} + static int32_t reserveTableReqInCacheImpl(const char* pTbFName, int32_t len, SHashObj** pTables) { if (NULL == *pTables) { *pTables = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); @@ -977,6 +1063,82 @@ int32_t getDnodeListFromCache(SParseMetaCache* pMetaCache, SArray** pDnodes) { return TSDB_CODE_SUCCESS; } +static int32_t reserveTableReqInCacheForInsert(const SName* pName, ECatalogReqType reqType, int32_t tableNo, + SInsertTablesMetaReq* pReq) { + switch (reqType) { + case CATALOG_REQ_TYPE_META: + taosArrayPush(pReq->pTableMetaReq, pName); + taosArrayPush(pReq->pTableMetaPos, &tableNo); + break; + case CATALOG_REQ_TYPE_VGROUP: + taosArrayPush(pReq->pTableVgroupReq, pName); + taosArrayPush(pReq->pTableVgroupPos, &tableNo); + break; + case CATALOG_REQ_TYPE_BOTH: + taosArrayPush(pReq->pTableMetaReq, pName); + taosArrayPush(pReq->pTableMetaPos, &tableNo); + taosArrayPush(pReq->pTableVgroupReq, pName); + taosArrayPush(pReq->pTableVgroupPos, &tableNo); + break; + default: + break; + } + return TSDB_CODE_SUCCESS; +} + +static int32_t reserveTableReqInDbCacheForInsert(const SName* pName, ECatalogReqType reqType, int32_t tableNo, + SHashObj* pDbs) { + SInsertTablesMetaReq req = {.pTableMetaReq = taosArrayInit(4, sizeof(SName)), + .pTableMetaPos = taosArrayInit(4, sizeof(int32_t)), + .pTableVgroupReq = taosArrayInit(4, sizeof(SName)), + .pTableVgroupPos = taosArrayInit(4, sizeof(int32_t))}; + tNameGetFullDbName(pName, req.dbFName); + int32_t code = reserveTableReqInCacheForInsert(pName, reqType, tableNo, &req); + if (TSDB_CODE_SUCCESS == code) { + code = taosHashPut(pDbs, pName->dbname, strlen(pName->dbname), &req, sizeof(SInsertTablesMetaReq)); + } + return code; +} + +int32_t reserveTableMetaInCacheForInsert(const SName* pName, ECatalogReqType reqType, int32_t tableNo, + SParseMetaCache* pMetaCache) { + if (NULL == pMetaCache->pInsertTables) { + pMetaCache->pInsertTables = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK); + if (NULL == pMetaCache->pInsertTables) { + return TSDB_CODE_OUT_OF_MEMORY; + } + } + pMetaCache->sqlTableNum = tableNo; + SInsertTablesMetaReq* pReq = taosHashGet(pMetaCache->pInsertTables, pName->dbname, strlen(pName->dbname)); + if (NULL == pReq) { + return reserveTableReqInDbCacheForInsert(pName, reqType, tableNo, pMetaCache->pInsertTables); + } + return reserveTableReqInCacheForInsert(pName, reqType, tableNo, pReq); +} + +int32_t getTableMetaFromCacheForInsert(SArray* pTableMetaPos, SParseMetaCache* pMetaCache, int32_t tableNo, + STableMeta** pMeta) { + int32_t reqIndex = *(int32_t*)taosArrayGet(pTableMetaPos, tableNo); + SMetaRes* pRes = taosArrayGet(pMetaCache->pTableMetaData, reqIndex); + if (TSDB_CODE_SUCCESS == pRes->code) { + *pMeta = pRes->pRes; + if (NULL == *pMeta) { + return TSDB_CODE_OUT_OF_MEMORY; + } + } + return pRes->code; +} + +int32_t getTableVgroupFromCacheForInsert(SArray* pTableVgroupPos, SParseMetaCache* pMetaCache, int32_t tableNo, + SVgroupInfo* pVgroup) { + int32_t reqIndex = *(int32_t*)taosArrayGet(pTableVgroupPos, tableNo); + SMetaRes* pRes = taosArrayGet(pMetaCache->pTableVgroupData, reqIndex); + if (TSDB_CODE_SUCCESS == pRes->code) { + memcpy(pVgroup, pRes->pRes, sizeof(SVgroupInfo)); + } + return pRes->code; +} + void destoryParseTablesMetaReqHash(SHashObj* pHash) { SParseTablesMetaReq* p = taosHashIterate(pHash, NULL); while (NULL != p) { diff --git a/source/libs/parser/src/parser.c b/source/libs/parser/src/parser.c index 34cd783ace..7e27132f3c 100644 --- a/source/libs/parser/src/parser.c +++ b/source/libs/parser/src/parser.c @@ -185,7 +185,7 @@ int32_t qParseSqlSyntax(SParseContext* pCxt, SQuery** pQuery, struct SCatalogReq code = parseSqlSyntax(pCxt, pQuery, &metaCache); } if (TSDB_CODE_SUCCESS == code) { - code = buildCatalogReq(&metaCache, pCatalogReq); + code = buildCatalogReq(pCxt, &metaCache, pCatalogReq); } destoryParseMetaCache(&metaCache, true); terrno = code; @@ -195,7 +195,7 @@ int32_t qParseSqlSyntax(SParseContext* pCxt, SQuery** pQuery, struct SCatalogReq int32_t qAnalyseSqlSemantic(SParseContext* pCxt, const struct SCatalogReq* pCatalogReq, const struct SMetaData* pMetaData, SQuery* pQuery) { SParseMetaCache metaCache = {0}; - int32_t code = putMetaDataToCache(pCatalogReq, pMetaData, &metaCache); + int32_t code = putMetaDataToCache(pCatalogReq, pMetaData, &metaCache, NULL == pQuery->pRoot); if (TSDB_CODE_SUCCESS == code) { if (NULL == pQuery->pRoot) { code = parseInsertSql(pCxt, &pQuery, &metaCache); From 846d66dc1fa55d0cca1fa2c4c88ed3549a160b9e Mon Sep 17 00:00:00 2001 From: cpwu Date: Thu, 11 Aug 2022 20:27:03 +0800 Subject: [PATCH 002/108] add case --- tests/system-test/2-query/json_tag.py | 610 +++++++++--------- .../2-query/json_tag_large_tables.py | 23 +- tests/system-test/2-query/last_row.py | 494 +++++++------- tests/system-test/fulltest.sh | 8 +- 4 files changed, 551 insertions(+), 584 deletions(-) diff --git a/tests/system-test/2-query/json_tag.py b/tests/system-test/2-query/json_tag.py index d9d7ef2300..698695a228 100644 --- a/tests/system-test/2-query/json_tag.py +++ b/tests/system-test/2-query/json_tag.py @@ -1,25 +1,8 @@ -################################################################### -# Copyright (c) 2016 by TAOS Technologies, Inc. -# All rights reserved. -# -# This file is proprietary and confidential to TAOS Technologies. -# No part of this file may be reproduced, db_test.stored, transmitted, -# disclosed or used in any form or by any means other than as -# expressly provided by the written permission from Jianhui Tao -# -################################################################### - # -*- coding: utf-8 -*- -import imp -import sys -import taos from util.log import tdLog from util.cases import tdCases from util.sql import tdSql -import json -import os - class TDTestCase: def caseDescription(self): @@ -31,35 +14,33 @@ class TDTestCase: return def init(self, conn, logSql): - self.testcasePath = os.path.split(__file__)[0] - self.testcaseFilename = os.path.split(__file__)[-1] - # os.system("rm -rf %s/%s.sql" % (self.testcasePath,self.testcaseFilename)) tdLog.debug("start to execute %s" % __file__) - tdSql.init(conn.cursor(), True) + tdSql.init(conn.cursor(), False) def run(self): # tdSql.prepare() - tdSql.execute('drop database if exists db') - tdSql.execute('create database db vgroups 1') - tdSql.execute('use db') + dbname = "db" + tdSql.execute(f'drop database if exists {dbname}') + tdSql.execute(f'create database {dbname} vgroups 1') + tdSql.execute(f'use {dbname}') print("============== STEP 1 ===== prepare data & validate json string") - tdSql.error("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)") - tdSql.error("create table if not exists jsons1(ts timestamp, data json) tags(tagint int)") - tdSql.execute("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") - tdSql.execute("insert into jsons1_1 using jsons1 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')") - tdSql.execute("insert into jsons1_2 using jsons1 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060628000, 2, true, 'json2', 'sss')") - tdSql.execute("insert into jsons1_3 using jsons1 tags('{\"tag1\":false,\"tag2\":\"beijing\"}') values (1591060668000, 3, false, 'json3', 'efwe')") - tdSql.execute("insert into jsons1_4 using jsons1 tags('{\"tag1\":null,\"tag2\":\"shanghai\",\"tag3\":\"hello\"}') values (1591060728000, 4, true, 'json4', '323sd')") - tdSql.execute("insert into jsons1_5 using jsons1 tags('{\"tag1\":1.232, \"tag2\":null}') values(1591060928000, 1, false, '你就会', 'ewe')") - tdSql.execute("insert into jsons1_6 using jsons1 tags('{\"tag1\":11,\"tag2\":\"\",\"tag2\":null}') values(1591061628000, 11, false, '你就会','')") - tdSql.execute("insert into jsons1_7 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')") + tdSql.error(f"create table if not exists {dbname}.jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)") + tdSql.error(f"create table if not exists {dbname}.jsons1(ts timestamp, data json) tags(tagint int)") + tdSql.execute(f"create table if not exists {dbname}.jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") + tdSql.execute(f"insert into {dbname}.jsons1_1 using {dbname}.jsons1 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')") + tdSql.execute(f"insert into {dbname}.jsons1_2 using {dbname}.jsons1 tags('{{\"tag1\":5,\"tag2\":\"beijing\"}}') values (1591060628000, 2, true, 'json2', 'sss')") + tdSql.execute(f"insert into {dbname}.jsons1_3 using {dbname}.jsons1 tags('{{\"tag1\":false,\"tag2\":\"beijing\"}}') values (1591060668000, 3, false, 'json3', 'efwe')") + tdSql.execute(f"insert into {dbname}.jsons1_4 using {dbname}.jsons1 tags('{{\"tag1\":null,\"tag2\":\"shanghai\",\"tag3\":\"hello\"}}') values (1591060728000, 4, true, 'json4', '323sd')") + tdSql.execute(f"insert into {dbname}.jsons1_5 using {dbname}.jsons1 tags('{{\"tag1\":1.232, \"tag2\":null}}') values(1591060928000, 1, false, '你就会', 'ewe')") + tdSql.execute(f"insert into {dbname}.jsons1_6 using {dbname}.jsons1 tags('{{\"tag1\":11,\"tag2\":\"\",\"tag2\":null}}') values(1591061628000, 11, false, '你就会','')") + tdSql.execute(f"insert into {dbname}.jsons1_7 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}}') values(1591062628000, 2, NULL, '你就会', 'dws')") # test duplicate key using the first one. elimate empty key - tdSql.execute("CREATE TABLE if not exists jsons1_8 using jsons1 tags('{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}')") - tdSql.query("select jtag from jsons1_8") - tdSql.checkRows(0); + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_8 using {dbname}.jsons1 tags('{{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}}')") + tdSql.query(f"select jtag from {dbname}.jsons1_8") + tdSql.checkRows(0) - tdSql.query("select ts,jtag from jsons1 order by ts limit 2,3") + tdSql.query(f"select ts,jtag from {dbname}.jsons1 order by ts limit 2,3") tdSql.checkData(0, 0, '2020-06-02 09:17:08.000') tdSql.checkData(0, 1, '{"tag1":5,"tag2":"beijing"}') tdSql.checkData(1, 0, '2020-06-02 09:17:48.000') @@ -67,7 +48,7 @@ class TDTestCase: tdSql.checkData(2, 0, '2020-06-02 09:18:48.000') tdSql.checkData(2, 1, '{"tag1":null,"tag2":"shanghai","tag3":"hello"}') - tdSql.query("select ts,jtag->'tag1' from jsons1 order by ts limit 2,3") + tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 order by ts limit 2,3") tdSql.checkData(0, 0, '2020-06-02 09:17:08.000') tdSql.checkData(0, 1, '5.000000000') tdSql.checkData(1, 0, '2020-06-02 09:17:48.000') @@ -76,163 +57,163 @@ class TDTestCase: tdSql.checkData(2, 1, 'null') # test empty json string, save as jtag is NULL - tdSql.execute("insert into jsons1_9 using jsons1 tags('\t') values (1591062328000, 24, NULL, '你就会', '2sdw')") - tdSql.execute("CREATE TABLE if not exists jsons1_10 using jsons1 tags('')") - tdSql.execute("CREATE TABLE if not exists jsons1_11 using jsons1 tags(' ')") - tdSql.execute("CREATE TABLE if not exists jsons1_12 using jsons1 tags('{}')") - tdSql.execute("CREATE TABLE if not exists jsons1_13 using jsons1 tags('null')") + tdSql.execute(f"insert into {dbname}.jsons1_9 using {dbname}.jsons1 tags('\t') values (1591062328000, 24, NULL, '你就会', '2sdw')") + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_10 using {dbname}.jsons1 tags('')") + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_11 using {dbname}.jsons1 tags(' ')") + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_12 using {dbname}.jsons1 tags('{{}}')") + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_13 using {dbname}.jsons1 tags('null')") # test invalidate json - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('\"efwewf\"')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('3333')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags(76)") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags(hell)") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('33.33')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('false')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('[1,true]')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{222}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"fe\"}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('\"efwewf\"')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('3333')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags(76)") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags(hell)") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('33.33')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('false')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('[1,true]')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{222}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"fe\"}}')") # test invalidate json key, key must can be printed assic char - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":[1,true]}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":{}}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"。loc\":\"fff\"}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"\t\":\"fff\"}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"试试\":\"fff\"}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":[1,true]}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":{{}}}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"。loc\":\"fff\"}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"\t\":\"fff\"}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"试试\":\"fff\"}}')") # test invalidate json value, value number can not be inf,nan TD-12166 - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"k\":1.8e308}')") - tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"k\":-1.8e308}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"k\":1.8e308}}')") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"k\":-1.8e308}}')") #test length limit char1= ''.join(['abcd']*64) char3= ''.join(['abcd']*1021) print(len(char3)) # 4084 - tdSql.error("CREATE TABLE if not exists jsons1_15 using jsons1 tags('{\"%s1\":5}')" % char1) # len(key)=257 - tdSql.execute("CREATE TABLE if not exists jsons1_15 using jsons1 tags('{\"%s\":5}')" % char1) # len(key)=256 - tdSql.error("CREATE TABLE if not exists jsons1_16 using jsons1 tags('{\"TSSSS\":\"%s\"}')" % char3) # len(object)=4096 - tdSql.execute("CREATE TABLE if not exists jsons1_16 using jsons1 tags('{\"TSSS\":\"%s\"}')" % char3) # len(object)=4095 - tdSql.execute("drop table if exists jsons1_15") - tdSql.execute("drop table if exists jsons1_16") + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"%s1\":5}}')" % char1) # len(key)=257 + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"%s\":5}}')" % char1) # len(key)=256 + tdSql.error(f"create TABLE if not exists {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"TSSSS\":\"%s\"}}')" % char3) # len(object)=4096 + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"TSSS\":\"%s\"}}')" % char3) # len(object)=4095 + tdSql.execute(f"drop table if exists {dbname}.jsons1_15") + tdSql.execute(f"drop table if exists {dbname}.jsons1_16") print("============== STEP 2 ===== alter table json tag") - tdSql.error("ALTER STABLE jsons1 add tag tag2 nchar(20)") - tdSql.error("ALTER STABLE jsons1 drop tag jtag") - tdSql.error("ALTER TABLE jsons1 MODIFY TAG jtag nchar(128)") + tdSql.error(f"ALTER stable {dbname}.jsons1 add tag tag2 nchar(20)") + tdSql.error(f"ALTER stable {dbname}.jsons1 drop tag jtag") + tdSql.error(f"ALTER table {dbname}.jsons1 MODIFY TAG jtag nchar(128)") - tdSql.execute("ALTER TABLE jsons1_1 SET TAG jtag='{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}'") - tdSql.query("select jtag from jsons1_1") + tdSql.execute(f"ALTER table {dbname}.jsons1_1 SET TAG jtag='{{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}}'") + tdSql.query(f"select jtag from {dbname}.jsons1_1") tdSql.checkData(0, 0, '{"tag1":"femail","tag2":35,"tag3":true}') - tdSql.execute("ALTER TABLE jsons1 rename TAG jtag jtag_new") - tdSql.execute("ALTER TABLE jsons1 rename TAG jtag_new jtag") + tdSql.execute(f"ALTER table {dbname}.jsons1 rename TAG jtag jtag_new") + tdSql.execute(f"ALTER table {dbname}.jsons1 rename TAG jtag_new jtag") - tdSql.execute("create table st(ts timestamp, i int) tags(t int)") - tdSql.error("ALTER STABLE st add tag jtag json") - tdSql.error("ALTER STABLE st add column jtag json") + tdSql.execute(f"create table {dbname}.st(ts timestamp, i int) tags(t int)") + tdSql.error(f"ALTER stable {dbname}.st add tag jtag json") + tdSql.error(f"ALTER stable {dbname}.st add column jtag json") print("============== STEP 3 ===== query table") # test error syntax - tdSql.error("select * from jsons1 where jtag->tag1='beijing'") - tdSql.error("select -> from jsons1") - tdSql.error("select * from jsons1 where contains") - tdSql.error("select * from jsons1 where jtag->") - tdSql.error("select jtag->location from jsons1") - tdSql.error("select jtag contains location from jsons1") - tdSql.error("select * from jsons1 where jtag contains location") - tdSql.query("select * from jsons1 where jtag contains''") - tdSql.error("select * from jsons1 where jtag contains 'location'='beijing'") + tdSql.error(f"select * from {dbname}.jsons1 where jtag->tag1='beijing'") + tdSql.error(f"select -> from {dbname}.jsons1") + tdSql.error(f"select * from {dbname}.jsons1 where contains") + tdSql.error(f"select * from {dbname}.jsons1 where jtag->") + tdSql.error(f"select jtag->location from {dbname}.jsons1") + tdSql.error(f"select jtag contains location from {dbname}.jsons1") + tdSql.error(f"select * from {dbname}.jsons1 where jtag contains location") + tdSql.query(f"select * from {dbname}.jsons1 where jtag contains''") + tdSql.error(f"select * from {dbname}.jsons1 where jtag contains 'location'='beijing'") # test function error - tdSql.error("select avg(jtag->'tag1') from jsons1") - tdSql.error("select avg(jtag) from jsons1") - tdSql.error("select min(jtag->'tag1') from jsons1") - tdSql.error("select min(jtag) from jsons1") - tdSql.error("select ceil(jtag->'tag1') from jsons1") - tdSql.error("select ceil(jtag) from jsons1") + tdSql.error(f"select avg(jtag->'tag1') from {dbname}.jsons1") + tdSql.error(f"select avg(jtag) from {dbname}.jsons1") + tdSql.error(f"select min(jtag->'tag1') from {dbname}.jsons1") + tdSql.error(f"select min(jtag) from {dbname}.jsons1") + tdSql.error(f"select ceil(jtag->'tag1') from {dbname}.jsons1") + tdSql.error(f"select ceil(jtag) from {dbname}.jsons1") #test scalar operation - tdSql.query("select jtag contains 'tag1',jtag->'tag1' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag contains 'tag1',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) - tdSql.query("select jtag->'tag1' like 'fe%',jtag->'tag1' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag->'tag1' like 'fe%',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) - tdSql.query("select jtag->'tag1' not like 'fe%',jtag->'tag1' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag->'tag1' not like 'fe%',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) - tdSql.query("select jtag->'tag1' match 'fe',jtag->'tag1' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag->'tag1' match 'fe',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) - tdSql.query("select jtag->'tag1' nmatch 'fe',jtag->'tag1' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag->'tag1' nmatch 'fe',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) - tdSql.query("select jtag->'tag1',jtag->'tag1'>='a' from jsons1 order by jtag->'tag1'") + tdSql.query(f"select jtag->'tag1',jtag->'tag1'>='a' from {dbname}.jsons1 order by jtag->'tag1'") tdSql.checkRows(9) # test select normal column - tdSql.query("select dataint from jsons1 order by dataint") + tdSql.query(f"select dataint from {dbname}.jsons1 order by dataint") tdSql.checkRows(9) tdSql.checkData(1, 0, 1) # test select json tag - tdSql.query("select * from jsons1") + tdSql.query(f"select * from {dbname}.jsons1") tdSql.checkRows(9) - tdSql.query("select jtag from jsons1") + tdSql.query(f"select jtag from {dbname}.jsons1") tdSql.checkRows(9) - tdSql.query("select * from jsons1 where jtag is null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag is null") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag is not null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag is not null") tdSql.checkRows(8) # test jtag is NULL - tdSql.query("select jtag from jsons1_9") + tdSql.query(f"select jtag from {dbname}.jsons1_9") tdSql.checkData(0, 0, None) # test select json tag->'key', value is string - tdSql.query("select jtag->'tag1' from jsons1_1") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1") tdSql.checkData(0, 0, '"femail"') - tdSql.query("select jtag->'tag2' from jsons1_6") + tdSql.query(f"select jtag->'tag2' from {dbname}.jsons1_6") tdSql.checkData(0, 0, '""') # test select json tag->'key', value is int - tdSql.query("select jtag->'tag2' from jsons1_1") + tdSql.query(f"select jtag->'tag2' from {dbname}.jsons1_1") tdSql.checkData(0, 0, "35.000000000") # test select json tag->'key', value is bool - tdSql.query("select jtag->'tag3' from jsons1_1") + tdSql.query(f"select jtag->'tag3' from {dbname}.jsons1_1") tdSql.checkData(0, 0, "true") # test select json tag->'key', value is null - tdSql.query("select jtag->'tag1' from jsons1_4") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_4") tdSql.checkData(0, 0, "null") # test select json tag->'key', value is double - tdSql.query("select jtag->'tag1' from jsons1_5") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_5") tdSql.checkData(0, 0, "1.232000000") # test select json tag->'key', key is not exist - tdSql.query("select jtag->'tag10' from jsons1_4") + tdSql.query(f"select jtag->'tag10' from {dbname}.jsons1_4") tdSql.checkData(0, 0, None) - tdSql.query("select jtag->'tag1' from jsons1") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1") tdSql.checkRows(9) # test header name - res = tdSql.getColNameList("select jtag->'tag1' from jsons1") + res = tdSql.getColNameList(f"select jtag->'tag1' from {dbname}.jsons1") cname_list = [] cname_list.append("jtag->'tag1'") tdSql.checkColNameList(res, cname_list) # test where with json tag - tdSql.query("select * from jsons1_1 where jtag is not null") - tdSql.query("select * from jsons1 where jtag='{\"tag1\":11,\"tag2\":\"\"}'") - tdSql.error("select * from jsons1 where jtag->'tag1'={}") + tdSql.query(f"select * from {dbname}.jsons1_1 where jtag is not null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag='{{\"tag1\":11,\"tag2\":\"\"}}'") + tdSql.error(f"select * from {dbname}.jsons1 where jtag->'tag1'={{}}") # test json error - tdSql.error("select jtag + 1 from jsons1") - tdSql.error("select jtag > 1 from jsons1") - tdSql.error("select jtag like \"1\" from jsons1") - tdSql.error("select jtag in (\"1\") from jsons1") - #tdSql.error("select jtag from jsons1 where jtag > 1") - #tdSql.error("select jtag from jsons1 where jtag like 'fsss'") - #tdSql.error("select jtag from jsons1 where jtag in (1)") + tdSql.error(f"select jtag + 1 from {dbname}.jsons1") + tdSql.error(f"select jtag > 1 from {dbname}.jsons1") + tdSql.error(f"select jtag like \"1\" from {dbname}.jsons1") + tdSql.error(f"select jtag in (\"1\") from {dbname}.jsons1") + #tdSql.error(f"select jtag from {dbname}.jsons1 where jtag > 1") + #tdSql.error(f"select jtag from {dbname}.jsons1 where jtag like 'fsss'") + #tdSql.error(f"select jtag from {dbname}.jsons1 where jtag in (1)") # where json value is string - tdSql.query("select * from jsons1 where jtag->'tag2'='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'='beijing'") tdSql.checkRows(2) - tdSql.query("select dataint,tbname,jtag->'tag1',jtag from jsons1 where jtag->'tag2'='beijing' order by dataint") + tdSql.query(f"select dataint,tbname,jtag->'tag1',jtag from {dbname}.jsons1 where jtag->'tag2'='beijing' order by dataint") tdSql.checkRows(2) tdSql.checkData(0, 0, 2) tdSql.checkData(0, 1, 'jsons1_2') @@ -243,180 +224,180 @@ class TDTestCase: tdSql.checkData(1, 2, 'false') - tdSql.query("select * from jsons1 where jtag->'tag1'='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='beijing'") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'='收到货'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='收到货'") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag2'>'beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'>'beijing'") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag2'>='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'>='beijing'") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag2'<'beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'<'beijing'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag2'<='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'<='beijing'") tdSql.checkRows(4) - tdSql.query("select * from jsons1 where jtag->'tag2'!='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'!='beijing'") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag2'=''") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'=''") tdSql.checkRows(2) # where json value is int - tdSql.query("select * from jsons1 where jtag->'tag1'=5") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=5") tdSql.checkRows(1) tdSql.checkData(0, 1, 2) - tdSql.query("select * from jsons1 where jtag->'tag1'=10") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=10") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'<54") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<54") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'<=11") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<=11") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'>4") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>4") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1'>=5") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>=5") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1'!=5") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=5") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1'!=55") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=55") tdSql.checkRows(3) # where json value is double - tdSql.query("select * from jsons1 where jtag->'tag1'=1.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=1.232") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag1'<1.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<1.232") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'<=1.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<=1.232") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag1'>1.23") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>1.23") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'>=1.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>=1.232") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'!=1.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=1.232") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1'!=3.232") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=3.232") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'/0=3") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'/0=3") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'/5=1") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'/5=1") tdSql.checkRows(1) # where json value is bool - tdSql.query("select * from jsons1 where jtag->'tag1'=true") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=true") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'=false") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag1'!=false") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=false") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'>false") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>false") tdSql.checkRows(0) # where json value is null - tdSql.query("select * from jsons1 where jtag->'tag1'=null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=null") tdSql.checkRows(0) # where json key is null - tdSql.query("select * from jsons1 where jtag->'tag_no_exist'=3") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag_no_exist'=3") tdSql.checkRows(0) # where json value is not exist - tdSql.query("select * from jsons1 where jtag->'tag1' is null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' is null") tdSql.checkData(0, 0, 'jsons1_9') tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag4' is null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag4' is null") tdSql.checkRows(9) - tdSql.query("select * from jsons1 where jtag->'tag3' is not null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag3' is not null") tdSql.checkRows(3) # test contains - tdSql.query("select * from jsons1 where jtag contains 'tag1'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag1'") tdSql.checkRows(8) - tdSql.query("select * from jsons1 where jtag contains 'tag3'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag3'") tdSql.checkRows(4) - tdSql.query("select * from jsons1 where jtag contains 'tag_no_exist'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag_no_exist'") tdSql.checkRows(0) # test json tag in where condition with and/or - tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'") tdSql.checkRows(2) # test with between and - tdSql.query("select * from jsons1 where jtag->'tag1' between 1 and 30") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' between 1 and 30") tdSql.checkRows(3) - tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' between 'femail' and 'beijing'") tdSql.checkRows(2) # test with tbname/normal column - tdSql.query("select * from jsons1 where tbname = 'jsons1_1'") + tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'") + tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3") + tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23") + tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23") tdSql.checkRows(1) # test where condition like - tdSql.query("select * from jsons1 where jtag->'tag2' like 'bei%'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2' like 'bei%'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null") tdSql.checkRows(2) # test where condition in no support in - tdSql.error("select * from jsons1 where jtag->'tag1' in ('beijing')") + tdSql.error(f"select * from {dbname}.jsons1 where jtag->'tag1' in ('beijing')") # test where condition match/nmath - tdSql.query("select * from jsons1 where jtag->'tag1' match 'ma'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match 'ma'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1' match 'ma$'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match 'ma$'") tdSql.checkRows(0) - tdSql.query("select * from jsons1 where jtag->'tag2' match 'jing$'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2' match 'jing$'") tdSql.checkRows(2) - tdSql.query("select * from jsons1 where jtag->'tag1' match '收到'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match '收到'") tdSql.checkRows(1) - tdSql.query("select * from jsons1 where jtag->'tag1' nmatch 'ma'") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' nmatch 'ma'") tdSql.checkRows(1) # test distinct - tdSql.execute("insert into jsons1_14 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')") - tdSql.query("select distinct jtag->'tag1' from jsons1") + tdSql.execute(f"insert into {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}}') values(1591062628000, 2, NULL, '你就会', 'dws')") + tdSql.query(f"select distinct jtag->'tag1' from {dbname}.jsons1") tdSql.checkRows(8) - tdSql.error("select distinct jtag from jsons1") + tdSql.error(f"select distinct jtag from {dbname}.jsons1") #test dumplicate key with normal colomn - tdSql.execute("INSERT INTO jsons1_15 using jsons1 tags('{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}') values(1591060828000, 4, false, 'jjsf', \"你就会\")") - tdSql.query("select * from jsons1 where jtag->'datastr' match '是' and datastr match 'js'") + tdSql.execute(f"insert into {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}}') values(1591060828000, 4, false, 'jjsf', \"你就会\")") + tdSql.query(f"select * from {dbname}.jsons1 where jtag->'datastr' match '是' and datastr match 'js'") tdSql.checkRows(1) - tdSql.query("select tbname,jtag->'tbname' from jsons1 where jtag->'tbname'='tt' and tbname='jsons1_15'") + tdSql.query(f"select tbname,jtag->'tbname' from {dbname}.jsons1 where jtag->'tbname'='tt' and tbname='jsons1_15'") tdSql.checkRows(1) # test join - tdSql.execute("create table if not exists jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") - tdSql.execute("insert into jsons2_1 using jsons2 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 2, false, 'json2', '你是2')") - tdSql.execute("insert into jsons2_2 using jsons2 tags('{\"tag1\":5,\"tag2\":null}') values (1591060628000, 2, true, 'json2', 'sss')") + tdSql.execute(f"create table if not exists {dbname}.jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") + tdSql.execute(f"insert into {dbname}.jsons2_1 using {dbname}.jsons2 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 2, false, 'json2', '你是2')") + tdSql.execute(f"insert into {dbname}.jsons2_2 using {dbname}.jsons2 tags('{{\"tag1\":5,\"tag2\":null}}') values (1591060628000, 2, true, 'json2', 'sss')") - tdSql.execute("create table if not exists jsons3(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") - tdSql.execute("insert into jsons3_1 using jsons3 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 3, false, 'json3', '你是3')") - tdSql.execute("insert into jsons3_2 using jsons3 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060638000, 2, true, 'json3', 'sss')") - tdSql.query("select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'") + tdSql.execute(f"create table if not exists {dbname}.jsons3(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") + tdSql.execute(f"insert into {dbname}.jsons3_1 using {dbname}.jsons3 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 3, false, 'json3', '你是3')") + tdSql.execute(f"insert into {dbname}.jsons3_2 using {dbname}.jsons3 tags('{{\"tag1\":5,\"tag2\":\"beijing\"}}') values (1591060638000, 2, true, 'json3', 'sss')") + tdSql.query(f"select 'sss',33,a.jtag->'tag3' from {dbname}.jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'") tdSql.checkData(0, 0, "sss") tdSql.checkData(0, 2, "true") - res = tdSql.getColNameList("select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'") + res = tdSql.getColNameList(f"select 'sss',33,a.jtag->'tag3' from {dbname}.jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'") cname_list = [] cname_list.append("'sss'") cname_list.append("33") @@ -424,19 +405,19 @@ class TDTestCase: tdSql.checkColNameList(res, cname_list) # # test group by & order by json tag - tdSql.query("select ts,jtag->'tag1' from jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc") + tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc") tdSql.checkRows(11) tdSql.checkData(0, 1, '"femail"') tdSql.checkData(2, 1, '"收到货"') tdSql.checkData(7, 1, "false") - tdSql.error("select count(*) from jsons1 group by jtag") - tdSql.error("select count(*) from jsons1 partition by jtag") - tdSql.error("select count(*) from jsons1 group by jtag order by jtag") - tdSql.error("select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag2'") - tdSql.error("select count(*) from jsons1 group by jtag->'tag1' order by jtag") - tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc") + tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag") + tdSql.error(f"select count(*) from {dbname}.jsons1 partition by jtag") + tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag order by jtag") + tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag2'") + tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag->'tag1' order by jtag") + tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' desc") tdSql.checkRows(8) tdSql.checkData(0, 0, 2) tdSql.checkData(0, 1, '"femail"') @@ -447,7 +428,7 @@ class TDTestCase: tdSql.checkData(5, 0, 1) tdSql.checkData(5, 1, "false") - tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1' asc") + tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' asc") tdSql.checkRows(8) tdSql.checkData(0, 1, None) tdSql.checkData(2, 0, 1) @@ -458,7 +439,7 @@ class TDTestCase: tdSql.checkData(7, 1, '"femail"') # test stddev with group by json tag - tdSql.query("select stddev(dataint),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'") + tdSql.query(f"select stddev(dataint),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'") tdSql.checkRows(8) tdSql.checkData(0, 1, None) tdSql.checkData(4, 0, 0) @@ -466,222 +447,222 @@ class TDTestCase: tdSql.checkData(7, 0, 11) tdSql.checkData(7, 1, '"femail"') - res = tdSql.getColNameList("select stddev(dataint),jsons1.jtag->'tag1' from jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'") + res = tdSql.getColNameList(f"select stddev(dataint),jsons1.jtag->'tag1' from {dbname}.jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'") cname_list = [] cname_list.append("stddev(dataint)") cname_list.append("jsons1.jtag->'tag1'") tdSql.checkColNameList(res, cname_list) # test top/bottom with group by json tag - tdSql.query("select top(dataint,2),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'") + tdSql.query(f"select top(dataint,2),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'") tdSql.checkRows(11) tdSql.checkData(0, 1, None) # test having - tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' having count(*) > 1") + tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' having count(*) > 1") tdSql.checkRows(3) # subquery with json tag - tdSql.query("select * from (select jtag, dataint from jsons1) order by dataint") + tdSql.query(f"select * from (select jtag, dataint from {dbname}.jsons1) order by dataint") tdSql.checkRows(11) tdSql.checkData(1, 1, 1) tdSql.checkData(5, 0, '{"tag1":false,"tag2":"beijing"}') - tdSql.error("select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)") - tdSql.error("select t->'tag1' from (select jtag->'tag1' as t, dataint from jsons1)") - tdSql.error("select ts,jtag->'tag1' from (select jtag->'tag1',tbname,ts from jsons1 order by ts)") + tdSql.error(f"select jtag->'tag1' from (select jtag->'tag1', dataint from {dbname}.jsons1)") + tdSql.error(f"select t->'tag1' from (select jtag->'tag1' as t, dataint from {dbname}.jsons1)") + tdSql.error(f"select ts,jtag->'tag1' from (select jtag->'tag1',tbname,ts from {dbname}.jsons1 order by ts)") # union all - tdSql.query("select jtag->'tag1' from jsons1 union all select jtag->'tag2' from jsons2") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1 union all select jtag->'tag2' from {dbname}.jsons2") tdSql.checkRows(13) - tdSql.query("select jtag->'tag1' from jsons1_1 union all select jtag->'tag2' from jsons2_1") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1 union all select jtag->'tag2' from {dbname}.jsons2_1") tdSql.checkRows(3) - tdSql.query("select jtag->'tag1' from jsons1_1 union all select jtag->'tag1' from jsons2_1") + tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1 union all select jtag->'tag1' from {dbname}.jsons2_1") tdSql.checkRows(3) - tdSql.query("select dataint,jtag->'tag1',tbname from jsons1 union all select dataint,jtag->'tag1',tbname from jsons2") + tdSql.query(f"select dataint,jtag->'tag1',tbname from {dbname}.jsons1 union all select dataint,jtag->'tag1',tbname from {dbname}.jsons2") tdSql.checkRows(13) - tdSql.query("select dataint,jtag,tbname from jsons1 union all select dataint,jtag,tbname from jsons2") + tdSql.query(f"select dataint,jtag,tbname from {dbname}.jsons1 union all select dataint,jtag,tbname from {dbname}.jsons2") tdSql.checkRows(13) #show create table - tdSql.query("show create table jsons1") + tdSql.query(f"show create table {dbname}.jsons1") tdSql.checkData(0, 1, 'CREATE STABLE `jsons1` (`ts` TIMESTAMP, `dataint` INT, `databool` BOOL, `datastr` NCHAR(50), `datastrbin` VARCHAR(150)) TAGS (`jtag` JSON)') #test aggregate function:count/avg/twa/irate/sum/stddev/leastsquares - tdSql.query("select count(*) from jsons1 where jtag is not null") + tdSql.query(f"select count(*) from {dbname}.jsons1 where jtag is not null") tdSql.checkData(0, 0, 10) - tdSql.query("select avg(dataint) from jsons1 where jtag is not null") + tdSql.query(f"select avg(dataint) from {dbname}.jsons1 where jtag is not null") tdSql.checkData(0, 0, 5.3) - # tdSql.query("select twa(dataint) from jsons1 where jtag is not null") + # tdSql.query(f"select twa(dataint) from {dbname}.jsons1 where jtag is not null") # tdSql.checkData(0, 0, 28.386363636363637) - # tdSql.query("select irate(dataint) from jsons1 where jtag is not null") + # tdSql.query(f"select irate(dataint) from {dbname}.jsons1 where jtag is not null") - tdSql.query("select sum(dataint) from jsons1 where jtag->'tag1' is not null") + tdSql.query(f"select sum(dataint) from {dbname}.jsons1 where jtag->'tag1' is not null") tdSql.checkData(0, 0, 45) - tdSql.query("select stddev(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select stddev(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 4.496912521) - tdSql.query("SELECT LEASTSQUARES(dataint, 1, 1) from jsons1 where jtag is not null") + tdSql.query(f"select LEASTSQUARES(dataint, 1, 1) from {dbname}.jsons1 where jtag is not null") #test selection function:min/max/first/last/top/bottom/percentile/apercentile/last_row/interp - tdSql.query("select min(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select min(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 1) - tdSql.query("select max(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select max(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 11) - tdSql.query("select first(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select first(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 2) - tdSql.query("select last(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select last(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 11) - tdSql.query("select top(dataint,100) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select top(dataint,100) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(3) - tdSql.query("select bottom(dataint,100) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select bottom(dataint,100) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(3) - #tdSql.query("select percentile(dataint,20) from jsons1 where jtag->'tag1'>1") - tdSql.query("select apercentile(dataint, 50) from jsons1 where jtag->'tag1'>1") + #tdSql.query(f"select percentile(dataint,20) from {dbname}.jsons1 where jtag->'tag1'>1") + tdSql.query(f"select apercentile(dataint, 50) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 1.5) - # tdSql.query("select last_row(dataint) from jsons1 where jtag->'tag1'>1") - # tdSql.query("select interp(dataint) from jsons1 where ts = '2020-06-02 09:17:08.000' and jtag->'tag1'>1") + # tdSql.query(f"select last_row(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") + # tdSql.query(f"select interp(dataint) from {dbname}.jsons1 where ts = '2020-06-02 09:17:08.000' and jtag->'tag1'>1") #test calculation function:diff/derivative/spread/ceil/floor/round/ - tdSql.query("select diff(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select diff(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(2) # tdSql.checkData(0, 0, -1) # tdSql.checkData(1, 0, 10) - tdSql.query("select derivative(dataint, 10m, 0) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select derivative(dataint, 10m, 0) from {dbname}.jsons1 where jtag->'tag1'>1") # tdSql.checkData(0, 0, -2) - tdSql.query("select spread(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select spread(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkData(0, 0, 10) - tdSql.query("select ceil(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select ceil(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(3) - tdSql.query("select floor(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select floor(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(3) - tdSql.query("select round(dataint) from jsons1 where jtag->'tag1'>1") + tdSql.query(f"select round(dataint) from {dbname}.jsons1 where jtag->'tag1'>1") tdSql.checkRows(3) #math function - tdSql.query("select sin(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select sin(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select cos(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select cos(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select tan(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select tan(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select asin(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select asin(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select acos(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select acos(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select atan(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select atan(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select ceil(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select ceil(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select floor(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select floor(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select round(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select round(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select abs(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select abs(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select pow(dataint,5) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select pow(dataint,5) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select log(dataint,10) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select log(dataint,10) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select sqrt(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select sqrt(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select HISTOGRAM(dataint,'user_input','[1, 33, 555, 7777]',1) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select HISTOGRAM(dataint,'user_input','[1, 33, 555, 7777]',1) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select csum(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select csum(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select mavg(dataint,1) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select mavg(dataint,1) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select statecount(dataint,'GE',10) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select statecount(dataint,'GE',10) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select stateduration(dataint,'GE',0) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select stateduration(dataint,'GE',0) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select sample(dataint,3) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select sample(dataint,3) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select HYPERLOGLOG(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select HYPERLOGLOG(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) - tdSql.query("select twa(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select twa(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) # function not ready - tdSql.query("select tail(dataint,1) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select tail(dataint,1) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) - tdSql.query("select unique(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select unique(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select mode(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select mode(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) - tdSql.query("select irate(dataint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select irate(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) #str function - tdSql.query("select upper(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select upper(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select ltrim(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select ltrim(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select lower(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select lower(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select rtrim(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select rtrim(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select LENGTH(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select LENGTH(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select CHAR_LENGTH(dataStr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select CHAR_LENGTH(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select SUBSTR(dataStr,5) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select SUBSTR(dataStr,5) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select CONCAT(dataStr,dataStrBin) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select CONCAT(dataStr,dataStrBin) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select CONCAT_ws('adad!@!@%$^$%$^$%^a',dataStr,dataStrBin) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select CONCAT_ws('adad!@!@%$^$%$^$%^a',dataStr,dataStrBin) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select CAST(dataStr as bigint) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select CAST(dataStr as bigint) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) #time function - tdSql.query("select now() from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select now() from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select today() from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select today() from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TIMEZONE() from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TIMEZONE() from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TO_ISO8601(ts) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TO_ISO8601(ts) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TO_UNIXTIMESTAMP(datastr) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TO_UNIXTIMESTAMP(datastr) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TIMETRUNCATE(ts,1s) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TIMETRUNCATE(ts,1s) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TIMEDIFF(ts,_c0) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TIMEDIFF(ts,_c0) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select TIMEDIFF(ts,1u) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select TIMEDIFF(ts,1u) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(3) - tdSql.query("select ELAPSED(ts,1h) from jsons1 where jtag->'tag1'>1;") + tdSql.query(f"select ELAPSED(ts,1h) from {dbname}.jsons1 where jtag->'tag1'>1;") tdSql.checkRows(1) # to_json() - tdSql.query("select to_json('{\"abc\":123}') from jsons1_1") + tdSql.query(f"select to_json('{{\"abc\":123}}') from {dbname}.jsons1_1") tdSql.checkRows(2) tdSql.checkData(0, 0, '{"abc":123}') tdSql.checkData(1, 0, '{"abc":123}') - tdSql.query("select to_json('null') from jsons1_1") + tdSql.query(f"select to_json('null') from {dbname}.jsons1_1") tdSql.checkRows(2) tdSql.checkData(0, 0, 'null') tdSql.checkData(1, 0, 'null') - tdSql.query("select to_json('{\"key\"}') from jsons1_1") + tdSql.query(f"select to_json('{{\"key\"}}') from {dbname}.jsons1_1") tdSql.checkRows(2) tdSql.checkData(0, 0, 'null') tdSql.checkData(1, 0, 'null') #test TD-12077 - tdSql.execute("insert into jsons1_16 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":-2.111}') values(1591062628000, 2, NULL, '你就会', 'dws')") - tdSql.query("select jtag->'tag3' from jsons1_16") + tdSql.execute(f"insert into {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":-2.111}}') values(1591062628000, 2, NULL, '你就会', 'dws')") + tdSql.query(f"select jtag->'tag3' from {dbname}.jsons1_16") tdSql.checkData(0, 0, '-2.111000000') # test TD-12452 - tdSql.execute("ALTER TABLE jsons1_1 SET TAG jtag=NULL") - tdSql.query("select jtag from jsons1_1") + tdSql.execute(f"ALTER table {dbname}.jsons1_1 SET TAG jtag=NULL") + tdSql.query(f"select jtag from {dbname}.jsons1_1") tdSql.checkData(0, 0, None) - tdSql.execute("CREATE TABLE if not exists jsons1_20 using jsons1 tags(NULL)") - tdSql.query("select jtag from jsons1_20") + tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_20 using {dbname}.jsons1 tags(NULL)") + tdSql.query(f"select jtag from {dbname}.jsons1_20") tdSql.checkRows(0) - tdSql.execute("insert into jsons1_21 using jsons1 tags(NULL) values(1591061628000, 11, false, '你就会','')") - tdSql.query("select jtag from jsons1_21") + tdSql.execute(f"insert into {dbname}.jsons1_21 using {dbname}.jsons1 tags(NULL) values(1591061628000, 11, false, '你就会','')") + tdSql.query(f"select jtag from {dbname}.jsons1_21") tdSql.checkData(0, 0, None) # # #test TD-12389 @@ -691,23 +672,23 @@ class TDTestCase: tdSql.checkData(5, 2, 4095) # # #test TD-13918 - tdSql.execute("drop table if exists jsons_13918_1") - tdSql.execute("drop table if exists jsons_13918_2") - tdSql.execute("drop table if exists jsons_13918_3") - tdSql.execute("drop table if exists jsons_13918_4") - tdSql.execute("drop table if exists jsons_stb") - tdSql.execute("create table jsons_stb (ts timestamp, dataInt int) tags (jtag json)") - tdSql.error("create table jsons_13918_1 using jsons_stb tags ('nullx')") - tdSql.error("create table jsons_13918_2 using jsons_stb tags (nullx)") - tdSql.error("insert into jsons_13918_3 using jsons_stb tags('NULLx') values(1591061628001, 11)") - tdSql.error("insert into jsons_13918_4 using jsons_stb tags(NULLx) values(1591061628002, 11)") - tdSql.execute("create table jsons_13918_1 using jsons_stb tags ('null')") - tdSql.execute("create table jsons_13918_2 using jsons_stb tags (null)") - tdSql.execute("insert into jsons_13918_1 values(1591061628003, 11)") - tdSql.execute("insert into jsons_13918_2 values(1591061628004, 11)") - tdSql.execute("insert into jsons_13918_3 using jsons_stb tags('NULL') values(1591061628005, 11)") - tdSql.execute("insert into jsons_13918_4 using jsons_stb tags(\"NULL\") values(1591061628006, 11)") - tdSql.query("select * from jsons_stb") + tdSql.execute(f"drop table if exists {dbname}.jsons_13918_1") + tdSql.execute(f"drop table if exists {dbname}.jsons_13918_2") + tdSql.execute(f"drop table if exists {dbname}.jsons_13918_3") + tdSql.execute(f"drop table if exists {dbname}.jsons_13918_4") + tdSql.execute(f"drop table if exists {dbname}.jsons_stb") + tdSql.execute(f"create table {dbname}.jsons_stb (ts timestamp, dataInt int) tags (jtag json)") + tdSql.error(f"create table {dbname}.jsons_13918_1 using {dbname}.jsons_stb tags ('nullx')") + tdSql.error(f"create table {dbname}.jsons_13918_2 using {dbname}.jsons_stb tags (nullx)") + tdSql.error(f"insert into {dbname}.jsons_13918_3 using {dbname}.jsons_stb tags('NULLx') values(1591061628001, 11)") + tdSql.error(f"insert into {dbname}.jsons_13918_4 using {dbname}.jsons_stb tags(NULLx) values(1591061628002, 11)") + tdSql.execute(f"create table {dbname}.jsons_13918_1 using {dbname}.jsons_stb tags ('null')") + tdSql.execute(f"create table {dbname}.jsons_13918_2 using {dbname}.jsons_stb tags (null)") + tdSql.execute(f"insert into {dbname}.jsons_13918_1 values(1591061628003, 11)") + tdSql.execute(f"insert into {dbname}.jsons_13918_2 values(1591061628004, 11)") + tdSql.execute(f"insert into {dbname}.jsons_13918_3 using {dbname}.jsons_stb tags('NULL') values(1591061628005, 11)") + tdSql.execute(f"insert into {dbname}.jsons_13918_4 using {dbname}.jsons_stb tags(\"NULL\") values(1591061628006, 11)") + tdSql.query(f"select * from {dbname}.jsons_stb") tdSql.checkRows(4) def stop(self): @@ -717,4 +698,3 @@ class TDTestCase: tdCases.addWindows(__file__, TDTestCase()) tdCases.addLinux(__file__, TDTestCase()) - diff --git a/tests/system-test/2-query/json_tag_large_tables.py b/tests/system-test/2-query/json_tag_large_tables.py index 5d7df6ceb8..9164c108f9 100644 --- a/tests/system-test/2-query/json_tag_large_tables.py +++ b/tests/system-test/2-query/json_tag_large_tables.py @@ -35,7 +35,7 @@ class TDTestCase: self.testcaseFilename = os.path.split(__file__)[-1] # os.system("rm -rf %s/%s.sql" % (self.testcasePath,self.testcaseFilename)) tdLog.debug("start to execute %s" % __file__) - tdSql.init(conn.cursor(), True) + tdSql.init(conn.cursor(), False) def run(self): # tdSql.prepare() @@ -47,24 +47,24 @@ class TDTestCase: i = 0 # add 100000 table tdSql.execute("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") - while i <= 10 0000: + while i <= 100000: sql = """insert into jsons1_{%d} using jsons1 tags('{"tag1":{%d}}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')"""%(i, i) tdSql.execute(sql) i = i + 1 - // do query - i = 0 - while i <= 10 0000: + # do query + i = 0 + while i <= 100000: sql = """select count(*) from jsons1 where jtag->'tag1' = %d"""%(i) tdSql.query(sql) if 1 != tdSql.getRows(): print("err: %s"%(sql)) - - while i <= 10000000 + + while i <= 10000000: sql = """insert into jsons1_{%d} using jsons1 tags('{"tag1":{%d}}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')"""%(i, i) tdSql.execute(sql) i = i + 1 - + i = 0 # drop super table tdSql.execute("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") @@ -76,7 +76,7 @@ class TDTestCase: tdSql.execute('drop stable jsons1') - # drop database + # drop database i = 0 tdSql.execute("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)") while i <= 100000: @@ -84,10 +84,10 @@ class TDTestCase: tdSql.execute(sql) i = i + 1 tdSql.execute('drop database db') - + # test duplicate key using the first one. elimate empty key - #tdSql.execute("CREATE TABLE if not exists jsons1_8 using jsons1 tags('{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}')") tdSql.query("select jtag from jsons1_8") tdSql.checkRows(0); + #tdSql.execute("CREATE TABLE if not exists jsons1_8 using jsons1 tags('{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}')") tdSql.query("select jtag from jsons1_8") tdSql.checkRows(0); #tdSql.query("select ts,jtag from jsons1 order by ts limit 2,3") #tdSql.checkData(0, 0, '2020-06-02 09:17:08.000') #tdSql.checkData(0, 1, '{"tag1":5,"tag2":"beijing"}') @@ -704,4 +704,3 @@ class TDTestCase: tdCases.addWindows(__file__, TDTestCase()) tdCases.addLinux(__file__, TDTestCase()) - diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 105dc883c7..f65744a0b7 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -10,29 +10,26 @@ import random class TDTestCase: - updatecfgDict = {'debugFlag': 143, "cDebugFlag": 143, "uDebugFlag": 143, "rpcDebugFlag": 143, "tmrDebugFlag": 143, - "jniDebugFlag": 143, "simDebugFlag": 143, "dDebugFlag": 143, "dDebugFlag": 143, "vDebugFlag": 143, "mDebugFlag": 143, "qDebugFlag": 143, - "wDebugFlag": 143, "sDebugFlag": 143, "tsdbDebugFlag": 143, "tqDebugFlag": 143, "fsDebugFlag": 143, "fnDebugFlag": 143 ,"udf":0} def init(self, conn, logSql): tdLog.debug(f"start to excute {__file__}") - tdSql.init(conn.cursor(), True) + tdSql.init(conn.cursor(), False) self.tb_nums = 10 self.row_nums = 20 self.ts = 1434938400000 self.time_step = 1000 - def insert_datas_and_check_abs(self ,tbnums , rownums , time_step ,cache_value ): - tdSql.execute("drop database if exists test ") - tdLog.info(" prepare datas for auto check abs function ") + def insert_datas_and_check_abs(self, tbnums, rownums, time_step, cache_value, dbname="test"): + tdSql.execute(f"drop database if exists {dbname} ") + tdLog.info("prepare datas for auto check abs function ") - tdSql.execute(f" create database test cachemodel {cache_value} ") - tdSql.execute(" use test ") - tdSql.execute(" create stable test.stb (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint,\ + tdSql.execute(f"create database {dbname} cachemodel {cache_value} ") + tdSql.execute(f"use {dbname} ") + tdSql.execute(f"create stable {dbname}.stb (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint,\ c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int)") for tbnum in range(tbnums): - tbname = "test.sub_tb_%d"%tbnum - tdSql.execute(" create table %s using stb tags(%d) "%(tbname , tbnum)) + tbname = f"{dbname}.sub_tb_{tbnum}" + tdSql.execute(f"create table {tbname} using {dbname}.stb tags({tbnum}) ") ts = self.ts for row in range(rownums): @@ -49,66 +46,65 @@ class TDTestCase: c10 = ts tdSql.execute(f" insert into {tbname} values ({ts},{c1},{c2},{c3},{c4},{c5},{c6},{c7},{c8},{c9},{c10})") - tdSql.execute("use test") tbnames = ["stb", "sub_tb_1"] support_types = ["BIGINT", "SMALLINT", "TINYINT", "FLOAT", "DOUBLE", "INT"] for tbname in tbnames: - tdSql.query("desc {}".format(tbname)) + tdSql.query(f"desc {dbname}.{tbname}") coltypes = tdSql.queryResult for coltype in coltypes: colname = coltype[0] - abs_sql = "select abs({}) from {} order by tbname ".format(colname, 'test.'+tbname) - origin_sql = "select {} from {} order by tbname".format(colname, 'test.'+tbname) + abs_sql = f"select abs({colname}) from {dbname}.{tbname} order by tbname " + origin_sql = f"select {colname} from {dbname}.{tbname} order by tbname" if coltype[1] in support_types: self.check_result_auto(origin_sql , abs_sql) - def prepare_datas(self ,cache_value): - tdSql.execute("drop database if exists db ") - create_db_sql = f"create database if not exists db keep 3650 duration 1000 cachemodel {cache_value}" + def prepare_datas(self ,cache_value, dbname="db"): + tdSql.execute(f"drop database if exists {dbname} ") + create_db_sql = f"create database if not exists {dbname} keep 3650 duration 1000 cachemodel {cache_value}" tdSql.execute(create_db_sql) - tdSql.execute("use db") + tdSql.execute(f"use {dbname}") tdSql.execute( - '''create table db.stb1 + f'''create table {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int) ''' ) tdSql.execute( - ''' - create table db.t1 + f''' + create table {dbname}.t1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) ''' ) for i in range(4): - tdSql.execute(f'create table db.ct{i+1} using stb1 tags ( {i+1} )') + tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )') for i in range(9): tdSql.execute( - f"insert into db.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" + f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" ) tdSql.execute( - f"insert into db.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" + f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" ) tdSql.execute( - "insert into db.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )") + f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )") tdSql.execute( - "insert into db.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") + f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") tdSql.execute( - "insert into db.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )") + f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )") tdSql.execute( - "insert into db.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") + f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") tdSql.execute( - "insert into db.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") tdSql.execute( - "insert into db.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") tdSql.execute( - "insert into db.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") tdSql.execute( - f'''insert into db.t1 values + f'''insert into {dbname}.t1 values ( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a ) ( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a ) @@ -124,53 +120,53 @@ class TDTestCase: ''' ) - def prepare_tag_datas(self,cache_value): + def prepare_tag_datas(self,cache_value, dbname="testdb"): - tdSql.execute("drop database if exists testdb ") + tdSql.execute(f"drop database if exists {dbname} ") # prepare datas - tdSql.execute(f"create database if not exists testdb keep 3650 duration 1000 cachemodel {cache_value}") + tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 cachemodel {cache_value}") - tdSql.execute(" use testdb ") + tdSql.execute(f"use {dbname} ") - tdSql.execute(f" create stable testdb.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp , uc1 int unsigned,\ + tdSql.execute(f"create stable {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp , uc1 int unsigned,\ uc2 bigint unsigned ,uc3 smallint unsigned , uc4 tinyint unsigned ) tags( t1 int , t2 bigint , t3 smallint , t4 tinyint , t5 float , t6 double , t7 bool , t8 binary(36)\ , t9 nchar(36) , t10 int unsigned , t11 bigint unsigned ,t12 smallint unsigned , t13 tinyint unsigned ,t14 timestamp ) ") tdSql.execute( - ''' - create table testdb.t1 + f''' + create table {dbname}.t1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) ''' ) for i in range(4): tdSql.execute( - f'create table testdb.ct{i+1} using stb1 tags ( {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" ,{111*i}, {1*i},{1*i},{1*i},now())') + f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" ,{111*i}, {1*i},{1*i},{1*i},now())') for i in range(9): tdSql.execute( - f"insert into testdb.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i} )" + f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i} )" ) tdSql.execute( - f"insert into testdb.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i})" + f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i})" ) tdSql.execute( - "insert into testdb.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a ,0,0,0,0)") + f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a ,0,0,0,0)") tdSql.execute( - "insert into testdb.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a , 999 , 9999 , 9 , 9)") + f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a , 999 , 9999 , 9 , 9)") tdSql.execute( - "insert into testdb.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a , 999 , 99999 , 9 , 9)") + f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a , 999 , 99999 , 9 , 9)") tdSql.execute( - "insert into testdb.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a ,999 , 99999 , 9 , 9)") + f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a ,999 , 99999 , 9 , 9)") tdSql.execute( - "insert into testdb.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ") + f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ") tdSql.execute( - "insert into testdb.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ") + f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ") tdSql.execute( - "insert into testdb.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL ) ") + f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL ) ") tdSql.execute( - f'''insert into testdb.t1 values + f'''insert into {dbname}.t1 values ( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a ) ( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a ) @@ -217,118 +213,116 @@ class TDTestCase: tdLog.info( "abs value check pass , it work as expected ,sql is \"%s\" " % abs_query) - def test_errors(self): - tdSql.execute("use testdb") - + def test_errors(self, dbname="testdb"): # bug need fix - tdSql.error("select last_row(c1 ,NULL) from testdb.t1") + tdSql.error(f"select last_row(c1 ,NULL) from {dbname}.t1") error_sql_lists = [ - "select last_row from testdb.t1", - "select last_row(-+--+c1) from testdb.t1", - "select last_row(123--123)==1 from testdb.t1", - "select last_row(c1) as 'd1' from testdb.t1", - #"select last_row(c1 ,NULL) from testdb.t1", - "select last_row(,) from testdb.t1;", - "select last_row(abs(c1) ab from testdb.t1)", - "select last_row(c1) as int from testdb.t1", - "select last_row from testdb.stb1", - "select last_row(123--123)==1 from testdb.stb1", - "select last_row(c1) as 'd1' from testdb.stb1", - #"select last_row(c1 ,NULL) from testdb.stb1", - "select last_row(,) from testdb.stb1;", - "select last_row(abs(c1) ab from testdb.stb1)", - "select last_row(c1) as int from testdb.stb1" + f"select last_row from {dbname}.t1", + f"select last_row(-+--+c1) from {dbname}.t1", + f"select last_row(123--123)==1 from {dbname}.t1", + f"select last_row(c1) as 'd1' from {dbname}.t1", + #f"select last_row(c1 ,NULL) from {dbname}.t1", + f"select last_row(,) from {dbname}.t1;", + f"select last_row(abs(c1) ab from {dbname}.t1)", + f"select last_row(c1) as int from {dbname}.t1", + f"select last_row from {dbname}.stb1", + f"select last_row(123--123)==1 from {dbname}.stb1", + f"select last_row(c1) as 'd1' from {dbname}.stb1", + #f"select last_row(c1 ,NULL) from {dbname}.stb1", + f"select last_row(,) from {dbname}.stb1;", + f"select last_row(abs(c1) ab from {dbname}.stb1)", + f"select last_row(c1) as int from {dbname}.stb1" ] for error_sql in error_sql_lists: tdSql.error(error_sql) - def support_types(self): - tdSql.execute("use testdb") + def support_types(self, dbname="testdb"): + tdSql.execute(f"use {dbname}") tbnames = ["stb1", "t1", "ct1", "ct2"] for tbname in tbnames: - tdSql.query("desc {}".format(tbname)) + tdSql.query(f"desc {dbname}.{tbname}") coltypes = tdSql.queryResult for coltype in coltypes: colname = coltype[0] col_note = coltype[-1] if col_note != "TAG": - abs_sql = "select last_row({}) from {}".format(colname, "testdb."+tbname) + abs_sql = f"select last_row({colname}) from {dbname}.{tbname}" tdSql.query(abs_sql) - def basic_abs_function(self): + def basic_abs_function(self, dbname="testdb"): # basic query - tdSql.query("select c1 from testdb.ct3") + tdSql.query(f"select c1 from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select c1 from testdb.t1") + tdSql.query(f"select c1 from {dbname}.t1") tdSql.checkRows(12) - tdSql.query("select c1 from testdb.stb1") + tdSql.query(f"select c1 from {dbname}.stb1") tdSql.checkRows(25) # used for empty table , ct3 is empty - tdSql.query("select last_row(c1) from testdb.ct3") + tdSql.query(f"select last_row(c1) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select last_row(c2) from testdb.ct3") + tdSql.query(f"select last_row(c2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select last_row(c3) from testdb.ct3") + tdSql.query(f"select last_row(c3) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select last_row(c4) from testdb.ct3") + tdSql.query(f"select last_row(c4) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select last_row(c5) from testdb.ct3") + tdSql.query(f"select last_row(c5) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select last_row(c6) from testdb.ct3") + tdSql.query(f"select last_row(c6) from {dbname}.ct3") # used for regular table # bug need fix - tdSql.query("select last_row(c1) from testdb.t1") + tdSql.query(f"select last_row(c1) from {dbname}.t1") tdSql.checkData(0, 0, None) - tdSql.query("select last_row(c1) from testdb.ct4") + tdSql.query(f"select last_row(c1) from {dbname}.ct4") tdSql.checkData(0, 0, None) - tdSql.query("select last_row(c1) from testdb.stb1") + tdSql.query(f"select last_row(c1) from {dbname}.stb1") tdSql.checkData(0, 0, None) - - # support regular query about last ,first ,last_row - tdSql.error("select last_row(c1,NULL) from testdb.t1") - tdSql.error("select last_row(NULL) from testdb.t1") - tdSql.error("select last(NULL) from testdb.t1") - tdSql.error("select first(NULL) from testdb.t1") - tdSql.query("select last_row(c1,123) from testdb.t1") + # support regular query about last ,first ,last_row + tdSql.error(f"select last_row(c1,NULL) from {dbname}.t1") + tdSql.error(f"select last_row(NULL) from {dbname}.t1") + tdSql.error(f"select last(NULL) from {dbname}.t1") + tdSql.error(f"select first(NULL) from {dbname}.t1") + + tdSql.query(f"select last_row(c1,123) from {dbname}.t1") tdSql.checkData(0,0,None) tdSql.checkData(0,1,123) - tdSql.query("select last_row(123) from testdb.t1") + tdSql.query(f"select last_row(123) from {dbname}.t1") tdSql.checkData(0,0,123) - tdSql.error("select last(c1,NULL) from testdb.t1") + tdSql.error(f"select last(c1,NULL) from {dbname}.t1") - tdSql.query("select last(c1,123) from testdb.t1") + tdSql.query(f"select last(c1,123) from {dbname}.t1") tdSql.checkData(0,0,9) tdSql.checkData(0,1,123) - tdSql.error("select first(c1,NULL) from testdb.t1") + tdSql.error(f"select first(c1,NULL) from {dbname}.t1") - tdSql.query("select first(c1,123) from testdb.t1") + tdSql.query(f"select first(c1,123) from {dbname}.t1") tdSql.checkData(0,0,1) tdSql.checkData(0,1,123) - tdSql.error("select last_row(c1,c2,c3,NULL,c4) from testdb.t1") + tdSql.error(f"select last_row(c1,c2,c3,NULL,c4) from {dbname}.t1") - tdSql.query("select last_row(c1,c2,c3,123,c4) from testdb.t1") + tdSql.query(f"select last_row(c1,c2,c3,123,c4) from {dbname}.t1") tdSql.checkData(0,0,None) tdSql.checkData(0,1,None) tdSql.checkData(0,2,None) tdSql.checkData(0,3,123) tdSql.checkData(0,4,None) - - tdSql.error("select last_row(c1,c2,c3,NULL,c4,t1,t2) from testdb.ct1") - tdSql.query("select last_row(c1,c2,c3,123,c4,t1,t2) from testdb.ct1") + tdSql.error(f"select last_row(c1,c2,c3,NULL,c4,t1,t2) from {dbname}.ct1") + + tdSql.query(f"select last_row(c1,c2,c3,123,c4,t1,t2) from {dbname}.ct1") tdSql.checkData(0,0,9) tdSql.checkData(0,1,-99999) tdSql.checkData(0,2,-999) @@ -338,13 +332,13 @@ class TDTestCase: tdSql.checkData(0,5,0) # # bug need fix - tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.t1") + tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.t1") tdSql.checkData(0, 0, None) tdSql.checkData(0, 1, None) tdSql.checkData(0, 2, None) # # bug need fix - tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.ct1") + tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.ct1") tdSql.checkData(0, 0, 9) tdSql.checkData(0, 1, -99999) tdSql.checkData(0, 2, -999) @@ -352,7 +346,7 @@ class TDTestCase: tdSql.checkData(0, 4,-9.99000) # bug need fix - tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.stb1 where tbname='ct1'") + tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.stb1 where tbname='ct1'") tdSql.checkData(0, 0, 9) tdSql.checkData(0, 1, -99999) tdSql.checkData(0, 2, -999) @@ -360,124 +354,124 @@ class TDTestCase: tdSql.checkData(0, 4,-9.99000) # bug fix - tdSql.query("select last_row(abs(c1)) from testdb.ct1") + tdSql.query(f"select last_row(abs(c1)) from {dbname}.ct1") tdSql.checkData(0,0,9) # # bug fix - tdSql.query("select last_row(c1+1) from testdb.ct1") - tdSql.query("select last_row(c1+1) from testdb.stb1") - tdSql.query("select last_row(c1+1) from testdb.t1") + tdSql.query(f"select last_row(c1+1) from {dbname}.ct1") + tdSql.query(f"select last_row(c1+1) from {dbname}.stb1") + tdSql.query(f"select last_row(c1+1) from {dbname}.t1") # used for stable table - tdSql.query("select last_row(c1 ,c2 ,c3) ,last_row(c4) from testdb.ct1") + tdSql.query(f"select last_row(c1 ,c2 ,c3) ,last_row(c4) from {dbname}.ct1") tdSql.checkData(0,0,9) tdSql.checkData(0,1,-99999) tdSql.checkData(0,2,-999) tdSql.checkData(0,3,None) # bug need fix - tdSql.query("select last_row(c1 ,c2 ,c3) from testdb.stb1 ") + tdSql.query(f"select last_row(c1 ,c2 ,c3) from {dbname}.stb1 ") tdSql.checkData(0,0,None) tdSql.checkData(0,1,None) tdSql.checkData(0,2,None) - tdSql.query('select last_row(c1) from testdb.t1 where ts <"2022-12-31 01:01:36.000"') + tdSql.query(f'select last_row(c1) from {dbname}.t1 where ts <"2022-12-31 01:01:36.000"') tdSql.checkData(0,0,8) # bug need fix - tdSql.query("select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from testdb.stb1 where c4 is not null") + tdSql.query(f"select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from {dbname}.stb1 where c4 is not null") tdSql.checkData(0,0,16.000000000) tdSql.checkData(0,1,-101.000000000) - tdSql.query("select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from testdb.ct1 where c4<0") + tdSql.query(f"select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from {dbname}.ct1 where c4<0") tdSql.checkData(0,0,16.000000000) tdSql.checkData(0,1,-101.000000000) - tdSql.query("select last_row(ceil(c1+2)+floor(c1)-10) from testdb.stb1") + tdSql.query(f"select last_row(ceil(c1+2)+floor(c1)-10) from {dbname}.stb1") tdSql.checkData(0,0,None) - tdSql.query("select last_row(ceil(c1+2)+floor(c1)-10) from testdb.ct1") + tdSql.query(f"select last_row(ceil(c1+2)+floor(c1)-10) from {dbname}.ct1") tdSql.checkData(0,0,10.000000000) # filter for last_row # bug need fix for all function - tdSql.query("select last_row(ts ,c1 ) from testdb.ct4 where t1 = 1 ") + tdSql.query(f"select last_row(ts ,c1 ) from {dbname}.ct4 where t1 = 1 ") tdSql.checkRows(0) - tdSql.query("select count(c1) from testdb.ct4 where t1 = 1 ") + tdSql.query(f"select count(c1) from {dbname}.ct4 where t1 = 1 ") tdSql.checkRows(0) - tdSql.query("select last_row(c1) ,last(c1) from testdb.stb1 where c1 is null") + tdSql.query(f"select last_row(c1) ,last(c1) from {dbname}.stb1 where c1 is null") tdSql.checkRows(1) tdSql.checkData(0,0,None) tdSql.checkData(0,1,None) - tdSql.query("select last_row(c1) ,count(*) from testdb.stb1 where c1 is null") + tdSql.query(f"select last_row(c1) ,count(*) from {dbname}.stb1 where c1 is null") tdSql.checkData(0,0,None) tdSql.checkData(0,1,3) - tdSql.query("select last_row(c1) ,count(c1) from testdb.stb1 where c1 is null") + tdSql.query(f"select last_row(c1) ,count(c1) from {dbname}.stb1 where c1 is null") tdSql.checkData(0,0,None) tdSql.checkData(0,1,0) # bug need fix - tdSql.query("select tbname ,last_row(c1) from testdb.stb1") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1") tdSql.checkData(0,0,'ct4') tdSql.checkData(0,1,None) - tdSql.query(" select tbname ,last_row(c1) from testdb.stb1 partition by tbname order by tbname ") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 partition by tbname order by tbname ") tdSql.checkData(0,0,'ct1') tdSql.checkData(0,1,9) tdSql.checkData(1,0,'ct4') tdSql.checkData(1,1,None) - tdSql.query(" select tbname ,last_row(c1) from testdb.stb1 group by tbname order by tbname ") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 group by tbname order by tbname ") tdSql.checkData(0,0,'ct1') tdSql.checkData(0,1,9) tdSql.checkData(1,0,'ct4') tdSql.checkData(1,1,None) - tdSql.query(" select t1 ,count(c1) from testdb.stb1 partition by t1 ") + tdSql.query(f"select t1 ,count(c1) from {dbname}.stb1 partition by t1 ") tdSql.checkRows(2) # filter by tbname - tdSql.query("select last_row(c1) from testdb.stb1 where tbname = 'ct1' ") + tdSql.query(f"select last_row(c1) from {dbname}.stb1 where tbname = 'ct1' ") tdSql.checkData(0,0,9) # bug need fix - tdSql.query("select tbname ,last_row(c1) from testdb.stb1 where tbname = 'ct1' ") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 where tbname = 'ct1' ") tdSql.checkData(0,1,9) - tdSql.query("select tbname ,last_row(c1) from testdb.stb1 partition by tbname order by tbname") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 partition by tbname order by tbname") tdSql.checkData(0, 0, 'ct1') tdSql.checkData(0, 1, 9) tdSql.checkData(1, 0, 'ct4') tdSql.checkData(1, 1, None) - tdSql.query("select tbname ,last_row(c1) from testdb.stb1 group by tbname order by tbname") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 group by tbname order by tbname") tdSql.checkData(0, 0, 'ct1') tdSql.checkData(0, 1, 9) tdSql.checkData(1, 0, 'ct4') tdSql.checkData(1, 1, None) # last_row for only tag - tdSql.query("select last_row(t1 ,t2 ,t3 , t4 ) from testdb.stb1") + tdSql.query(f"select last_row(t1 ,t2 ,t3 , t4 ) from {dbname}.stb1") tdSql.checkData(0,0,3) tdSql.checkData(0,1,33333) tdSql.checkData(0,2,333) tdSql.checkData(0,3,3) - tdSql.query("select last_row(abs(floor(t1)) ,t2 ,ceil(abs(t3)) , abs(ceil(t4)) ) from testdb.stb1") + tdSql.query(f"select last_row(abs(floor(t1)) ,t2 ,ceil(abs(t3)) , abs(ceil(t4)) ) from {dbname}.stb1") tdSql.checkData(0,0,3) tdSql.checkData(0,1,33333) tdSql.checkData(0,2,333) tdSql.checkData(0,3,3) # filter by tag - tdSql.query("select tbname ,last_row(c1) from testdb.stb1 where t1 =0 ") + tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 where t1 =0 ") tdSql.checkData(0,1,9) - tdSql.query("select tbname ,last_row(c1) ,t1 from testdb.stb1 partition by t1 order by t1") + tdSql.query(f"select tbname ,last_row(c1) ,t1 from {dbname}.stb1 partition by t1 order by t1") tdSql.checkData(0, 0, 'ct1') tdSql.checkData(0, 1, 9) tdSql.checkData(1, 0, 'ct4') @@ -485,56 +479,55 @@ class TDTestCase: # filter by col - tdSql.query("select tbname ,last_row(c1),abs(c1)from testdb.stb1 where c1 =1;") + tdSql.query(f"select tbname ,last_row(c1),abs(c1)from {dbname}.stb1 where c1 =1;") tdSql.checkData(0, 0, 'ct1') tdSql.checkData(0, 1, 1) tdSql.checkData(0, 2, 1) - tdSql.query("select last_row(c1) from testdb.stb1 where abs(ceil(c1))*c1==1") + tdSql.query(f"select last_row(c1) from {dbname}.stb1 where abs(ceil(c1))*c1==1") tdSql.checkData(0,0,1) # mix with common functions - tdSql.query("select last_row(*) ,last(*) from testdb.stb1 ") + tdSql.query(f"select last_row(*) ,last(*) from {dbname}.stb1 ") tdSql.checkRows(1) - tdSql.query("select last_row(*) ,last(*) from testdb.stb1 ") + tdSql.query(f"select last_row(*) ,last(*) from {dbname}.stb1 ") tdSql.checkRows(1) - tdSql.query("select last_row(c1+abs(c1)) from testdb.stb1 partition by tbname order by tbname") - tdSql.query("select last(c1), max(c1+abs(c1)),last_row(c1+abs(c1)) from testdb.stb1 partition by tbname order by tbname") + tdSql.query(f"select last_row(c1+abs(c1)) from {dbname}.stb1 partition by tbname order by tbname") + tdSql.query(f"select last(c1), max(c1+abs(c1)),last_row(c1+abs(c1)) from {dbname}.stb1 partition by tbname order by tbname") # # bug need fix ,taosd crash - tdSql.error("select last_row(*) ,last(*) from testdb.stb1 partition by tbname order by last(*)") - tdSql.error("select last_row(*) ,last(*) from testdb.stb1 partition by tbname order by last_row(*)") + tdSql.error(f"select last_row(*) ,last(*) from {dbname}.stb1 partition by tbname order by last(*)") + tdSql.error(f"select last_row(*) ,last(*) from {dbname}.stb1 partition by tbname order by last_row(*)") # mix with agg functions - tdSql.query("select last(*), last_row(*),last(c1), last_row(c1) from testdb.stb1 ") - tdSql.query("select last(*), last_row(*),last(c1), last_row(c1) from testdb.ct1 ") - tdSql.query("select last(*), last_row(*),last(c1+1)*max(c1), last_row(c1+2)/2 from testdb.t1 ") - tdSql.query("select last_row(*) ,abs(c1/2)+100 from testdb.stb1 where tbname =\"ct1\" ") - tdSql.query("select c1, last_row(c5) from testdb.ct1 ") - tdSql.error("select c1, last_row(c5) ,last(c1) from testdb.stb1 ") + tdSql.query(f"select last(*), last_row(*),last(c1), last_row(c1) from {dbname}.stb1 ") + tdSql.query(f"select last(*), last_row(*),last(c1), last_row(c1) from {dbname}.ct1 ") + tdSql.query(f"select last(*), last_row(*),last(c1+1)*max(c1), last_row(c1+2)/2 from {dbname}.t1 ") + tdSql.query(f"select last_row(*) ,abs(c1/2)+100 from {dbname}.stb1 where tbname =\"ct1\" ") + tdSql.query(f"select c1, last_row(c5) from {dbname}.ct1 ") + tdSql.error(f"select c1, last_row(c5) ,last(c1) from {dbname}.stb1 ") # agg functions mix with agg functions - tdSql.query("select last(c1) , max(c5), count(c5) from testdb.stb1") - tdSql.query("select last_row(c1) , max(c5), count(c5) from testdb.ct1") + tdSql.query(f"select last(c1) , max(c5), count(c5) from {dbname}.stb1") + tdSql.query(f"select last_row(c1) , max(c5), count(c5) from {dbname}.ct1") # bug fix for compute - tdSql.query("select last_row(c1) -0 ,last(c1)-0 ,last(c1)+last_row(c1) from testdb.ct4 ") + tdSql.query(f"select last_row(c1) -0 ,last(c1)-0 ,last(c1)+last_row(c1) from {dbname}.ct4 ") tdSql.checkData(0,0,None) tdSql.checkData(0,1,0.000000000) tdSql.checkData(0,2,None) - tdSql.query(" select c1, abs(c1) -0 ,last_row(c1-0.1)-0.1 from testdb.ct1") + tdSql.query(f"select c1, abs(c1) -0 ,last_row(c1-0.1)-0.1 from {dbname}.ct1") tdSql.checkData(0,0,9) tdSql.checkData(0,1,9.000000000) tdSql.checkData(0,2,8.800000000) - def abs_func_filter(self): - tdSql.execute("use db") + def abs_func_filter(self, dbname="db"): tdSql.query( - "select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,last_row(log(c1,2)-0.5) from db.ct4 where c1>5 ") + f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,last_row(log(c1,2)-0.5) from {dbname}.ct4 where c1>5 ") tdSql.checkData(0, 0, 6) tdSql.checkData(0, 1, 6.000000000) tdSql.checkData(0, 2, 6.000000000) @@ -542,19 +535,19 @@ class TDTestCase: tdSql.checkData(0, 4, 2.084962501) tdSql.query( - "select last_row(c1,c2,c1+5) from db.ct4 where c1=5 ") + f"select last_row(c1,c2,c1+5) from {dbname}.ct4 where c1=5 ") tdSql.checkData(0, 0, 5) tdSql.checkData(0, 1, 55555) tdSql.checkData(0, 2, 10.000000000) tdSql.query( - "select last(c1,c2,c1+5) from db.ct4 where c1=5 ") + f"select last(c1,c2,c1+5) from {dbname}.ct4 where c1=5 ") tdSql.checkData(0, 0, 5) tdSql.checkData(0, 1, 55555) tdSql.checkData(0, 2, 10.000000000) tdSql.query( - "select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from db.ct4 where c1>log(c1,2) limit 1 ") + f"select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from {dbname}.ct4 where c1>log(c1,2) limit 1 ") tdSql.checkRows(1) tdSql.checkData(0, 0, 8) tdSql.checkData(0, 1, 88888) @@ -566,166 +559,162 @@ class TDTestCase: def abs_Arithmetic(self): pass - def check_boundary_values(self): + def check_boundary_values(self, dbname="bound_test"): - tdSql.execute("drop database if exists bound_test") - tdSql.execute("create database if not exists bound_test cachemodel 'LAST_ROW' ") + tdSql.execute(f"drop database if exists {dbname}") + tdSql.execute(f"create database if not exists {dbname} cachemodel 'LAST_ROW' ") time.sleep(3) - tdSql.execute("use bound_test") + tdSql.execute(f"use {dbname}") tdSql.execute( - "create table bound_test.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);" + f"create table {dbname}.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);" ) - tdSql.execute(f'create table bound_test.sub1_bound using stb_bound tags ( 1 )') + tdSql.execute(f'create table {dbname}.sub1_bound using {dbname}.stb_bound tags ( 1 )') tdSql.execute( - f"insert into bound_test.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into bound_test.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into bound_test.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into bound_test.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.error( - f"insert into bound_test.sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) # check basic elem for table per row tdSql.query( - "select last(c1) ,last_row(c2), last_row(c3)+1 , last(c4)+1 from bound_test.sub1_bound ") + f"select last(c1) ,last_row(c2), last_row(c3)+1 , last(c4)+1 from {dbname}.sub1_bound ") tdSql.checkData(0, 0, -2147483646) tdSql.checkData(0, 1, -9223372036854775806) tdSql.checkData(0, 2, -32765.000000000) tdSql.checkData(0, 3, -125.000000000) # check + - * / in functions tdSql.query( - "select last_row(c1+1) ,last_row(c2) , last(c3*1) , last(c4/2) from bound_test.sub1_bound ") - - def test_tag_compute_for_scalar_function(self): - - tdSql.execute("use testdb") + f"select last_row(c1+1) ,last_row(c2) , last(c3*1) , last(c4/2) from {dbname}.sub1_bound ") + def test_tag_compute_for_scalar_function(self, dbname="testdb"): # bug need fix - tdSql.query(" select sum(c1) from testdb.stb1 where t1+10 >1; ") - tdSql.query("select c1 ,t1 from testdb.stb1 where t1 =0 ") + tdSql.query(f"select sum(c1) from {dbname}.stb1 where t1+10 >1; ") + tdSql.query(f"select c1 ,t1 from {dbname}.stb1 where t1 =0 ") tdSql.checkRows(13) - tdSql.query("select last_row(c1,t1) from testdb.stb1 ") + tdSql.query(f"select last_row(c1,t1) from {dbname}.stb1 ") tdSql.checkData(0,0,None) tdSql.checkData(0,1,3) - tdSql.query("select last_row(c1),t1 from testdb.stb1 ") + tdSql.query(f"select last_row(c1),t1 from {dbname}.stb1 ") tdSql.checkData(0,0,None) tdSql.checkData(0,1,3) - tdSql.query("select last_row(c1,t1),last(t1) from testdb.stb1 ") + tdSql.query(f"select last_row(c1,t1),last(t1) from {dbname}.stb1 ") tdSql.checkData(0,0,None) tdSql.checkData(0,1,3) tdSql.checkData(0,2,3) - tdSql.query("select last_row(t1) from testdb.stb1 where t1 >0 ") + tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 >0 ") tdSql.checkRows(1) tdSql.checkData(0,0,3) - tdSql.query("select last_row(t1) from testdb.stb1 where t1 =3 ") + tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 =3 ") tdSql.checkRows(1) tdSql.checkData(0,0,3) - tdSql.query("select last_row(t1) from testdb.stb1 where t1 =2") + tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 =2") tdSql.checkRows(0) # nest query for last_row - tdSql.query("select last_row(t1) from (select ts , c1 ,t1 from testdb.stb1)") + tdSql.query(f"select last_row(t1) from (select ts , c1 ,t1 from {dbname}.stb1)") tdSql.checkData(0,0,3) - tdSql.query("select distinct(c1) ,t1 from testdb.stb1") + tdSql.query(f"select distinct(c1) ,t1 from {dbname}.stb1") tdSql.checkRows(20) - tdSql.query("select last_row(c1) from (select _rowts , c1 ,t1 from testdb.stb1)") + tdSql.query(f"select last_row(c1) from (select _rowts , c1 ,t1 from {dbname}.stb1)") tdSql.checkData(0,0,None) - tdSql.query("select last_row(c1) from (select ts , c1 ,t1 from testdb.stb1)") + tdSql.query(f"select last_row(c1) from (select ts , c1 ,t1 from {dbname}.stb1)") tdSql.checkData(0,0,None) - tdSql.query("select ts , last_row(c1) ,c1 from (select ts , c1 ,t1 from testdb.stb1)") + tdSql.query(f"select ts , last_row(c1) ,c1 from (select ts , c1 ,t1 from {dbname}.stb1)") tdSql.checkData(0,1,None) - tdSql.query("select ts , last_row(c1) ,c1 from (select ts , max(c1) c1 ,t1 from testdb.stb1 where ts >now -1h and ts now -1h and ts now -1h and ts now -1h and ts now -1h and ts now -1h and ts ="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(NULL)') + tdSql.query(f'select max(c1) from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(NULL)') tdSql.checkRows(8) tdSql.checkData(7,0,None) - tdSql.query('select last_row(c1) from testdb.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(value ,2 )') + tdSql.query(f'select last_row(c1) from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(value ,2 )') tdSql.checkRows(8) tdSql.checkData(7,0,2) - tdSql.query('select last_row(c1) from testdb.stb1 where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s)') - tdSql.query('select last_row(c1) from (select ts , c1 from testdb.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" ) interval(10s) sliding(5s)') + tdSql.query(f'select last_row(c1) from {dbname}.stb1 where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s)') + tdSql.query(f'select last_row(c1) from (select ts , c1 from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" ) interval(10s) sliding(5s)') # join - tdSql.query("use test") - tdSql.query("select last(sub_tb_1.c1), last(sub_tb_2.c2) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + db1 = "test" + tdSql.query(f"use {db1}") + tdSql.query(f"select last(sub_tb_1.c1), last(sub_tb_2.c2) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") tdSql.checkCols(2) last_row_result = tdSql.queryResult - tdSql.query("select last_row(sub_tb_1.c1), last_row(sub_tb_2.c2) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + tdSql.query(f"select last_row(sub_tb_1.c1), last_row(sub_tb_2.c2) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") for ind , row in enumerate(last_row_result): tdSql.checkData(ind , 0 , row[0]) - tdSql.query("select last(*), last(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + tdSql.query(f"select last(*), last(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") last_row_result = tdSql.queryResult - tdSql.query("select last_row(*), last_row(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + tdSql.query(f"select last_row(*), last_row(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") for ind , row in enumerate(last_row_result): tdSql.checkData(ind , 0 , row[0]) - tdSql.query("select last(*), last_row(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + tdSql.query(f"select last(*), last_row(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") for ind , row in enumerate(last_row_result): tdSql.checkData(ind , 0 , row[0]) - tdSql.query("select last_row(*), last(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") + tdSql.query(f"select last_row(*), last(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts") for ind , row in enumerate(last_row_result): tdSql.checkData(ind , 0 , row[0]) - def support_super_table_test(self): - tdSql.execute(" use testdb ") - self.check_result_auto( " select c1 from testdb.stb1 order by ts " , "select abs(c1) from testdb.stb1 order by ts" ) - self.check_result_auto( " select c1 from testdb.stb1 order by tbname " , "select abs(c1) from testdb.stb1 order by tbname" ) - self.check_result_auto( " select c1 from testdb.stb1 where c1 > 0 order by tbname " , "select abs(c1) from testdb.stb1 where c1 > 0 order by tbname" ) - self.check_result_auto( " select c1 from testdb.stb1 where c1 > 0 order by tbname " , "select abs(c1) from testdb.stb1 where c1 > 0 order by tbname" ) + def support_super_table_test(self, dbname="testdb"): + self.check_result_auto( f"select c1 from {dbname}.stb1 order by ts " , f"select abs(c1) from {dbname}.stb1 order by ts" ) + self.check_result_auto( f"select c1 from {dbname}.stb1 order by tbname " , f"select abs(c1) from {dbname}.stb1 order by tbname" ) + self.check_result_auto( f"select c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" ) + self.check_result_auto( f"select c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" ) - self.check_result_auto( " select t1,c1 from testdb.stb1 order by ts " , "select t1, abs(c1) from testdb.stb1 order by ts" ) - self.check_result_auto( " select t2,c1 from testdb.stb1 order by tbname " , "select t2 ,abs(c1) from testdb.stb1 order by tbname" ) - self.check_result_auto( " select t3,c1 from testdb.stb1 where c1 > 0 order by tbname " , "select t3 ,abs(c1) from testdb.stb1 where c1 > 0 order by tbname" ) - self.check_result_auto( " select t4,c1 from testdb.stb1 where c1 > 0 order by tbname " , "select t4 , abs(c1) from testdb.stb1 where c1 > 0 order by tbname" ) - pass + self.check_result_auto( f"select t1,c1 from {dbname}.stb1 order by ts " , f"select t1, abs(c1) from {dbname}.stb1 order by ts" ) + self.check_result_auto( f"select t2,c1 from {dbname}.stb1 order by tbname " , f"select t2 ,abs(c1) from {dbname}.stb1 order by tbname" ) + self.check_result_auto( f"select t3,c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select t3 ,abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" ) + self.check_result_auto( f"select t4,c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select t4 , abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" ) def basic_query(self): diff --git a/tests/system-test/fulltest.sh b/tests/system-test/fulltest.sh index 41faaab9ee..44ea17928c 100755 --- a/tests/system-test/fulltest.sh +++ b/tests/system-test/fulltest.sh @@ -110,13 +110,14 @@ python3 ./test.py -f 2-query/histogram.py python3 ./test.py -f 2-query/histogram.py -R python3 ./test.py -f 2-query/hyperloglog.py python3 ./test.py -f 2-query/hyperloglog.py -R +python3 ./test.py -f 2-query/interp.py +python3 ./test.py -f 2-query/interp.py -R python3 ./test.py -f 2-query/irate.py # python3 ./test.py -f 2-query/irate.py -R python3 ./test.py -f 2-query/join.py python3 ./test.py -f 2-query/join.py -R - -python3 ./test.py -f 2-query/interp.py -python3 ./test.py -f 2-query/interp.py -R +python3 ./test.py -f 2-query/last_row.py +python3 ./test.py -f 2-query/last_row.py -R @@ -178,7 +179,6 @@ python3 ./test.py -f 2-query/ttl_comment.py python3 ./test.py -f 2-query/twa.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 From 555a575c584282c4826c593e2762a508da463652 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Fri, 12 Aug 2022 10:46:55 +0800 Subject: [PATCH 003/108] enh: insert client optimize --- source/libs/parser/src/parInsert.c | 50 +---------------------- source/libs/parser/test/parInsertTest.cpp | 5 ++- source/libs/parser/test/parTestUtil.cpp | 8 ++-- 3 files changed, 9 insertions(+), 54 deletions(-) diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index 112c1f54e4..64488eda61 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -236,12 +236,6 @@ static int32_t getTableVgroup(SInsertParseContext* pCxt, int32_t tbNo, SName* pT } static int32_t getTableMetaImpl(SInsertParseContext* pCxt, int32_t tbNo, SName* name, char* dbFname, bool isStb) { - // bool pass = false; - // CHECK_CODE(checkAuth(pCxt, dbFname, &pass)); - // if (!pass) { - // return TSDB_CODE_PAR_PERMISSION_DENIED; - // } - CHECK_CODE(getTableSchema(pCxt, tbNo, name, isStb, &pCxt->pTableMeta)); if (!isStb) { SVgroupInfo vg; @@ -1230,8 +1224,6 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo } pCxt->pSql += index; - // int64_t memStart = taosGetTimestampMs(); - if ((*numOfRows) >= maxRows || pDataBlock->size + extendedRowSize >= pDataBlock->nAllocSize) { int32_t tSize; CHECK_CODE(allocateMemIfNeed(pDataBlock, extendedRowSize, &tSize)); @@ -1239,17 +1231,12 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo maxRows = tSize; } - // pCxt->memElapsed += taosGetTimestampMs() - memStart; - // int64_t parRowStart = taosGetTimestampMs(); - bool gotRow = false; CHECK_CODE(parseOneRow(pCxt, pDataBlock, tinfo.precision, &gotRow, pCxt->tmpTokenBuf)); if (gotRow) { pDataBlock->size += extendedRowSize; // len; } - // pCxt->parRowElapsed += taosGetTimestampMs() - parRowStart; - NEXT_VALID_TOKEN(pCxt->pSql, sToken); if (TK_NK_COMMA == sToken.type) { return generateSyntaxErrMsg(&pCxt->msg, TSDB_CODE_PAR_INVALID_COLUMNS_NUM); @@ -1269,13 +1256,9 @@ static int32_t parseValues(SInsertParseContext* pCxt, STableDataBlocks* pDataBlo } static int32_t parseValuesClause(SInsertParseContext* pCxt, STableDataBlocks* dataBuf) { - // int64_t memStart = taosGetTimestampMs(); - int32_t maxNumOfRows; CHECK_CODE(allocateMemIfNeed(dataBuf, getExtendedRowSize(dataBuf), &maxNumOfRows)); - // pCxt->memElapsed += taosGetTimestampMs() - memStart; - int32_t numOfRows = 0; CHECK_CODE(parseValues(pCxt, dataBuf, maxNumOfRows, &numOfRows)); @@ -1396,16 +1379,8 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { char dbFName[TSDB_DB_FNAME_LEN]; bool autoCreateTbl = false; - // int64_t parBodyStart = taosGetTimestampMs(); - // int64_t parTableElapsed = 0; - // int64_t getTableElapsed = 0; - // int64_t getDataBufElapsed = 0; - // int64_t parValueElapsed = 0; - // for each table while (1) { - // int64_t parTableStart = taosGetTimestampMs(); - SToken sToken; char* tbName = NULL; @@ -1444,7 +1419,7 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { SToken tbnameToken = sToken; NEXT_TOKEN(pCxt->pSql, sToken); - if (!pCxt->pComCxt->async) { + if (!pCxt->pComCxt->async || TK_USING == sToken.type) { CHECK_CODE(createSName(&name, &tbnameToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); tNameExtractFullName(&name, tbFName); @@ -1471,9 +1446,6 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { NEXT_TOKEN(pCxt->pSql, sToken); } - // parTableElapsed += taosGetTimestampMs() - parTableStart; - // int64_t getTableStart = taosGetTimestampMs(); - if (TK_USING == sToken.type) { CHECK_CODE(parseUsingClause(pCxt, tbNum, &name, tbFName)); NEXT_TOKEN(pCxt->pSql, sToken); @@ -1482,9 +1454,6 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { CHECK_CODE(getTableMeta(pCxt, tbNum, &name, dbFName)); } - // getTableElapsed += taosGetTimestampMs() - getTableStart; - // int64_t getDataBufStart = taosGetTimestampMs(); - STableDataBlocks* dataBuf = NULL; CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, &pCxt->pTableMeta->uid, sizeof(pCxt->pTableMeta->uid), TSDB_DEFAULT_PAYLOAD_SIZE, sizeof(SSubmitBlk), @@ -1498,13 +1467,9 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { pCxt->pSql = pCurrPos; } - // getDataBufElapsed += taosGetTimestampMs() - getDataBufStart; - if (TK_VALUES == sToken.type) { // pSql -> (field1_value, ...) [(field1_value2, ...) ...] - // int64_t parValueStart = taosGetTimestampMs(); CHECK_CODE(parseValuesClause(pCxt, dataBuf)); - // parValueElapsed += taosGetTimestampMs() - parValueStart; TSDB_QUERY_SET_TYPE(pCxt->pOutput->insertType, TSDB_QUERY_TYPE_INSERT); tbNum++; @@ -1528,12 +1493,6 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { return buildSyntaxErrMsg(&pCxt->msg, "keyword VALUES or FILE is expected", sToken.z); } - // printf( - // "parse %d sql %d tables %d rows elapsed parBodyElapsed=%ldms parTableElapsed=%ldms getTableElapsed=%ldms " - // "getDataBufElapsed=%ldms parValueElapsed=%ldms(memElapsed=%ldms parRowElapsed=%ldms)\n", - // pCxt->pComCxt->sqlLen, tbNum, pCxt->totalNum, taosGetTimestampMs() - parBodyStart, parTableElapsed, - // getTableElapsed, getDataBufElapsed, parValueElapsed, pCxt->memElapsed, pCxt->parRowElapsed); - qDebug("0x%" PRIx64 " insert input rows: %d", pCxt->pComCxt->requestId, pCxt->totalNum); if (TSDB_QUERY_HAS_TYPE(pCxt->pOutput->insertType, TSDB_QUERY_TYPE_STMT_INSERT)) { @@ -1700,9 +1659,6 @@ static int32_t skipUsingClause(SInsertParseSyntaxCxt* pCxt) { static int32_t collectTableMetaKey(SInsertParseSyntaxCxt* pCxt, bool isStable, int32_t tableNo, SToken* pTbToken) { SName name; CHECK_CODE(createSName(&name, pTbToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); - // CHECK_CODE(reserveUserAuthInCacheExt(pCxt->pComCxt->pUser, &name, AUTH_TYPE_WRITE, pCxt->pMetaCache)); - // CHECK_CODE(reserveTableMetaInCacheExt(&name, pCxt->pMetaCache)); - // CHECK_CODE(reserveTableVgroupInCacheExt(&name, pCxt->pMetaCache)); CHECK_CODE(reserveTableMetaInCacheForInsert(&name, isStable ? CATALOG_REQ_TYPE_META : CATALOG_REQ_TYPE_BOTH, tableNo, pCxt->pMetaCache)); return TSDB_CODE_SUCCESS; @@ -1766,7 +1722,7 @@ static int32_t parseInsertBodySyntax(SInsertParseSyntaxCxt* pCxt) { CHECK_CODE(collectTableMetaKey(pCxt, true, tableNo, &sToken)); CHECK_CODE(skipUsingClause(pCxt)); NEXT_TOKEN(pCxt->pSql, sToken); - } else { + } else if (!existedUsing) { CHECK_CODE(collectTableMetaKey(pCxt, false, tableNo, &tbnameToken)); } @@ -1803,9 +1759,7 @@ int32_t parseInsertSyntax(SParseContext* pContext, SQuery** pQuery, SParseMetaCa .pMetaCache = pMetaCache}; int32_t code = skipInsertInto(&context.pSql, &context.msg); if (TSDB_CODE_SUCCESS == code) { - // int64_t parSyntaxStart = taosGetTimestampMs(); code = parseInsertBodySyntax(&context); - // printf("parse %d sql elapsed=%ldms\n", pContext->sqlLen, taosGetTimestampMs() - parSyntaxStart); } if (TSDB_CODE_SUCCESS == code) { *pQuery = (SQuery*)nodesMakeNode(QUERY_NODE_QUERY); diff --git a/source/libs/parser/test/parInsertTest.cpp b/source/libs/parser/test/parInsertTest.cpp index 7302491ba7..a15fc6e8fa 100644 --- a/source/libs/parser/test/parInsertTest.cpp +++ b/source/libs/parser/test/parInsertTest.cpp @@ -54,6 +54,7 @@ class InsertTest : public Test { cxt_.sqlLen = strlen(sql); sqlBuf_[cxt_.sqlLen] = '\0'; cxt_.pSql = sqlBuf_; + cxt_.pUser = "root"; } int32_t run() { @@ -77,7 +78,7 @@ class InsertTest : public Test { unique_ptr catalogReq(new SCatalogReq(), MockCatalogService::destoryCatalogReq); - code_ = buildCatalogReq(metaCache.get(), catalogReq.get()); + code_ = buildCatalogReq(&cxt_, metaCache.get(), catalogReq.get()); if (code_ != TSDB_CODE_SUCCESS) { cout << "buildCatalogReq code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; return code_; @@ -88,7 +89,7 @@ class InsertTest : public Test { metaCache.reset(new SParseMetaCache()); request = false; - code_ = putMetaDataToCache(catalogReq.get(), metaData.get(), metaCache.get()); + code_ = putMetaDataToCache(catalogReq.get(), metaData.get(), metaCache.get(), true); if (code_ != TSDB_CODE_SUCCESS) { cout << "putMetaDataToCache code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; return code_; diff --git a/source/libs/parser/test/parTestUtil.cpp b/source/libs/parser/test/parTestUtil.cpp index 3fe4b533e4..10a9561300 100644 --- a/source/libs/parser/test/parTestUtil.cpp +++ b/source/libs/parser/test/parTestUtil.cpp @@ -225,8 +225,8 @@ class ParserTestBaseImpl { DO_WITH_THROW(collectMetaKey, pCxt, pQuery, pMetaCache); } - void doBuildCatalogReq(const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq) { - DO_WITH_THROW(buildCatalogReq, pMetaCache, pCatalogReq); + void doBuildCatalogReq(SParseContext* pCxt, const SParseMetaCache* pMetaCache, SCatalogReq* pCatalogReq) { + DO_WITH_THROW(buildCatalogReq, pCxt, pMetaCache, pCatalogReq); } void doGetAllMeta(const SCatalogReq* pCatalogReq, SMetaData* pMetaData) { @@ -234,7 +234,7 @@ class ParserTestBaseImpl { } void doPutMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache) { - DO_WITH_THROW(putMetaDataToCache, pCatalogReq, pMetaData, pMetaCache); + DO_WITH_THROW(putMetaDataToCache, pCatalogReq, pMetaData, pMetaCache, false); } void doAuthenticate(SParseContext* pCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) { @@ -348,7 +348,7 @@ class ParserTestBaseImpl { unique_ptr catalogReq(new SCatalogReq(), MockCatalogService::destoryCatalogReq); - doBuildCatalogReq(metaCache.get(), catalogReq.get()); + doBuildCatalogReq(&cxt, metaCache.get(), catalogReq.get()); string err; thread t1([&]() { From e1508436f4bcec4500047cee4d341db3779a466c Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Fri, 12 Aug 2022 16:47:42 +0800 Subject: [PATCH 004/108] enh: insert client optimize --- source/libs/parser/src/parInsert.c | 2 +- source/libs/parser/src/parUtil.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index 64488eda61..69545fa67a 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -1032,7 +1032,7 @@ static int32_t storeTableMeta(SInsertParseContext* pCxt, SHashObj* pHash, int32_ CHECK_CODE(getTableVgroup(pCxt, tbNo, pTableName, &vg)); CHECK_CODE(taosHashPut(pCxt->pVgroupsHashObj, (const char*)&vg.vgId, sizeof(vg.vgId), (char*)&vg, sizeof(vg))); - pMeta->uid = 0; + pMeta->uid = tbNo; pMeta->vgId = vg.vgId; pMeta->tableType = TSDB_CHILD_TABLE; diff --git a/source/libs/parser/src/parUtil.c b/source/libs/parser/src/parUtil.c index de4f70d3f3..17e78e7806 100644 --- a/source/libs/parser/src/parUtil.c +++ b/source/libs/parser/src/parUtil.c @@ -746,6 +746,9 @@ int32_t putMetaDataToCacheForInsert(const SMetaData* pMetaData, SParseMetaCache* int32_t ndbs = taosArrayGetSize(pMetaData->pUser); for (int32_t i = 0; i < ndbs; ++i) { SMetaRes* pRes = taosArrayGet(pMetaData->pUser, i); + if (TSDB_CODE_SUCCESS != pRes->code) { + return pRes->code; + } if (!(*(bool*)pRes->pRes)) { return TSDB_CODE_PAR_PERMISSION_DENIED; } From 8922b48b1103ab95a2d1461eabf6b28b88fd6912 Mon Sep 17 00:00:00 2001 From: cpwu Date: Fri, 12 Aug 2022 18:00:11 +0800 Subject: [PATCH 005/108] add case to rest API CI --- tests/pytest/util/taosadapter.py | 14 +- tests/system-test/2-query/leastsquares.py | 128 +++---- tests/system-test/2-query/length.py | 39 +- tests/system-test/2-query/log.py | 417 ++++++++++------------ tests/system-test/fulltest.sh | 11 +- tests/system-test/test.py | 24 +- 6 files changed, 306 insertions(+), 327 deletions(-) diff --git a/tests/pytest/util/taosadapter.py b/tests/pytest/util/taosadapter.py index 614eb95d6b..0307675dfb 100644 --- a/tests/pytest/util/taosadapter.py +++ b/tests/pytest/util/taosadapter.py @@ -238,19 +238,23 @@ class TAdapter: if self.running != 0: psCmd = f"ps -ef|grep -w {toBeKilled}| grep -v grep | awk '{{print $2}}'" + # psCmd = f"pgrep {toBeKilled}" processID = subprocess.check_output( - psCmd, shell=True).decode("utf-8") + psCmd, shell=True) while(processID): - killCmd = f"kill {signal} {processID} > /dev/null 2>&1" + killCmd = f"pkill {signal} {processID} > /dev/null 2>&1" os.system(killCmd) time.sleep(1) processID = subprocess.check_output( psCmd, shell=True).decode("utf-8") if not platform.system().lower() == 'windows': - for port in range(6030, 6041): - fuserCmd = f"fuser -k -n tcp {port} > /dev/null" - os.system(fuserCmd) + port = 6041 + fuserCmd = f"fuser -k -n tcp {port} > /dev/null" + os.system(fuserCmd) + # for port in range(6030, 6041): + # fuserCmd = f"fuser -k -n tcp {port} > /dev/null" + # os.system(fuserCmd) self.running = 0 tdLog.debug(f"taosadapter is stopped by kill {signal}") diff --git a/tests/system-test/2-query/leastsquares.py b/tests/system-test/2-query/leastsquares.py index 3bab509942..fe7188a545 100644 --- a/tests/system-test/2-query/leastsquares.py +++ b/tests/system-test/2-query/leastsquares.py @@ -26,6 +26,7 @@ TS_TYPE_COL = [ TS_COL, ] ALL_COL = [ INT_COL, BINT_COL, SINT_COL, TINT_COL, FLOAT_COL, DOUBLE_COL, BOOL_COL, BINARY_COL, NCHAR_COL, TS_COL ] +DBNAME = "db" class TDTestCase: def init(self, conn, logSql): @@ -133,13 +134,13 @@ class TDTestCase: return f"select leastsquares({select_clause}, {start_val}, {step_val}) from {from_clause} {where_condition} {group_condition}" @property - def __tb_list(self): + def __tb_list(self, dbname=DBNAME): return [ - "ct1", - "ct4", - "t1", - "ct2", - "stb1", + f"{dbname}.ct1", + f"{dbname}.ct4", + f"{dbname}.nt1", + f"{dbname}.ct2", + f"{dbname}.stb1", ] @property @@ -161,36 +162,37 @@ class TDTestCase: err_sqls = [] __no_join_tblist = self.__tb_list for tb in __no_join_tblist: - select_claus_list = self.__query_condition(tb) - for select_claus in select_claus_list: - group_claus = self.__group_condition(col=select_claus) - where_claus = self.__where_condition(query_conditon=select_claus) - having_claus = self.__group_condition(col=select_claus, having=f"{select_claus} is not null") - for arg in self.start_step_val: - if not isinstance(arg,int) or isinstance(arg, bool) : - err_sqls.extend( - ( - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg), - self.__single_sql(select_clause=select_claus, from_clause=tb, step_val=arg, group_condition=group_claus), - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, where_condition=where_claus, group_condition=having_claus), - ) + tbname = tb.split(".")[-1] + select_claus_list = self.__query_condition(tbname) + for select_claus in select_claus_list: + group_claus = self.__group_condition(col=select_claus) + where_claus = self.__where_condition(query_conditon=select_claus) + having_claus = self.__group_condition(col=select_claus, having=f"{select_claus} is not null") + for arg in self.start_step_val: + if not isinstance(arg,int) or isinstance(arg, bool) : + err_sqls.extend( + ( + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg), + self.__single_sql(select_clause=select_claus, from_clause=tb, step_val=arg, group_condition=group_claus), + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, where_condition=where_claus, group_condition=having_claus), ) - elif isinstance(select_claus, str) and any([BOOL_COL in select_claus, BINARY_COL in select_claus, NCHAR_COL in select_claus, TS_COL in select_claus]): - err_sqls.extend( - ( - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg), - self.__single_sql(select_clause=select_claus, from_clause=tb, step_val=arg, group_condition=group_claus), - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, where_condition=where_claus, group_condition=having_claus), - ) + ) + elif isinstance(select_claus, str) and any([BOOL_COL in select_claus, BINARY_COL in select_claus, NCHAR_COL in select_claus, TS_COL in select_claus]): + err_sqls.extend( + ( + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg), + self.__single_sql(select_clause=select_claus, from_clause=tb, step_val=arg, group_condition=group_claus), + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, where_condition=where_claus, group_condition=having_claus), ) - else: - current_sqls.extend( - ( - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, step_val=0), - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=0, step_val=arg, group_condition=group_claus), - self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, step_val=arg, where_condition=where_claus, group_condition=having_claus), - ) + ) + else: + current_sqls.extend( + ( + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, step_val=0), + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=0, step_val=arg, group_condition=group_claus), + self.__single_sql(select_clause=select_claus, from_clause=tb, start_val=arg, step_val=arg, where_condition=where_claus, group_condition=having_claus), ) + ) # return filter(None, sqls) return list(filter(None, current_sqls)), list(filter(None, err_sqls)) @@ -207,25 +209,25 @@ class TDTestCase: def __test_current(self): - # tdSql.query("explain select c1 from ct1") - # tdSql.query("explain select 1 from ct2") - # tdSql.query("explain select cast(ceil(c6) as bigint) from ct4 group by c6") - # tdSql.query("explain select count(c3) from ct4 group by c7 having count(c3) > 0") - # tdSql.query("explain select ct2.c3 from ct4 join ct2 on ct4.ts=ct2.ts") + # tdSql.query("explain select c1 from {dbname}.ct1") + # tdSql.query("explain select 1 from {dbname}.ct2") + # tdSql.query("explain select cast(ceil(c6) as bigint) from {dbname}.ct4 group by c6") + # tdSql.query("explain select count(c3) from {dbname}.ct4 group by c7 having count(c3) > 0") + # tdSql.query("explain select ct2.c3 from {dbname}.ct4 join ct2 on ct4.ts=ct2.ts") # tdSql.query("explain select c1 from stb1 where c1 is not null and c1 in (0, 1, 2) or c1 between 2 and 100 ") self.leastsquares_check() - def __test_error(self): + def __test_error(self, dbname=DBNAME): tdLog.printNoPrefix("===step 0: err case, must return err") - tdSql.error( "select leastsquares(c1) from ct8" ) - tdSql.error( "select leastsquares(c1, 1) from ct1 " ) - tdSql.error( "select leastsquares(c1, null, 1) from ct1 " ) - tdSql.error( "select leastsquares(c1, 1, null) from ct1 " ) - tdSql.error( "select leastsquares(null, 1, 1) from ct1 " ) - tdSql.error( '''select leastsquares(['c1 + c1', 'c1 + c2', 'c1 + c3', 'c1 + c4', 'c1 + c5', 'c1 + c6', 'c1 + c7', 'c1 + c8', 'c1 + c9', 'c1 + c10']) - from ct1 + tdSql.error( f"select leastsquares(c1) from {dbname}.ct8" ) + tdSql.error( f"select leastsquares(c1, 1) from {dbname}.ct1 " ) + tdSql.error( f"select leastsquares(c1, null, 1) from {dbname}.ct1 " ) + tdSql.error( f"select leastsquares(c1, 1, null) from {dbname}.ct1 " ) + tdSql.error( f"select leastsquares(null, 1, 1) from {dbname}.ct1 " ) + tdSql.error( f'''select leastsquares(['c1 + c1', 'c1 + c2', 'c1 + c3', 'c1 + c4', 'c1 + c5', 'c1 + c6', 'c1 + c7', 'c1 + c8', 'c1 + c9', 'c1 + c10']) + from {dbname}.ct1 where ['c1 + c1', 'c1 + c2', 'c1 + c3', 'c1 + c4', 'c1 + c5', 'c1 + c6', 'c1 + c7', 'c1 + c8', 'c1 + c9', 'c1 + c10'] is not null group by ['c1 + c1', 'c1 + c2', 'c1 + c3', 'c1 + c4', 'c1 + c5', 'c1 + c6', 'c1 + c7', 'c1 + c8', 'c1 + c9', 'c1 + c10'] having ['c1 + c1', 'c1 + c2', 'c1 + c3', 'c1 + c4', 'c1 + c5', 'c1 + c6', 'c1 + c7', 'c1 + c8', 'c1 + c9', 'c1 + c10'] is not null ''' ) @@ -234,16 +236,16 @@ class TDTestCase: self.__test_error() self.__test_current() - def __create_tb(self): + def __create_tb(self, dbname=DBNAME): tdLog.printNoPrefix("==========step1:create table") - create_stb_sql = f'''create table stb1( + create_stb_sql = f'''create table {dbname}.stb1( ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint, {FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool, {BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp ) tags (t1 int) ''' - create_ntb_sql = f'''create table t1( + create_ntb_sql = f'''create table {dbname}.nt1( ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint, {FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool, {BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp @@ -253,30 +255,29 @@ class TDTestCase: tdSql.execute(create_ntb_sql) for i in range(4): - tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )') - { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2} + tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )') - def __insert_data(self, rows): + def __insert_data(self, rows, dbname=DBNAME): now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000) for i in range(rows): tdSql.execute( - f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" ) tdSql.execute( - f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" ) tdSql.execute( - f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )" ) tdSql.execute( - f'''insert into ct1 values + f'''insert into {dbname}.ct1 values ( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } ) ( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } ) ''' ) tdSql.execute( - f'''insert into ct4 values + f'''insert into {dbname}.ct4 values ( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -292,7 +293,7 @@ class TDTestCase: ) tdSql.execute( - f'''insert into ct2 values + f'''insert into {dbname}.ct2 values ( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -308,13 +309,13 @@ class TDTestCase: ) for i in range(rows): - insert_data = f'''insert into t1 values + insert_data = f'''insert into {dbname}.nt1 values ( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2}, "binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } ) ''' tdSql.execute(insert_data) tdSql.execute( - f'''insert into t1 values + f'''insert into {dbname}.nt1 values ( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -332,7 +333,7 @@ class TDTestCase: def run(self): - tdSql.prepare() + tdSql.prepare(DBNAME) tdLog.printNoPrefix("==========step1:create table") self.__create_tb() @@ -344,10 +345,9 @@ class TDTestCase: tdLog.printNoPrefix("==========step3:all check") self.all_test() - tdDnodes.stop(1) - tdDnodes.start(1) + tdSql.execute(f"flush database {DBNAME}") - tdSql.execute("use db") + tdSql.execute(f"use {DBNAME}") tdLog.printNoPrefix("==========step4:after wal, all check again ") self.all_test() diff --git a/tests/system-test/2-query/length.py b/tests/system-test/2-query/length.py index ed604c41ae..1761572245 100644 --- a/tests/system-test/2-query/length.py +++ b/tests/system-test/2-query/length.py @@ -19,6 +19,7 @@ TS_COL = "c10" UN_CHAR_COL = [INT_COL, BINT_COL, SINT_COL, TINT_COL, FLOAT_COL, DOUBLE_COL, BOOL_COL, ] CHAR_COL = [ BINARY_COL, NCHAR_COL, ] TS_TYPE_COL = [TS_COL] +DBNAME = "db" class TDTestCase: @@ -102,16 +103,16 @@ class TDTestCase: return sqls - def __test_current(self): + def __test_current(self, dbname=DBNAME): tdLog.printNoPrefix("==========current sql condition check , must return query ok==========") - tbname = ["ct1", "ct2", "ct4", "t1", "stb1"] + tbname = [f"{dbname}.ct1", f"{dbname}.ct2", f"{dbname}.ct4", f"{dbname}.nt1", f"{dbname}.stb1"] for tb in tbname: self.__length_current_check(tb) tdLog.printNoPrefix(f"==========current sql condition check in {tb} over==========") - def __test_error(self): + def __test_error(self, dbname=DBNAME): tdLog.printNoPrefix("==========err sql condition check , must return error==========") - tbname = ["ct1", "ct2", "ct4", "t1", "stb1"] + tbname = [f"{dbname}.ct1", f"{dbname}.ct2", f"{dbname}.ct4", f"{dbname}.nt1", f"{dbname}.stb1"] for tb in tbname: for errsql in self.__length_err_check(tb): @@ -124,17 +125,16 @@ class TDTestCase: self.__test_error() - def __create_tb(self): - tdSql.prepare() + def __create_tb(self, dbname=DBNAME): tdLog.printNoPrefix("==========step1:create table") - create_stb_sql = f'''create table stb1( + create_stb_sql = f'''create table {dbname}.stb1( ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint, {FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool, {BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp ) tags (t1 int) ''' - create_ntb_sql = f'''create table t1( + create_ntb_sql = f'''create table {dbname}.nt1( ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint, {FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool, {BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp @@ -144,29 +144,29 @@ class TDTestCase: tdSql.execute(create_ntb_sql) for i in range(4): - tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )') + tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )') - def __insert_data(self, rows): + def __insert_data(self, rows, dbname=DBNAME): now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000) for i in range(rows): tdSql.execute( - f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" ) tdSql.execute( - f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" ) tdSql.execute( - f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" + f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar{i}', { now_time + 1 * i } )" ) tdSql.execute( - f'''insert into ct1 values + f'''insert into {dbname}.ct1 values ( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', { now_time + 8 } ) ( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', { now_time + 9 } ) ''' ) tdSql.execute( - f'''insert into ct4 values + f'''insert into {dbname}.ct4 values ( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3888000000+ 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -182,7 +182,7 @@ class TDTestCase: ) tdSql.execute( - f'''insert into ct2 values + f'''insert into {dbname}.ct2 values ( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3888000000+ 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -198,13 +198,13 @@ class TDTestCase: ) for i in range(rows): - insert_data = f'''insert into t1 values + insert_data = f'''insert into {dbname}.nt1 values ( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2}, "binary_{i}", "nchar_{i}", { now_time - 1000 * i } ) ''' tdSql.execute(insert_data) tdSql.execute( - f'''insert into t1 values + f'''insert into {dbname}.nt1 values ( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) @@ -233,8 +233,7 @@ class TDTestCase: tdLog.printNoPrefix("==========step3:all check") self.all_test() - tdDnodes.stop(1) - tdDnodes.start(1) + tdSql.execute("flush database db") tdSql.execute("use db") diff --git a/tests/system-test/2-query/log.py b/tests/system-test/2-query/log.py index b8e0aaf52e..e304284bf9 100644 --- a/tests/system-test/2-query/log.py +++ b/tests/system-test/2-query/log.py @@ -10,48 +10,46 @@ from util.cases import * class TDTestCase: - updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 , - "jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143, - "wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143} + def init(self, conn, logSql): tdLog.debug(f"start to excute {__file__}") tdSql.init(conn.cursor()) - def prepare_datas(self): + def prepare_datas(self, dbname="db"): tdSql.execute( - '''create table stb1 + f'''create table {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int) ''' ) tdSql.execute( - ''' - create table t1 + f''' + create table {dbname}.t1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) ''' ) for i in range(4): - tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )') + tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )') for i in range(9): tdSql.execute( - f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" + f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" ) tdSql.execute( - f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" + f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )" ) - tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )") - tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") - tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )") - tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") + tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )") + tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") + tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )") + tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )") - tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") - tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") - tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") + tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ") tdSql.execute( - f'''insert into t1 values + f'''insert into {dbname}.t1 values ( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a ) ( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a ) @@ -185,68 +183,68 @@ class TDTestCase: else: tdLog.info("log value check pass , it work as expected ,sql is \"%s\" "%log_query ) - def test_errors(self): + def test_errors(self, dbname="db"): error_sql_lists = [ - "select log from t1", - # "select log(-+--+c1 ,2) from t1", - # "select +-log(c1,2) from t1", - # "select ++-log(c1,2) from t1", - # "select ++--log(c1,2) from t1", - # "select - -log(c1,2)*0 from t1", - # "select log(tbname+1,2) from t1 ", - "select log(123--123,2)==1 from t1", - "select log(c1,2) as 'd1' from t1", - "select log(c1 ,c2 ,2) from t1", - "select log(c1 ,NULL ,2) from t1", - "select log(, 2) from t1;", - "select log(log(c1, 2) ab from t1)", - "select log(c1 ,2 ) as int from t1", - "select log from stb1", - # "select log(-+--+c1) from stb1", - # "select +-log(c1) from stb1", - # "select ++-log(c1) from stb1", - # "select ++--log(c1) from stb1", - # "select - -log(c1)*0 from stb1", - # "select log(tbname+1) from stb1 ", - "select log(123--123 ,2)==1 from stb1", - "select log(c1 ,2) as 'd1' from stb1", - "select log(c1 ,c2 ,2 ) from stb1", - "select log(c1 ,NULL,2) from stb1", - "select log(,) from stb1;", - "select log(log(c1 , 2) ab from stb1)", - "select log(c1 , 2) as int from stb1" + f"select log from {dbname}.t1", + # f"select log(-+--+c1 ,2) from {dbname}.t1", + # f"select +-log(c1,2) from {dbname}.t1", + # f"select ++-log(c1,2) from {dbname}.t1", + # f"select ++--log(c1,2) from {dbname}.t1", + # f"select - -log(c1,2)*0 from {dbname}.t1", + # f"select log(tbname+1,2) from {dbname}.t1 ", + f"select log(123--123,2)==1 from {dbname}.t1", + f"select log(c1,2) as 'd1' from {dbname}.t1", + f"select log(c1 ,c2 ,2) from {dbname}.t1", + f"select log(c1 ,NULL ,2) from {dbname}.t1", + f"select log(, 2) from {dbname}.t1;", + f"select log(log(c1, 2) ab from {dbname}.t1)", + f"select log(c1 ,2 ) as int from {dbname}.t1", + f"select log from {dbname}.stb1", + # f"select log(-+--+c1) from {dbname}.stb1", + # f"select +-log(c1) from {dbname}.stb1", + # f"select ++-log(c1) from {dbname}.stb1", + # f"select ++--log(c1) from {dbname}.stb1", + # f"select - -log(c1)*0 from {dbname}.stb1", + # f"select log(tbname+1) from {dbname}.stb1 ", + f"select log(123--123 ,2)==1 from {dbname}.stb1", + f"select log(c1 ,2) as 'd1' from {dbname}.stb1", + f"select log(c1 ,c2 ,2 ) from {dbname}.stb1", + f"select log(c1 ,NULL,2) from {dbname}.stb1", + f"select log(,) from {dbname}.stb1;", + f"select log(log(c1 , 2) ab from {dbname}.stb1)", + f"select log(c1 , 2) as int from {dbname}.stb1" ] for error_sql in error_sql_lists: tdSql.error(error_sql) - def support_types(self): + def support_types(self, dbname="db"): type_error_sql_lists = [ - "select log(ts ,2 ) from t1" , - "select log(c7,c2 ) from t1", - "select log(c8,c1 ) from t1", - "select log(c9,c2 ) from t1", - "select log(ts,c7 ) from ct1" , - "select log(c7,c9 ) from ct1", - "select log(c8,c2 ) from ct1", - "select log(c9,c1 ) from ct1", - "select log(ts,2 ) from ct3" , - "select log(c7,2 ) from ct3", - "select log(c8,2 ) from ct3", - "select log(c9,2 ) from ct3", - "select log(ts,2 ) from ct4" , - "select log(c7,2 ) from ct4", - "select log(c8,2 ) from ct4", - "select log(c9,2 ) from ct4", - "select log(ts,2 ) from stb1" , - "select log(c7,2 ) from stb1", - "select log(c8,2 ) from stb1", - "select log(c9,2 ) from stb1" , + f"select log(ts ,2 ) from {dbname}.t1" , + f"select log(c7,c2 ) from {dbname}.t1", + f"select log(c8,c1 ) from {dbname}.t1", + f"select log(c9,c2 ) from {dbname}.t1", + f"select log(ts,c7 ) from {dbname}.ct1" , + f"select log(c7,c9 ) from {dbname}.ct1", + f"select log(c8,c2 ) from {dbname}.ct1", + f"select log(c9,c1 ) from {dbname}.ct1", + f"select log(ts,2 ) from {dbname}.ct3" , + f"select log(c7,2 ) from {dbname}.ct3", + f"select log(c8,2 ) from {dbname}.ct3", + f"select log(c9,2 ) from {dbname}.ct3", + f"select log(ts,2 ) from {dbname}.ct4" , + f"select log(c7,2 ) from {dbname}.ct4", + f"select log(c8,2 ) from {dbname}.ct4", + f"select log(c9,2 ) from {dbname}.ct4", + f"select log(ts,2 ) from {dbname}.stb1" , + f"select log(c7,2 ) from {dbname}.stb1", + f"select log(c8,2 ) from {dbname}.stb1", + f"select log(c9,2 ) from {dbname}.stb1" , - "select log(ts,2 ) from stbbb1" , - "select log(c7,2 ) from stbbb1", + f"select log(ts,2 ) from {dbname}.stbbb1" , + f"select log(c7,2 ) from {dbname}.stbbb1", - "select log(ts,2 ) from tbname", - "select log(c9,2 ) from tbname" + f"select log(ts,2 ) from {dbname}.tbname", + f"select log(c9,2 ) from {dbname}.tbname" ] @@ -255,98 +253,88 @@ class TDTestCase: type_sql_lists = [ - "select log(c1,2 ) from t1", - "select log(c2,2 ) from t1", - "select log(c3,2 ) from t1", - "select log(c4,2 ) from t1", - "select log(c5,2 ) from t1", - "select log(c6,2 ) from t1", + f"select log(c1,2 ) from {dbname}.t1", + f"select log(c2,2 ) from {dbname}.t1", + f"select log(c3,2 ) from {dbname}.t1", + f"select log(c4,2 ) from {dbname}.t1", + f"select log(c5,2 ) from {dbname}.t1", + f"select log(c6,2 ) from {dbname}.t1", - "select log(c1,2 ) from ct1", - "select log(c2,2 ) from ct1", - "select log(c3,2 ) from ct1", - "select log(c4,2 ) from ct1", - "select log(c5,2 ) from ct1", - "select log(c6,2 ) from ct1", + f"select log(c1,2 ) from {dbname}.ct1", + f"select log(c2,2 ) from {dbname}.ct1", + f"select log(c3,2 ) from {dbname}.ct1", + f"select log(c4,2 ) from {dbname}.ct1", + f"select log(c5,2 ) from {dbname}.ct1", + f"select log(c6,2 ) from {dbname}.ct1", - "select log(c1,2 ) from ct3", - "select log(c2,2 ) from ct3", - "select log(c3,2 ) from ct3", - "select log(c4,2 ) from ct3", - "select log(c5,2 ) from ct3", - "select log(c6,2 ) from ct3", + f"select log(c1,2 ) from {dbname}.ct3", + f"select log(c2,2 ) from {dbname}.ct3", + f"select log(c3,2 ) from {dbname}.ct3", + f"select log(c4,2 ) from {dbname}.ct3", + f"select log(c5,2 ) from {dbname}.ct3", + f"select log(c6,2 ) from {dbname}.ct3", - "select log(c1,2 ) from stb1", - "select log(c2,2 ) from stb1", - "select log(c3,2 ) from stb1", - "select log(c4,2 ) from stb1", - "select log(c5,2 ) from stb1", - "select log(c6,2 ) from stb1", + f"select log(c1,2 ) from {dbname}.stb1", + f"select log(c2,2 ) from {dbname}.stb1", + f"select log(c3,2 ) from {dbname}.stb1", + f"select log(c4,2 ) from {dbname}.stb1", + f"select log(c5,2 ) from {dbname}.stb1", + f"select log(c6,2 ) from {dbname}.stb1", - "select log(c6,2) as alisb from stb1", - "select log(c6,2) alisb from stb1", + f"select log(c6,2) as alisb from {dbname}.stb1", + f"select log(c6,2) alisb from {dbname}.stb1", ] for type_sql in type_sql_lists: tdSql.query(type_sql) - def basic_log_function(self): + def basic_log_function(self, dbname="db"): # basic query - tdSql.query("select c1 from ct3") + tdSql.query(f"select c1 from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select c1 from t1") + tdSql.query(f"select c1 from {dbname}.t1") tdSql.checkRows(12) - tdSql.query("select c1 from stb1") + tdSql.query(f"select c1 from {dbname}.stb1") tdSql.checkRows(25) # used for empty table , ct3 is empty - tdSql.query("select log(c1 ,2) from ct3") + tdSql.query(f"select log(c1 ,2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select log(c2 ,2) from ct3") + tdSql.query(f"select log(c2 ,2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select log(c3 ,2) from ct3") + tdSql.query(f"select log(c3 ,2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select log(c4 ,2) from ct3") + tdSql.query(f"select log(c4 ,2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select log(c5 ,2) from ct3") + tdSql.query(f"select log(c5 ,2) from {dbname}.ct3") tdSql.checkRows(0) - tdSql.query("select log(c6 ,2) from ct3") + tdSql.query(f"select log(c6 ,2) from {dbname}.ct3") tdSql.checkRows(0) # # used for regular table - tdSql.query("select log(c1 ,2) from t1") + tdSql.query(f"select log(c1 ,2) from {dbname}.t1") tdSql.checkData(0, 0, None) tdSql.checkData(1 , 0, 0.000000000) tdSql.checkData(3 , 0, 1.584962501) tdSql.checkData(5 , 0, None) - tdSql.query("select log(c1) from t1") + tdSql.query(f"select log(c1) from {dbname}.t1") tdSql.checkData(0, 0, None) tdSql.checkData(1 , 0, 0.000000000) tdSql.checkData(2 , 0, 0.693147181) tdSql.checkData(3 , 0, 1.098612289) tdSql.checkData(4 , 0, 1.386294361) - tdSql.query("select c1, c2, c3 , c4, c5 from t1") - tdSql.checkData(1, 4, 1.11000) - tdSql.checkData(3, 3, 33) - tdSql.checkData(5, 4, None) - - tdSql.query("select ts,c1, c2, c3 , c4, c5 from t1") - tdSql.checkData(1, 5, 1.11000) - tdSql.checkData(3, 4, 33) - tdSql.checkData(5, 5, None) - - self.check_result_auto_log( "select c1, c2, c3 , c4, c5 from t1", "select log(c1), log(c2) ,log(c3), log(c4), log(c5) from t1") - self.check_result_auto_log2( "select c1, c2, c3 , c4, c5 from t1", "select log(c1 ,2), log(c2 ,2) ,log(c3, 2), log(c4 ,2), log(c5 ,2) from t1") - self.check_result_auto_log1( "select c1, c2, c3 , c4, c5 from t1", "select log(c1 ,1), log(c2 ,1) ,log(c3, 1), log(c4 ,1), log(c5 ,1) from t1") - self.check_result_auto_log__10( "select c1, c2, c3 , c4, c5 from t1", "select log(c1 ,-10), log(c2 ,-10) ,log(c3, -10), log(c4 ,-10), log(c5 ,-10) from t1") + self.check_result_auto_log( f"select c1, c2, c3 , c4, c5 from {dbname}.t1", f"select log(c1), log(c2) ,log(c3), log(c4), log(c5) from {dbname}.t1") + self.check_result_auto_log2( f"select c1, c2, c3 , c4, c5 from {dbname}.t1", f"select log(c1 ,2), log(c2 ,2) ,log(c3, 2), log(c4 ,2), log(c5 ,2) from {dbname}.t1") + self.check_result_auto_log__10( f"select c1, c2, c3 , c4, c5 from {dbname}.t1", f"select log(c1 ,1), log(c2 ,1) ,log(c3, 1), log(c4 ,1), log(c5 ,1) from {dbname}.t1") + self.check_result_auto_log__10( f"select c1, c2, c3 , c4, c5 from {dbname}.t1", f"select log(c1 ,-10), log(c2 ,-10) ,log(c3, -10), log(c4 ,-10), log(c5 ,-10) from {dbname}.t1") # used for sub table - tdSql.query("select c1 ,log(c1 ,3) from ct1") + tdSql.query(f"select c1 ,log(c1 ,3) from {dbname}.ct1") tdSql.checkData(0, 1, 1.892789261) tdSql.checkData(1 , 1, 1.771243749) tdSql.checkData(3 , 1, 1.464973521) @@ -354,19 +342,19 @@ class TDTestCase: # test bug fix for log(c1,c2) - tdSql.query("select c1, c2 ,log(c1,c2) from ct1") + tdSql.query(f"select c1, c2 ,log(c1,c2) from {dbname}.ct1") tdSql.checkData(0 , 2, 0.182485070) tdSql.checkData(1 , 2, 0.172791608) tdSql.checkData(2 , 2, 0.161311499) tdSql.checkData(3 , 2, 0.147315235) tdSql.checkData(4 , 2, None) - self.check_result_auto_log( "select c1, c2, c3 , c4, c5 from ct1", "select log(c1), log(c2) ,log(c3), log(c4), log(c5) from ct1") - self.check_result_auto_log2( "select c1, c2, c3 , c4, c5 from ct1", "select log(c1,2), log(c2,2) ,log(c3,2), log(c4,2), log(c5,2) from ct1") - self.check_result_auto_log__10( "select c1, c2, c3 , c4, c5 from ct1", "select log(c1,-10), log(c2,-10) ,log(c3,-10), log(c4,-10), log(c5,-10) from ct1") + self.check_result_auto_log( f"select c1, c2, c3 , c4, c5 from {dbname}.ct1", f"select log(c1), log(c2) ,log(c3), log(c4), log(c5) from {dbname}.ct1") + self.check_result_auto_log2( f"select c1, c2, c3 , c4, c5 from {dbname}.ct1", f"select log(c1,2), log(c2,2) ,log(c3,2), log(c4,2), log(c5,2) from {dbname}.ct1") + self.check_result_auto_log__10( f"select c1, c2, c3 , c4, c5 from {dbname}.ct1", f"select log(c1,-10), log(c2,-10) ,log(c3,-10), log(c4,-10), log(c5,-10) from {dbname}.ct1") # nest query for log functions - tdSql.query("select c1 , log(c1,3) ,log(log(c1,3),3) , log(log(log(c1,3),3),3) from ct1;") + tdSql.query(f"select c1 , log(c1,3) ,log(log(c1,3),3) , log(log(log(c1,3),3),3) from {dbname}.ct1;") tdSql.checkData(0 , 0 , 8) tdSql.checkData(0 , 1 , 1.892789261) tdSql.checkData(0 , 2 , 0.580779541) @@ -384,36 +372,36 @@ class TDTestCase: # # used for stable table - tdSql.query("select log(c1, 2) from stb1") + tdSql.query(f"select log(c1, 2) from {dbname}.stb1") tdSql.checkRows(25) # used for not exists table - tdSql.error("select log(c1, 2) from stbbb1") - tdSql.error("select log(c1, 2) from tbname") - tdSql.error("select log(c1, 2) from ct5") + tdSql.error(f"select log(c1, 2) from {dbname}.stbbb1") + tdSql.error(f"select log(c1, 2) from {dbname}tbname") + tdSql.error(f"select log(c1, 2) from {dbname}.ct5") # mix with common col - tdSql.query("select c1, log(c1 ,2) from ct1") + tdSql.query(f"select c1, log(c1 ,2) from {dbname}.ct1") tdSql.checkData(0 , 0 ,8) tdSql.checkData(0 , 1 ,3.000000000) tdSql.checkData(4 , 0 ,0) tdSql.checkData(4 , 1 ,None) - tdSql.query("select c1, log(c1,2) from ct4") + tdSql.query(f"select c1, log(c1,2) from {dbname}.ct4") tdSql.checkData(0 , 0 , None) tdSql.checkData(0 , 1 ,None) tdSql.checkData(4 , 0 ,5) tdSql.checkData(4 , 1 ,2.321928095) tdSql.checkData(5 , 0 ,None) tdSql.checkData(5 , 1 ,None) - tdSql.query("select c1, log(c1 ,2 ) from ct4 ") + tdSql.query(f"select c1, log(c1 ,2 ) from {dbname}.ct4 ") tdSql.checkData(0 , 0 ,None) tdSql.checkData(0 , 1 ,None) tdSql.checkData(4 , 0 ,5) tdSql.checkData(4 , 1 ,2.321928095) # mix with common functions - tdSql.query("select c1, log(c1 ,2),c5, log(c5 ,2) from ct4 ") + tdSql.query(f"select c1, log(c1 ,2),c5, log(c5 ,2) from {dbname}.ct4 ") tdSql.checkData(0 , 0 ,None) tdSql.checkData(0 , 1 ,None) tdSql.checkData(0 , 2 ,None) @@ -424,34 +412,34 @@ class TDTestCase: tdSql.checkData(3 , 2 ,6.66000) tdSql.checkData(3 , 3 ,2.735522144) - tdSql.query("select c1, log(c1,1),c5, floor(c5 ) from stb1 ") + tdSql.query(f"select c1, log(c1,1),c5, floor(c5 ) from {dbname}.stb1 ") # # mix with agg functions , not support - tdSql.error("select c1, log(c1 ,2),c5, count(c5) from stb1 ") - tdSql.error("select c1, log(c1 ,2),c5, count(c5) from ct1 ") - tdSql.error("select log(c1 ,2), count(c5) from stb1 ") - tdSql.error("select log(c1 ,2), count(c5) from ct1 ") - tdSql.error("select c1, count(c5) from ct1 ") - tdSql.error("select c1, count(c5) from stb1 ") + tdSql.error(f"select c1, log(c1 ,2),c5, count(c5) from {dbname}.stb1 ") + tdSql.error(f"select c1, log(c1 ,2),c5, count(c5) from {dbname}.ct1 ") + tdSql.error(f"select log(c1 ,2), count(c5) from {dbname}.stb1 ") + tdSql.error(f"select log(c1 ,2), count(c5) from {dbname}.ct1 ") + tdSql.error(f"select c1, count(c5) from {dbname}.ct1 ") + tdSql.error(f"select c1, count(c5) from {dbname}.stb1 ") # agg functions mix with agg functions - tdSql.query("select max(c5), count(c5) from stb1") - tdSql.query("select max(c5), count(c5) from ct1") + tdSql.query(f"select max(c5), count(c5) from {dbname}.stb1") + tdSql.query(f"select max(c5), count(c5) from {dbname}.ct1") # bug fix for count - tdSql.query("select count(c1) from ct4 ") + tdSql.query(f"select count(c1) from {dbname}.ct4 ") tdSql.checkData(0,0,9) - tdSql.query("select count(*) from ct4 ") + tdSql.query(f"select count(*) from {dbname}.ct4 ") tdSql.checkData(0,0,12) - tdSql.query("select count(c1) from stb1 ") + tdSql.query(f"select count(c1) from {dbname}.stb1 ") tdSql.checkData(0,0,22) - tdSql.query("select count(*) from stb1 ") + tdSql.query(f"select count(*) from {dbname}.stb1 ") tdSql.checkData(0,0,25) # # bug fix for compute - tdSql.query("select c1, log(c1 ,2) -0 ,log(c1-4 ,2)-0 from ct4 ") + tdSql.query(f"select c1, log(c1 ,2) -0 ,log(c1-4 ,2)-0 from {dbname}.ct4 ") tdSql.checkData(0, 0, None) tdSql.checkData(0, 1, None) tdSql.checkData(0, 2, None) @@ -459,7 +447,7 @@ class TDTestCase: tdSql.checkData(1, 1, 3.000000000) tdSql.checkData(1, 2, 2.000000000) - tdSql.query(" select c1, log(c1 ,2) -0 ,log(c1-0.1 ,2)-0.1 from ct4") + tdSql.query(f"select c1, log(c1 ,2) -0 ,log(c1-0.1 ,2)-0.1 from {dbname}.ct4") tdSql.checkData(0, 0, None) tdSql.checkData(0, 1, None) tdSql.checkData(0, 2, None) @@ -467,88 +455,87 @@ class TDTestCase: tdSql.checkData(1, 1, 3.000000000) tdSql.checkData(1, 2, 2.881852653) - tdSql.query("select c1, log(c1, -10), c2, log(c2, -10), c3, log(c3, -10) from ct1") + tdSql.query(f"select c1, log(c1, -10), c2, log(c2, -10), c3, log(c3, -10) from {dbname}.ct1") - def test_big_number(self): + def test_big_number(self, dbname="db"): - tdSql.query("select c1, log(c1, 100000000) from ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 100000000) from {dbname}.ct1") # bigint to double data overflow tdSql.checkData(0, 1, 0.112886248) tdSql.checkData(1, 1, 0.105637255) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(c1, 10000000000000) from ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 10000000000000) from {dbname}.ct1") # bigint to double data overflow tdSql.checkData(0, 1, 0.069468461) tdSql.checkData(1, 1, 0.065007542) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(c1, 10000000000000000000000000) from ct1") # bigint to double data overflow - tdSql.query("select c1, log(c1, 10000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value + tdSql.query(f"select c1, log(c1, 10000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 10000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value tdSql.checkData(0, 1, 0.036123599) tdSql.checkData(1, 1, 0.033803922) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(c1, 10000000000000000000000000000000000) from ct1") # bigint to double data overflow - tdSql.query("select c1, log(c1, 10000000000000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value + tdSql.query(f"select c1, log(c1, 10000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 10000000000000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value tdSql.checkData(0, 1, 0.026561470) tdSql.checkData(1, 1, 0.024855825) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(c1, 10000000000000000000000000000000000000000) from ct1") # bigint to double data overflow - tdSql.query("select c1, log(c1, 10000000000000000000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value + tdSql.query(f"select c1, log(c1, 10000000000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 10000000000000000000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value tdSql.checkData(0, 1, 0.022577250) tdSql.checkData(1, 1, 0.021127451) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(c1, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) from ct1") # bigint to double data overflow + tdSql.query(f"select c1, log(c1, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow - def log_base_test(self): + def log_base_test(self, dbname="db"): # base is an regular number ,int or double - tdSql.query("select c1, log(c1, 2) from ct1") + tdSql.query(f"select c1, log(c1, 2) from {dbname}.ct1") tdSql.checkData(0, 1,3.000000000) - tdSql.query("select c1, log(c1, 2.0) from ct1") + tdSql.query(f"select c1, log(c1, 2.0) from {dbname}.ct1") tdSql.checkData(0, 1, 3.000000000) - tdSql.query("select c1, log(1, 2.0) from ct1") + tdSql.query(f"select c1, log(1, 2.0) from {dbname}.ct1") tdSql.checkData(0, 1, 0.000000000) tdSql.checkRows(13) # # bug for compute in functions - # tdSql.query("select c1, abs(1/0) from ct1") + # tdSql.query(f"select c1, abs(1/0) from {dbname}.ct1") # tdSql.checkData(0, 0, 8) # tdSql.checkData(0, 1, 1) - tdSql.query("select c1, log(1, 2.0) from ct1") + tdSql.query(f"select c1, log(1, 2.0) from {dbname}.ct1") tdSql.checkData(0, 1, 0.000000000) tdSql.checkRows(13) # two cols start log(x,y) - tdSql.query("select c1,c2, log(c1,c2) from ct1") + tdSql.query(f"select c1,c2, log(c1,c2) from {dbname}.ct1") tdSql.checkData(0, 2, 0.182485070) tdSql.checkData(1, 2, 0.172791608) tdSql.checkData(4, 2, None) - tdSql.query("select c1,c2, log(c2,c1) from ct1") + tdSql.query(f"select c1,c2, log(c2,c1) from {dbname}.ct1") tdSql.checkData(0, 2, 5.479900349) tdSql.checkData(1, 2, 5.787318105) tdSql.checkData(4, 2, None) - tdSql.query("select c1, log(2.0 , c1) from ct1") + tdSql.query(f"select c1, log(2.0 , c1) from {dbname}.ct1") tdSql.checkData(0, 1, 0.333333333) tdSql.checkData(1, 1, 0.356207187) tdSql.checkData(4, 1, None) - tdSql.query("select c1, log(2.0 , ceil(abs(c1))) from ct1") + tdSql.query(f"select c1, log(2.0 , ceil(abs(c1))) from {dbname}.ct1") tdSql.checkData(0, 1, 0.333333333) tdSql.checkData(1, 1, 0.356207187) tdSql.checkData(4, 1, None) - def abs_func_filter(self): - tdSql.execute("use db") - tdSql.query("select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from ct4 where c1>5 ") + def abs_func_filter(self, dbname="db"): + tdSql.query(f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from {dbname}.ct4 where c1>5 ") tdSql.checkRows(3) tdSql.checkData(0,0,8) tdSql.checkData(0,1,8.000000000) @@ -556,7 +543,7 @@ class TDTestCase: tdSql.checkData(0,3,7.900000000) tdSql.checkData(0,4,3.000000000) - tdSql.query("select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from ct4 where c1=5 ") + tdSql.query(f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from {dbname}.ct4 where c1=5 ") tdSql.checkRows(1) tdSql.checkData(0,0,5) tdSql.checkData(0,1,5.000000000) @@ -564,15 +551,7 @@ class TDTestCase: tdSql.checkData(0,3,4.900000000) tdSql.checkData(0,4,2.000000000) - tdSql.query("select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from ct4 where c1=5 ") - tdSql.checkRows(1) - tdSql.checkData(0,0,5) - tdSql.checkData(0,1,5.000000000) - tdSql.checkData(0,2,5.000000000) - tdSql.checkData(0,3,4.900000000) - tdSql.checkData(0,4,2.000000000) - - tdSql.query("select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from ct4 where c1>log(c1,2) limit 1 ") + tdSql.query(f"select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from {dbname}.ct4 where c1>log(c1,2) limit 1 ") tdSql.checkRows(1) tdSql.checkData(0,0,8) tdSql.checkData(0,1,88888) @@ -581,46 +560,43 @@ class TDTestCase: tdSql.checkData(0,4,7.900000000) tdSql.checkData(0,5,3.000000000) - def log_Arithmetic(self): - pass - def check_boundary_values(self): + def check_boundary_values(self, dbname="bound_test"): - tdSql.execute("drop database if exists bound_test") - tdSql.execute("create database if not exists bound_test") + tdSql.execute(f"drop database if exists {dbname}") + tdSql.execute(f"create database if not exists {dbname}") time.sleep(3) - tdSql.execute("use bound_test") tdSql.execute( - "create table stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);" + f"create table {dbname}.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);" ) - tdSql.execute(f'create table sub1_bound using stb_bound tags ( 1 )') + tdSql.execute(f'create table {dbname}.sub1_bound using {dbname}.stb_bound tags ( 1 )') tdSql.execute( - f"insert into sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.execute( - f"insert into sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) tdSql.error( - f"insert into sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" + f"insert into {dbname}.sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )" ) - self.check_result_auto_log( "select c1, c2, c3 , c4, c5 ,c6 from sub1_bound ", "select log(c1), log(c2) ,log(c3), log(c4), log(c5) ,log(c6) from sub1_bound") - self.check_result_auto_log2( "select c1, c2, c3 , c4, c5 ,c6 from sub1_bound ", "select log(c1,2), log(c2,2) ,log(c3,2), log(c4,2), log(c5,2) ,log(c6,2) from sub1_bound") - self.check_result_auto_log__10( "select c1, c2, c3 , c4, c5 ,c6 from sub1_bound ", "select log(c1,-10), log(c2,-10) ,log(c3,-10), log(c4,-10), log(c5,-10) ,log(c6,-10) from sub1_bound") + self.check_result_auto_log( f"select c1, c2, c3 , c4, c5 ,c6 from {dbname}.sub1_bound ", f"select log(c1), log(c2) ,log(c3), log(c4), log(c5) ,log(c6) from {dbname}.sub1_bound") + self.check_result_auto_log2( f"select c1, c2, c3 , c4, c5 ,c6 from {dbname}.sub1_bound ", f"select log(c1,2), log(c2,2) ,log(c3,2), log(c4,2), log(c5,2) ,log(c6,2) from {dbname}.sub1_bound") + self.check_result_auto_log__10( f"select c1, c2, c3 , c4, c5 ,c6 from {dbname}.sub1_bound ", f"select log(c1,-10), log(c2,-10) ,log(c3,-10), log(c4,-10), log(c5,-10) ,log(c6,-10) from {dbname}.sub1_bound") - self.check_result_auto_log2( "select c1, c2, c3 , c3, c2 ,c1 from sub1_bound ", "select log(c1,2), log(c2,2) ,log(c3,2), log(c3,2), log(c2,2) ,log(c1,2) from sub1_bound") - self.check_result_auto_log( "select c1, c2, c3 , c3, c2 ,c1 from sub1_bound ", "select log(c1), log(c2) ,log(c3), log(c3), log(c2) ,log(c1) from sub1_bound") + self.check_result_auto_log2( f"select c1, c2, c3 , c3, c2 ,c1 from {dbname}.sub1_bound ", f"select log(c1,2), log(c2,2) ,log(c3,2), log(c3,2), log(c2,2) ,log(c1,2) from {dbname}.sub1_bound") + self.check_result_auto_log( f"select c1, c2, c3 , c3, c2 ,c1 from {dbname}.sub1_bound ", f"select log(c1), log(c2) ,log(c3), log(c3), log(c2) ,log(c1) from {dbname}.sub1_bound") - self.check_result_auto_log2("select abs(abs(abs(abs(abs(abs(abs(abs(abs(c1))))))))) nest_col_func from sub1_bound" , "select log(abs(c1) ,2) from sub1_bound" ) + self.check_result_auto_log2(f"select abs(abs(abs(abs(abs(abs(abs(abs(abs(c1))))))))) nest_col_func from {dbname}.sub1_bound" , f"select log(abs(c1) ,2) from {dbname}.sub1_bound" ) # check basic elem for table per row - tdSql.query("select log(abs(c1),2) ,log(abs(c2),2) , log(abs(c3),2) , log(abs(c4),2), log(abs(c5),2), log(abs(c6),2) from sub1_bound ") + tdSql.query(f"select log(abs(c1),2) ,log(abs(c2),2) , log(abs(c3),2) , log(abs(c4),2), log(abs(c5),2), log(abs(c6),2) from {dbname}.sub1_bound ") tdSql.checkData(0,0,math.log(2147483647,2)) tdSql.checkData(0,1,math.log(9223372036854775807 ,2)) tdSql.checkData(0,2,math.log(32767,2)) @@ -641,7 +617,7 @@ class TDTestCase: tdSql.checkData(3,5,math.log(169999999999999993883079578865998174333346074304075874502773119193537729178160565864330091787584707988572262467983188919169916105593357174268369962062473635296474636515660464935663040684957844303524367815028553272712298986386310828644513212353921123253311675499856875650512437415429217994623324794855339589632.000000000,2)) # check basic elem for table per row - tdSql.query("select log(abs(c1)) ,log(abs(c2)) , log(abs(c3)) , log(abs(c4)), log(abs(c5)), log(abs(c6)) from sub1_bound ") + tdSql.query(f"select log(abs(c1)) ,log(abs(c2)) , log(abs(c3)) , log(abs(c4)), log(abs(c5)), log(abs(c6)) from {dbname}.sub1_bound ") tdSql.checkData(0,0,math.log(2147483647)) tdSql.checkData(0,1,math.log(9223372036854775807)) tdSql.checkData(0,2,math.log(32767)) @@ -661,28 +637,25 @@ class TDTestCase: tdSql.checkData(3,4,math.log(339999995214436424907732413799364296704.00000)) tdSql.checkData(3,5,math.log(169999999999999993883079578865998174333346074304075874502773119193537729178160565864330091787584707988572262467983188919169916105593357174268369962062473635296474636515660464935663040684957844303524367815028553272712298986386310828644513212353921123253311675499856875650512437415429217994623324794855339589632.000000000)) - - # check + - * / in functions - tdSql.query("select log(abs(c1+1) ,2) ,log(abs(c2),2) , log(abs(c3*1),2) , log(abs(c4/2),2), log(abs(c5) ,2)/2, log(abs(c6) ,2) from sub1_bound ") + tdSql.query(f"select log(abs(c1+1) ,2) ,log(abs(c2),2) , log(abs(c3*1),2) , log(abs(c4/2),2), log(abs(c5) ,2)/2, log(abs(c6) ,2) from {dbname}.sub1_bound ") tdSql.checkData(0,0,math.log(2147483648.000000000,2)) tdSql.checkData(0,1,math.log(9223372036854775807,2)) tdSql.checkData(0,2,math.log(32767.000000000,2)) tdSql.checkData(0,3,math.log(63.500000000,2)) tdSql.checkData(0,4,63.999401166) - def support_super_table_test(self): - tdSql.execute(" use db ") - self.check_result_auto_log2( " select c5 from stb1 order by ts " , "select log(c5,2) from stb1 order by ts" ) - self.check_result_auto_log2( " select c5 from stb1 order by tbname " , "select log(c5,2) from stb1 order by tbname" ) - self.check_result_auto_log2( " select c5 from stb1 where c1 > 0 order by tbname " , "select log(c5,2) from stb1 where c1 > 0 order by tbname" ) - self.check_result_auto_log2( " select c5 from stb1 where c1 > 0 order by tbname " , "select log(c5,2) from stb1 where c1 > 0 order by tbname" ) + def support_super_table_test(self, dbname="db"): - self.check_result_auto_log2( " select t1,c5 from stb1 order by ts " , "select log(t1,2), log(c5,2) from stb1 order by ts" ) - self.check_result_auto_log2( " select t1,c5 from stb1 order by tbname " , "select log(t1,2) ,log(c5,2) from stb1 order by tbname" ) - self.check_result_auto_log2( " select t1,c5 from stb1 where c1 > 0 order by tbname " , "select log(t1,2) ,log(c5,2) from stb1 where c1 > 0 order by tbname" ) - self.check_result_auto_log2( " select t1,c5 from stb1 where c1 > 0 order by tbname " , "select log(t1,2) , log(c5,2) from stb1 where c1 > 0 order by tbname" ) - pass + self.check_result_auto_log2( f"select c5 from {dbname}.stb1 order by ts " , f"select log(c5,2) from {dbname}.stb1 order by ts" ) + self.check_result_auto_log2( f"select c5 from {dbname}.stb1 order by tbname " , f"select log(c5,2) from {dbname}.stb1 order by tbname" ) + self.check_result_auto_log2( f"select c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select log(c5,2) from {dbname}.stb1 where c1 > 0 order by tbname" ) + self.check_result_auto_log2( f"select c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select log(c5,2) from {dbname}.stb1 where c1 > 0 order by tbname" ) + + self.check_result_auto_log2( f"select t1,c5 from {dbname}.stb1 order by ts " , f"select log(t1,2), log(c5,2) from {dbname}.stb1 order by ts" ) + self.check_result_auto_log2( f"select t1,c5 from {dbname}.stb1 order by tbname " , f"select log(t1,2) ,log(c5,2) from {dbname}.stb1 order by tbname" ) + self.check_result_auto_log2( f"select t1,c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select log(t1,2) ,log(c5,2) from {dbname}.stb1 where c1 > 0 order by tbname" ) + self.check_result_auto_log2( f"select t1,c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select log(t1,2) , log(c5,2) from {dbname}.stb1 where c1 > 0 order by tbname" ) def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring tdSql.prepare() diff --git a/tests/system-test/fulltest.sh b/tests/system-test/fulltest.sh index 4280a5c3dc..bb4e5d35d2 100755 --- a/tests/system-test/fulltest.sh +++ b/tests/system-test/fulltest.sh @@ -118,8 +118,12 @@ python3 ./test.py -f 2-query/join.py python3 ./test.py -f 2-query/join.py -R python3 ./test.py -f 2-query/last_row.py python3 ./test.py -f 2-query/last_row.py -R - - +python3 ./test.py -f 2-query/last.py +python3 ./test.py -f 2-query/last.py -R +python3 ./test.py -f 2-query/leastsquares.py +python3 ./test.py -f 2-query/leastsquares.py -R +python3 ./test.py -f 2-query/length.py +python3 ./test.py -f 2-query/length.py -R python3 ./test.py -f 1-insert/update_data.py @@ -128,7 +132,6 @@ 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/join2.py @@ -137,7 +140,6 @@ 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/leastsquares.py python3 ./test.py -f 2-query/timezone.py @@ -145,7 +147,6 @@ 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/To_iso8601.py python3 ./test.py -f 2-query/To_unixtimestamp.py python3 ./test.py -f 2-query/timetruncate.py diff --git a/tests/system-test/test.py b/tests/system-test/test.py index 5dc6139410..2f482e4277 100644 --- a/tests/system-test/test.py +++ b/tests/system-test/test.py @@ -194,7 +194,7 @@ if __name__ == "__main__": processID = subprocess.check_output(psCmd, shell=True) for port in range(6030, 6041): - usePortPID = "lsof -i tcp:%d | grep LISTEn | awk '{print $2}'" % port + usePortPID = "lsof -i tcp:%d | grep LISTEN | awk '{print $2}'" % port processID = subprocess.check_output(usePortPID, shell=True) if processID: @@ -206,11 +206,13 @@ if __name__ == "__main__": time.sleep(2) if restful: - toBeKilled = "taosadapter" + toBeKilled = "taosadapt" - killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -TERM > /dev/null 2>&1" % toBeKilled + # killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -TERM > /dev/null 2>&1" % toBeKilled + killCmd = f"pkill {toBeKilled}" psCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}'" % toBeKilled + # psCmd = f"pgrep {toBeKilled}" processID = subprocess.check_output(psCmd, shell=True) while(processID): @@ -218,15 +220,15 @@ if __name__ == "__main__": time.sleep(1) processID = subprocess.check_output(psCmd, shell=True) - for port in range(6030, 6041): - usePortPID = "lsof -i tcp:%d | grep LISTEn | awk '{print $2}'" % port - processID = subprocess.check_output(usePortPID, shell=True) + port = 6041 + usePortPID = f"lsof -i tcp:{port} | grep LISTEN | awk '{{print $2}}'" + processID = subprocess.check_output(usePortPID, shell=True) - if processID: - killCmd = "kill -TERM %s" % processID - os.system(killCmd) - fuserCmd = "fuser -k -n tcp %d" % port - os.system(fuserCmd) + if processID: + killCmd = f"kill -TERM {processID}" + os.system(killCmd) + fuserCmd = f"fuser -k -n tcp {port}" + os.system(fuserCmd) tdLog.info('stop taosadapter') From b52fb1b516fbca52df5d7d226ddff5eb53d36e2f Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Fri, 12 Aug 2022 20:36:53 +0800 Subject: [PATCH 006/108] build: release ver-3.0.0.0 --- packaging/tools/tdengine.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/tools/tdengine.iss b/packaging/tools/tdengine.iss index 7310201815..272a0dfb5c 100644 --- a/packaging/tools/tdengine.iss +++ b/packaging/tools/tdengine.iss @@ -51,7 +51,7 @@ Source: taos.bat; DestDir: "{app}\include"; Flags: igNoreversion; ;Source: taosdemo.png; DestDir: "{app}\include"; Flags: igNoreversion; ;Source: taosShell.png; DestDir: "{app}\include"; Flags: igNoreversion; Source: favicon.ico; DestDir: "{app}\include"; Flags: igNoreversion; -Source: {#MyAppSourceDir}{#MyAppDLLName}; DestDir: "{win}\System32"; Flags: igNoreversion; +Source: {#MyAppSourceDir}{#MyAppDLLName}; DestDir: "{win}\System32"; Flags: 64bit;Check:IsWin64; Source: {#MyAppSourceDir}{#MyAppCfgName}; DestDir: "{app}\cfg"; Flags: igNoreversion recursesubdirs createallsubdirs onlyifdoesntexist uninsneveruninstall Source: {#MyAppSourceDir}{#MyAppDriverName}; DestDir: "{app}\driver"; Flags: igNoreversion recursesubdirs createallsubdirs ;Source: {#MyAppSourceDir}{#MyAppConnectorName}; DestDir: "{app}\connector"; Flags: igNoreversion recursesubdirs createallsubdirs From b72b8e62b783e285d2a3a7f3708905a71b3cd4dc Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 12 Aug 2022 23:13:23 +0800 Subject: [PATCH 007/108] doc: update taos.cfg --- packaging/cfg/taos.cfg | 271 ++++++++++------------------------------- 1 file changed, 64 insertions(+), 207 deletions(-) diff --git a/packaging/cfg/taos.cfg b/packaging/cfg/taos.cfg index 7d77a0b23e..f76241c51f 100644 --- a/packaging/cfg/taos.cfg +++ b/packaging/cfg/taos.cfg @@ -5,137 +5,54 @@ # # ######################################################## -# first fully qualified domain name (FQDN) for TDengine system +# The end point of the first dnode in the cluster to be connected to when `taosd` or `taos` is started # firstEp hostname:6030 -# local fully qualified domain name (FQDN) +# The end point of the second dnode to be connected to if the firstEp is not available when `taosd` or `taos` is started +# secondEp + +# The FQDN of the host where `taosd` will be started. It can be IP address # fqdn hostname -# first port number for the connection (12 continuous UDP/TCP port number are used) +# The port for external access after `taosd` is started # serverPort 6030 -# log file's directory +# The maximum number of connections a dnode can accept +# maxShellConns 5000 + +# The directory for writing log files # logDir /var/log/taos -# data file's directory +# All data files are stored in this director # dataDir /var/lib/taos # temporary file's directory # tempDir /tmp/ -# the arbitrator's fully qualified domain name (FQDN) for TDengine system, for cluster only -# arbitrator arbitrator_hostname:6042 - -# number of threads per CPU core -# numOfThreadsPerCore 1.0 - -# number of threads to commit cache data -# numOfCommitThreads 4 - -# the proportion of total CPU cores available for query processing -# 2.0: the query threads will be set to double of the CPU cores. -# 1.0: all CPU cores are available for query processing [default]. -# 0.5: only half of the CPU cores are available for query. -# 0.0: only one core available. -# ratioOfQueryCores 1.0 - -# the last_row/first/last aggregator will not change the original column name in the result fields -keepColumnName 1 - -# number of management nodes in the system -# numOfMnodes 1 - -# enable/disable backuping vnode directory when removing vnode -# vnodeBak 1 - -# enable/disable installation / usage report +# Switch for allowing TDengine to collect and report service usage information # telemetryReporting 1 -# enable/disable load balancing -# balance 1 +# The maximum number of vnodes supported by dnode +# supportVnodes 0 -# role for dnode. 0 - any, 1 - mnode, 2 - dnode -# role 0 - -# max timer control blocks -# maxTmrCtrl 512 - -# time interval of system monitor, seconds -# monitorInterval 30 - -# number of seconds allowed for a dnode to be offline, for cluster only -# offlineThreshold 864000 - -# RPC re-try timer, millisecond -# rpcTimer 300 - -# RPC maximum time for ack, seconds. -# rpcMaxTime 600 - -# time interval of dnode status reporting to mnode, seconds, for cluster only +# The interval of dnode reporting status to mnode # statusInterval 1 -# time interval of heart beat from shell to dnode, seconds +# The interval for taos shell to send heartbeat to mnode # shellActivityTimer 3 -# minimum sliding window time, milli-second +# The minimum sliding window time, milli-second # minSlidingTime 10 -# minimum time window, milli-second +# The minimum time window, milli-second # minIntervalTime 10 -# maximum delay before launching a stream computation, milli-second -# maxStreamCompDelay 20000 +# The maximum allowed query buffer size in MB during query processing for each data node +# -1 no limit (default) +# 0 no query allowed, queries are disabled +# queryBufferSize -1 -# maximum delay before launching a stream computation for the first time, milli-second -# maxFirstStreamCompDelay 10000 - -# retry delay when a stream computation fails, milli-second -# retryStreamCompDelay 10 - -# the delayed time for launching a stream computation, from 0.1(default, 10% of whole computing time window) to 0.9 -# streamCompDelayRatio 0.1 - -# max number of vgroups per db, 0 means configured automatically -# maxVgroupsPerDb 0 - -# max number of tables per vnode -# maxTablesPerVnode 1000000 - -# cache block size (Mbyte) -# cache 16 - -# number of cache blocks per vnode -# blocks 6 - -# number of days per DB file -# days 10 - -# number of days to keep DB file -# keep 3650 - -# minimum rows of records in file block -# minRows 100 - -# maximum rows of records in file block -# maxRows 4096 - -# the number of acknowledgments required for successful data writing -# quorum 1 - -# enable/disable compression -# comp 2 - -# write ahead log (WAL) level, 0: no wal; 1: write wal, but no fysnc; 2: write wal, and call fsync -# walLevel 1 - -# if walLevel is set to 2, the cycle of fsync being executed, if set to 0, fsync is called right away -# fsync 3000 - -# number of replications, for cluster only -# replica 1 - -# the compressed rpc message, option: +# The compressed rpc message, option: # -1 (no compression) # 0 (all message compressed), # > 0 (rpc message body which larger than this value will be compressed) @@ -147,15 +64,6 @@ keepColumnName 1 # > 0 (any retrieved column size greater than this value all data will be compressed.) # compressColData -1 -# max length of an SQL -# maxSQLLength 65480 - -# max length of WildCards -# maxWildCardsLength 100 - -# the maximum number of records allowed for super table time sorting -# maxNumOfOrderedRes 100000 - # system time zone # timezone Asia/Shanghai (CST, +0800) # system time zone (for windows 10) @@ -167,12 +75,6 @@ keepColumnName 1 # default system charset # charset UTF-8 -# max number of connections allowed in dnode -# maxShellConns 5000 - -# max number of connections allowed in client -# maxConnections 5000 - # stop writing logs when the disk size of the log folder is less than this value # minimalLogDirGB 1.0 @@ -182,30 +84,9 @@ keepColumnName 1 # if disk free space is less than this value, taosd service exit directly within startup process # minimalDataDirGB 2.0 -# One mnode is equal to the number of vnode consumed -# mnodeEqualVnodeNum 4 - -# enbale/disable http service -# http 1 - # enable/disable system monitor # monitor 1 -# enable/disable recording the SQL statements via restful interface -# httpEnableRecordSql 0 - -# number of threads used to process http requests -# httpMaxThreads 2 - -# maximum number of rows returned by the restful interface -# restfulRowLimit 10240 - -# database name must be specified in restful interface if the following parameter is set, off by default -# httpDbNameMandatory 1 - -# http keep alive, default is 30 seconds -# httpKeepAlive 30000 - # The following parameter is used to limit the maximum number of lines in log files. # max number of lines per log filters # numOfLogLines 10000000 @@ -216,7 +97,6 @@ keepColumnName 1 # time of keeping log files, days # logKeepDays 0 - # The following parameters are used for debug purpose only. # debugFlag 8 bits mask: FILE-SCREEN-UNUSED-HeartBeat-DUMP-TRACE_WARN-ERROR # 131: output warning and error @@ -228,85 +108,62 @@ keepColumnName 1 # debug flag for all log type, take effect when non-zero value # debugFlag 0 -# debug flag for meta management messages -# mDebugFlag 135 - -# debug flag for dnode messages -# dDebugFlag 135 - -# debug flag for sync module -# sDebugFlag 135 - -# debug flag for WAL -# wDebugFlag 135 - -# debug flag for SDB -# sdbDebugFlag 135 - -# debug flag for RPC -# rpcDebugFlag 131 - -# debug flag for TAOS TIMER +# debug flag for timer # tmrDebugFlag 131 -# debug flag for TDengine client -# cDebugFlag 131 - -# debug flag for JNI -# jniDebugFlag 131 - -# debug flag for storage +# debug flag for util # uDebugFlag 131 -# debug flag for http server -# httpDebugFlag 131 +# debug flag for rpc +# rpcDebugFlag 131 -# debug flag for monitor -# monDebugFlag 131 +# debug flag for jni +# jniDebugFlag 131 # debug flag for query # qDebugFlag 131 +# debug flag for taosc driver +# cDebugFlag 131 + +# debug flag for dnode messages +# dDebugFlag 135 + # debug flag for vnode # vDebugFlag 131 -# debug flag for TSDB +# debug flag for meta management messages +# mDebugFlag 135 + +# debug flag for wal +# wDebugFlag 135 + +# debug flag for sync module +# sDebugFlag 135 + +# debug flag for tsdb # tsdbDebugFlag 131 -# debug flag for continue query -# cqDebugFlag 131 +# debug flag for tq +# tqDebugFlag 131 -# enable/disable recording the SQL in taos client -# enableRecordSql 0 +# debug flag for fs +# fsDebugFlag 131 + +# debug flag for udf +# udfDebugFlag 131 + +# debug flag for sma +# smaDebugFlag 131 + +# debug flag for index +# idxDebugFlag 131 + +# debug flag for tdb +# tdbDebugFlag 131 + +# debug flag for meta +# metaDebugFlag 131 # generate core file when service crash # enableCoreFile 1 - -# maximum display width of binary and nchar fields in the shell. The parts exceeding this limit will be hidden -# maxBinaryDisplayWidth 30 - -# enable/disable stream (continuous query) -# stream 1 - -# in retrieve blocking model, only in 50% query threads will be used in query processing in dnode -# retrieveBlockingModel 0 - -# the maximum allowed query buffer size in MB during query processing for each data node -# -1 no limit (default) -# 0 no query allowed, queries are disabled -# queryBufferSize -1 - -# percent of redundant data in tsdb meta will compact meta data,0 means donot compact -# tsdbMetaCompactRatio 0 - -# default string type used for storing JSON String, options can be binary/nchar, default is nchar -# defaultJSONStrType nchar - -# force TCP transmission -# rpcForceTcp 0 - -# unit MB. Flush vnode wal file if walSize > walFlushSize and walSize > cache*0.5*blocks -# walFlushSize 1024 - -# unit Hour. Latency of data migration -# keepTimeOffset 0 From 13930f89e9e4c8d38fc785acdc9a5396bb78e2d2 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 12 Aug 2022 23:17:39 +0800 Subject: [PATCH 008/108] doc: update taos.cfg --- packaging/cfg/taos.cfg | 70 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/packaging/cfg/taos.cfg b/packaging/cfg/taos.cfg index f76241c51f..aae2e7c856 100644 --- a/packaging/cfg/taos.cfg +++ b/packaging/cfg/taos.cfg @@ -23,7 +23,7 @@ # The directory for writing log files # logDir /var/log/taos -# All data files are stored in this director +# All data files are stored in this directory # dataDir /var/lib/taos # temporary file's directory @@ -50,52 +50,52 @@ # The maximum allowed query buffer size in MB during query processing for each data node # -1 no limit (default) # 0 no query allowed, queries are disabled -# queryBufferSize -1 +# queryBufferSize -1 # The compressed rpc message, option: # -1 (no compression) # 0 (all message compressed), # > 0 (rpc message body which larger than this value will be compressed) -# compressMsgSize -1 +# compressMsgSize -1 # query retrieved column data compression option: # -1 (no compression) # 0 (all retrieved column data compressed), # > 0 (any retrieved column size greater than this value all data will be compressed.) -# compressColData -1 +# compressColData -1 # system time zone # timezone Asia/Shanghai (CST, +0800) # system time zone (for windows 10) -# timezone UTC-8 +# timezone UTC-8 # system locale -# locale en_US.UTF-8 +# locale en_US.UTF-8 # default system charset -# charset UTF-8 +# charset UTF-8 # stop writing logs when the disk size of the log folder is less than this value -# minimalLogDirGB 1.0 +# minimalLogDirGB 1.0 # stop writing temporary files when the disk size of the tmp folder is less than this value -# minimalTmpDirGB 1.0 +# minimalTmpDirGB 1.0 # if disk free space is less than this value, taosd service exit directly within startup process -# minimalDataDirGB 2.0 +# minimalDataDirGB 2.0 # enable/disable system monitor -# monitor 1 +# monitor 1 # The following parameter is used to limit the maximum number of lines in log files. # max number of lines per log filters -# numOfLogLines 10000000 +# numOfLogLines 10000000 # enable/disable async log -# asyncLog 1 +# asyncLog 1 # time of keeping log files, days -# logKeepDays 0 +# logKeepDays 0 # The following parameters are used for debug purpose only. # debugFlag 8 bits mask: FILE-SCREEN-UNUSED-HeartBeat-DUMP-TRACE_WARN-ERROR @@ -106,64 +106,64 @@ # 207: output trace, debug, warning and error to both screen and file # debug flag for all log type, take effect when non-zero value -# debugFlag 0 +# debugFlag 0 # debug flag for timer -# tmrDebugFlag 131 +# tmrDebugFlag 131 # debug flag for util -# uDebugFlag 131 +# uDebugFlag 131 # debug flag for rpc -# rpcDebugFlag 131 +# rpcDebugFlag 131 # debug flag for jni -# jniDebugFlag 131 +# jniDebugFlag 131 # debug flag for query -# qDebugFlag 131 +# qDebugFlag 131 # debug flag for taosc driver -# cDebugFlag 131 +# cDebugFlag 131 # debug flag for dnode messages -# dDebugFlag 135 +# dDebugFlag 135 # debug flag for vnode -# vDebugFlag 131 +# vDebugFlag 131 # debug flag for meta management messages -# mDebugFlag 135 +# mDebugFlag 135 # debug flag for wal -# wDebugFlag 135 +# wDebugFlag 135 # debug flag for sync module -# sDebugFlag 135 +# sDebugFlag 135 # debug flag for tsdb -# tsdbDebugFlag 131 +# tsdbDebugFlag 131 # debug flag for tq -# tqDebugFlag 131 +# tqDebugFlag 131 # debug flag for fs -# fsDebugFlag 131 +# fsDebugFlag 131 # debug flag for udf -# udfDebugFlag 131 +# udfDebugFlag 131 # debug flag for sma -# smaDebugFlag 131 +# smaDebugFlag 131 # debug flag for index -# idxDebugFlag 131 +# idxDebugFlag 131 # debug flag for tdb -# tdbDebugFlag 131 +# tdbDebugFlag 131 # debug flag for meta -# metaDebugFlag 131 +# metaDebugFlag 131 # generate core file when service crash -# enableCoreFile 1 +# enableCoreFile 1 From 43cce75bbde9bc7d018e82928457dfb11613a97e Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Fri, 12 Aug 2022 23:23:04 +0800 Subject: [PATCH 009/108] feat: update taostoosl d237772 for 3.0 rel (#16079) --- cmake/taostools_CMakeLists.txt.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index 3a6eb3c25a..1751549680 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG 53a0103 + GIT_TAG d237772 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE From f9eee95f7314f547ac6962c85ed081f327b6a101 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Fri, 12 Aug 2022 23:49:33 +0800 Subject: [PATCH 010/108] build: release ver-3.0.0.0 --- packaging/deb/DEBIAN/prerm | 1 + packaging/deb/makedeb.sh | 1 + packaging/rpm/tdengine.spec | 2 ++ packaging/tools/post.sh | 2 ++ 4 files changed, 6 insertions(+) diff --git a/packaging/deb/DEBIAN/prerm b/packaging/deb/DEBIAN/prerm index 5676bf5c43..4953102842 100644 --- a/packaging/deb/DEBIAN/prerm +++ b/packaging/deb/DEBIAN/prerm @@ -29,6 +29,7 @@ else # Remove all links ${csudo}rm -f ${bin_link_dir}/taos || : ${csudo}rm -f ${bin_link_dir}/taosd || : + ${csudo}rm -f ${bin_link_dir}/udfd || : ${csudo}rm -f ${bin_link_dir}/taosadapter || : ${csudo}rm -f ${bin_link_dir}/taosdemo || : ${csudo}rm -f ${cfg_link_dir}/* || : diff --git a/packaging/deb/makedeb.sh b/packaging/deb/makedeb.sh index 6de475a4c0..3db9005f95 100755 --- a/packaging/deb/makedeb.sh +++ b/packaging/deb/makedeb.sh @@ -60,6 +60,7 @@ cp ${compile_dir}/../packaging/tools/set_core.sh ${pkg_dir}${install_home_pat cp ${compile_dir}/../packaging/tools/taosd-dump-cfg.gdb ${pkg_dir}${install_home_path}/bin cp ${compile_dir}/build/bin/taosd ${pkg_dir}${install_home_path}/bin +cp ${compile_dir}/build/bin/udfd ${pkg_dir}${install_home_path}/bin cp ${compile_dir}/build/bin/taosBenchmark ${pkg_dir}${install_home_path}/bin if [ -f "${compile_dir}/build/bin/taosadapter" ]; then diff --git a/packaging/rpm/tdengine.spec b/packaging/rpm/tdengine.spec index 7a34f7a222..637d2d425a 100644 --- a/packaging/rpm/tdengine.spec +++ b/packaging/rpm/tdengine.spec @@ -69,6 +69,7 @@ cp %{_compiledir}/../packaging/tools/set_core.sh %{buildroot}%{homepath}/bin cp %{_compiledir}/../packaging/tools/taosd-dump-cfg.gdb %{buildroot}%{homepath}/bin cp %{_compiledir}/build/bin/taos %{buildroot}%{homepath}/bin cp %{_compiledir}/build/bin/taosd %{buildroot}%{homepath}/bin +cp %{_compiledir}/build/bin/udfd %{buildroot}%{homepath}/bin cp %{_compiledir}/build/bin/taosBenchmark %{buildroot}%{homepath}/bin if [ -f %{_compiledir}/build/bin/taosadapter ]; then @@ -204,6 +205,7 @@ if [ $1 -eq 0 ];then # Remove all links ${csudo}rm -f ${bin_link_dir}/taos || : ${csudo}rm -f ${bin_link_dir}/taosd || : + ${csudo}rm -f ${bin_link_dir}/udfd || : ${csudo}rm -f ${bin_link_dir}/taosadapter || : ${csudo}rm -f ${cfg_link_dir}/* || : ${csudo}rm -f ${inc_link_dir}/taos.h || : diff --git a/packaging/tools/post.sh b/packaging/tools/post.sh index aa80cfb86c..fcc8a2a942 100755 --- a/packaging/tools/post.sh +++ b/packaging/tools/post.sh @@ -118,6 +118,7 @@ function install_bin() { # Remove links ${csudo}rm -f ${bin_link_dir}/taos || : ${csudo}rm -f ${bin_link_dir}/taosd || : + ${csudo}rm -f ${bin_link_dir}/udfd || : ${csudo}rm -f ${bin_link_dir}/taosadapter || : ${csudo}rm -f ${bin_link_dir}/taosBenchmark || : ${csudo}rm -f ${bin_link_dir}/taosdemo || : @@ -130,6 +131,7 @@ function install_bin() { #Make link [ -x ${bin_dir}/taos ] && ${csudo}ln -s ${bin_dir}/taos ${bin_link_dir}/taos || : [ -x ${bin_dir}/taosd ] && ${csudo}ln -s ${bin_dir}/taosd ${bin_link_dir}/taosd || : + [ -x ${bin_dir}/udfd ] && ${csudo}ln -s ${bin_dir}/udfd ${bin_link_dir}/udfd || : [ -x ${bin_dir}/taosadapter ] && ${csudo}ln -s ${bin_dir}/taosadapter ${bin_link_dir}/taosadapter || : [ -x ${bin_dir}/taosBenchmark ] && ${csudo}ln -sf ${bin_dir}/taosBenchmark ${bin_link_dir}/taosdemo || : [ -x ${bin_dir}/taosBenchmark ] && ${csudo}ln -sf ${bin_dir}/taosBenchmark ${bin_link_dir}/taosBenchmark || : From 8e3aa6e687043fb32a119fd50c1c6d2a0c88981f Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Sat, 13 Aug 2022 00:03:42 +0800 Subject: [PATCH 011/108] build: release ver-3.0.0.0 --- packaging/tools/makepkg.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/tools/makepkg.sh b/packaging/tools/makepkg.sh index 6103ce170c..8f81bd5cf6 100755 --- a/packaging/tools/makepkg.sh +++ b/packaging/tools/makepkg.sh @@ -318,7 +318,7 @@ if [ "$verMode" == "cluster" ]; then fi # Copy release note -cp ${script_dir}/release_note ${install_dir} +# cp ${script_dir}/release_note ${install_dir} # exit 1 From 39c93de6c94cd3eacdd937fea4ca18562be07618 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Sat, 13 Aug 2022 00:30:43 +0800 Subject: [PATCH 012/108] build: release ver-3.0.0.0 --- packaging/tools/install.sh | 5 ++++- packaging/tools/makepkg.sh | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packaging/tools/install.sh b/packaging/tools/install.sh index eda2b052d1..39606ead30 100755 --- a/packaging/tools/install.sh +++ b/packaging/tools/install.sh @@ -18,6 +18,7 @@ script_dir=$(dirname $(readlink -f "$0")) clientName="taos" serverName="taosd" +udfdName="udfd" configFile="taos.cfg" productName="TDengine" emailName="taosdata.com" @@ -192,6 +193,7 @@ function install_bin() { # Remove links ${csudo}rm -f ${bin_link_dir}/${clientName} || : ${csudo}rm -f ${bin_link_dir}/${serverName} || : + ${csudo}rm -f ${bin_link_dir}/${udfdName} || : ${csudo}rm -f ${bin_link_dir}/${adapterName} || : ${csudo}rm -f ${bin_link_dir}/${uninstallScript} || : ${csudo}rm -f ${bin_link_dir}/${demoName} || : @@ -205,6 +207,7 @@ function install_bin() { #Make link [ -x ${install_main_dir}/bin/${clientName} ] && ${csudo}ln -s ${install_main_dir}/bin/${clientName} ${bin_link_dir}/${clientName} || : [ -x ${install_main_dir}/bin/${serverName} ] && ${csudo}ln -s ${install_main_dir}/bin/${serverName} ${bin_link_dir}/${serverName} || : + [ -x ${install_main_dir}/bin/${udfdName} ] && ${csudo}ln -s ${install_main_dir}/bin/${udfdName} ${bin_link_dir}/${udfdName} || : [ -x ${install_main_dir}/bin/${adapterName} ] && ${csudo}ln -s ${install_main_dir}/bin/${adapterName} ${bin_link_dir}/${adapterName} || : [ -x ${install_main_dir}/bin/${benchmarkName} ] && ${csudo}ln -s ${install_main_dir}/bin/${benchmarkName} ${bin_link_dir}/${demoName} || : [ -x ${install_main_dir}/bin/${benchmarkName} ] && ${csudo}ln -s ${install_main_dir}/bin/${benchmarkName} ${bin_link_dir}/${benchmarkName} || : @@ -742,7 +745,7 @@ function is_version_compatible() { fi exist_version=$(${installDir}/bin/${serverName} -V | head -1 | cut -d ' ' -f 3) - vercomp $exist_version "2.0.16.0" + vercomp $exist_version "3.0.0.0" case $? in 2) prompt_force=1 diff --git a/packaging/tools/makepkg.sh b/packaging/tools/makepkg.sh index 8f81bd5cf6..f5e3bf1882 100755 --- a/packaging/tools/makepkg.sh +++ b/packaging/tools/makepkg.sh @@ -85,6 +85,7 @@ else ${build_dir}/bin/${clientName} \ ${taostools_bin_files} \ ${build_dir}/bin/taosadapter \ + ${build_dir}/bin/udfd \ ${script_dir}/remove.sh \ ${script_dir}/set_core.sh \ ${script_dir}/startPre.sh \ From b5cb033be8792baefe580c5eb9a185b2c82bb8d7 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Sat, 13 Aug 2022 02:17:09 +0800 Subject: [PATCH 013/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 63698aab50..0c178e5962 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -29,6 +29,7 @@ echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | 如果安装 Beta 版需要安装包仓库 ```bash +wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add - echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.list ``` From 7a5adc95823e17b69d1043445ee21e7a05bc8c99 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Sat, 13 Aug 2022 02:26:33 +0800 Subject: [PATCH 014/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 814784b649..0cbc23727a 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -13,7 +13,7 @@ title: 通过 Docker 快速体验 TDengine 如果已经安装了 docker, 只需执行下面的命令。 ```shell -docker run -d -p 6030:6030 -p 6041/6041 -p 6043-6049/6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine +docker run -d -p 6043-6049:6043-6049/udp tdengine/tdengine ``` 注意:TDengine 3.0 服务端仅使用 6030 TCP 端口。6041 为 taosAdapter 所使用提供 REST 服务端口。6043-6049 为 taosAdapter 提供第三方应用接入所使用端口,可根据需要选择是否打开。 From 4e3de6ddc05ac8049025d39f6e152dcf81ebb9f7 Mon Sep 17 00:00:00 2001 From: taos-support <82924279+taos-support@users.noreply.github.com> Date: Mon, 15 Aug 2022 09:59:58 +0800 Subject: [PATCH 015/108] Update the example spelling error --- docs/zh/12-taos-sql/06-select.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/12-taos-sql/06-select.md b/docs/zh/12-taos-sql/06-select.md index 8aa6c43747..5312d7d2f3 100644 --- a/docs/zh/12-taos-sql/06-select.md +++ b/docs/zh/12-taos-sql/06-select.md @@ -103,7 +103,7 @@ SELECT d1001.* FROM d1001,d1003 WHERE d1001.ts = d1003.ts; 在超级表和子表的查询中可以指定 _标签列_,且标签列的值会与普通列的数据一起返回。 ```sql -ELECT location, groupid, current FROM d1001 LIMIT 2; +SELECT location, groupid, current FROM d1001 LIMIT 2; ``` ### 结果去重 From c4aa94b236755e38b268766bbdbd04842325600e Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:07:17 +0800 Subject: [PATCH 016/108] fix(query): fix nested query length(ltrim/rtrim) result incorrect TD-18388 --- source/libs/scalar/src/sclfunc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index 2d889dd925..4ead1147e4 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -642,7 +642,6 @@ static int32_t doTrimFunction(SScalarParam *pInput, int32_t inputNum, SScalarPar int32_t charLen = (type == TSDB_DATA_TYPE_VARCHAR) ? len : len / TSDB_NCHAR_SIZE; trimFn(input, output, type, charLen); - varDataSetLen(output, len); colDataAppend(pOutputData, i, output, false); output += varDataTLen(output); } From f8f0d08c2ea23189ab4c1c659fda57bbe23abf2f Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:10:07 +0800 Subject: [PATCH 017/108] fix(query): fix test cases --- tests/script/tsim/column/commit.sim | 58 ++++++++--------- tests/script/tsim/column/metrics.sim | 88 +++++++++++++------------- tests/script/tsim/column/table.sim | 94 ++++++++++++++-------------- 3 files changed, 120 insertions(+), 120 deletions(-) diff --git a/tests/script/tsim/column/commit.sim b/tests/script/tsim/column/commit.sim index 43aebb4902..899d51af87 100644 --- a/tests/script/tsim/column/commit.sim +++ b/tests/script/tsim/column/commit.sim @@ -10,12 +10,12 @@ sql create table d3.mt (ts timestamp, c000 int, c001 int, c002 int, c003 int, c0 sql create table d3.t1 using d3.mt tags(1, 2, '3', 4, 5, 6) sql show tables -if $rows != 1 then +if $rows != 1 then return -1 endi sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -33,50 +33,50 @@ sql insert into d3.t1 values (now+1d,9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , print =============== step3 sql select * from d3.mt -if $rows != 10 then +if $rows != 10 then return -1 endi sql select * from d3.mt where c001 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from d3.mt where c002 = 2 and c003 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi sql select count(c001), count(c248), avg(c001), avg(c248), sum(c001), max(c001), min(c248), avg(c235), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d3.mt print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 4.500000000 then +if $data07 != 4.500000000 then return -1 endi -if $data08 != 10 then +if $data08 != 10 then return -1 endi -if $data09 != 10 then +if $data09 != 10 then return -1 endi @@ -86,17 +86,17 @@ system sh/exec.sh -n dnode1 -s start print =============== step5 sql select * from d3.mt -if $rows != 10 then +if $rows != 10 then return -1 endi sql select * from d3.mt where c001 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from d3.mt where c002 = 2 and c003 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -107,35 +107,35 @@ endi sql select count(c001), count(c248), avg(c001), avg(c248), sum(c001), max(c001), min(c248), avg(c128), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d3.mt print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 4.500000000 then +if $data07 != 4.500000000 then return -1 endi -if $data08 != 10 then +if $data08 != 10 then return -1 endi -if $data09 != 10 then +if $data09 != 10 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/column/metrics.sim b/tests/script/tsim/column/metrics.sim index a492f5a2f9..6a144a15d3 100644 --- a/tests/script/tsim/column/metrics.sim +++ b/tests/script/tsim/column/metrics.sim @@ -11,12 +11,12 @@ sql create table d2.t1 using d2.mt tags(1, 2, '3', 4, 5, 6) sql create table d2.t2 using d2.mt tags(6, 7, '8', 9, 10, 11) sql show tables -if $rows != 2 then +if $rows != 2 then return -1 endi sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -53,98 +53,98 @@ sql insert into d2.t2 values (now+9m,9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , print =============== step3 sql select * from d2.mt -if $rows != 20 then +if $rows != 20 then return -1 endi sql select * from d2.mt where ts < now + 4m -if $rows != 10 then +if $rows != 10 then return -1 endi sql select * from d2.mt where c001 = 1 -if $rows != 2 then +if $rows != 2 then return -1 endi sql select * from d2.mt where c002 = 2 and c003 = 2 -if $rows != 2 then +if $rows != 2 then return -1 endi sql select * from d2.mt where c002 = 2 and c003 = 2 and ts < now + 4m -if $rows != 2 then +if $rows != 2 then return -1 endi sql select count(*) from d2.mt -if $data00 != 20 then +if $data00 != 20 then return -1 endi sql select count(c001), count(c248), avg(c001), avg(c248), sum(c001), max(c001), min(c248), avg(c235), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d2.mt print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 -if $data00 != 20 then +if $data00 != 20 then return -1 endi -if $data01 != 20 then +if $data01 != 20 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 90 then +if $data04 != 90 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 4.500000000 then +if $data07 != 4.500000000 then return -1 endi -if $data08 != 20 then +if $data08 != 20 then return -1 endi -if $data09 != 20 then +if $data09 != 20 then return -1 endi sql select count(c001), count(c248), avg(c001), avg(c248), sum(c001), max(c001), min(c248), avg(c238), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d2.mt where a = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 -if $data00 != 10 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 4.500000000 then +if $data07 != 4.500000000 then return -1 endi -if $data08 != 10 then +if $data08 != 10 then return -1 endi -if $data09 != 10 then +if $data09 != 10 then return -1 endi @@ -154,56 +154,56 @@ system sh/exec.sh -n dnode1 -s start print =============== step5 sql select * from d2.mt -if $rows != 20 then +if $rows != 20 then return -1 endi sql select * from d2.mt where c001 = 1 -if $rows != 2 then +if $rows != 2 then return -1 endi sql select * from d2.mt where c002 = 2 and c003 = 2 -if $rows != 2 then +if $rows != 2 then return -1 endi sql select count(*) from d2.mt -if $data00 != 20 then +if $data00 != 20 then return -1 endi sql select count(c001), count(c248), avg(c001), avg(c248), sum(c001), max(c001), min(c248), avg(c128), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d2.mt print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09 -if $data00 != 20 then +if $data00 != 20 then return -1 endi -if $data01 != 20 then +if $data01 != 20 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 90 then +if $data04 != 90 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 4.500000000 then +if $data07 != 4.500000000 then return -1 endi -if $data08 != 20 then +if $data08 != 20 then return -1 endi -if $data09 != 20 then +if $data09 != 20 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/column/table.sim b/tests/script/tsim/column/table.sim index 07948ebce3..4f1d32c373 100644 --- a/tests/script/tsim/column/table.sim +++ b/tests/script/tsim/column/table.sim @@ -9,7 +9,7 @@ sql use d1 sql create table d1.t1 (ts timestamp, c000 int, c001 int, c002 int, c003 int, c004 int, c005 int, c006 int, c007 int, c008 int, c009 int, c010 int, c011 int, c012 int, c013 int, c014 int, c015 int, c016 int, c017 int, c018 int, c019 int, c020 int, c021 int, c022 int, c023 int, c024 int, c025 int, c026 int, c027 int, c028 int, c029 int, c030 int, c031 int, c032 int, c033 int, c034 int, c035 int, c036 int, c037 int, c038 int, c039 int, c040 int, c041 int, c042 int, c043 int, c044 int, c045 int, c046 int, c047 int, c048 int, c049 int, c050 int, c051 int, c052 int, c053 int, c054 int, c055 int, c056 int, c057 int, c058 int, c059 int, c060 int, c061 int, c062 int, c063 int, c064 int, c065 int, c066 int, c067 int, c068 int, c069 int, c070 int, c071 int, c072 int, c073 int, c074 int, c075 int, c076 int, c077 int, c078 int, c079 int, c080 int, c081 int, c082 int, c083 int, c084 int, c085 int, c086 int, c087 int, c088 int, c089 int, c090 int, c091 int, c092 int, c093 int, c094 int, c095 int, c096 int, c097 int, c098 int, c099 int, c100 int, c101 int, c102 int, c103 int, c104 int, c105 int, c106 int, c107 int, c108 int, c109 int, c110 int, c111 int, c112 int, c113 int, c114 int, c115 int, c116 int, c117 int, c118 int, c119 int, c120 int, c121 int, c122 int, c123 int, c124 int, c125 int, c126 int, c127 int, c128 int, c129 int, c130 int, c131 int, c132 int, c133 int, c134 int, c135 int, c136 int, c137 int, c138 int, c139 int, c140 int, c141 int, c142 int, c143 int, c144 int, c145 int, c146 int, c147 int, c148 int, c149 int, c150 int, c151 int, c152 int, c153 int, c154 int, c155 int, c156 int, c157 int, c158 int, c159 int, c160 int, c161 int, c162 int, c163 int, c164 int, c165 int, c166 int, c167 int, c168 int, c169 int, c170 int, c171 int, c172 int, c173 int, c174 int, c175 int, c176 int, c177 int, c178 int, c179 int, c180 int, c181 int, c182 int, c183 int, c184 int, c185 int, c186 int, c187 int, c188 int, c189 int, c190 int, c191 int, c192 int, c193 int, c194 int, c195 int, c196 int, c197 int, c198 int, c199 int, c200 int, c201 int, c202 int, c203 int, c204 int, c205 int, c206 int, c207 int, c208 int, c209 int, c210 int, c211 int, c212 int, c213 int, c214 int, c215 int, c216 int, c217 int, c218 int, c219 int, c220 int, c221 int, c222 int, c223 int, c224 int, c225 int, c226 int, c227 int, c228 int, c229 int, c230 int, c231 int, c232 int, c233 int, c234 int, c235 int, c236 int, c237 int, c238 int, c239 int, c240 int, c241 int, c242 int, c243 int, c244 int, c245 int, c246 int, c247 int, c248 int, c249 int, c250 int) sql show tables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -32,91 +32,91 @@ sql insert into d1.t1 values (now+9m,9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , print ======= step3 sql select * from d1.t1 print select * from d1.t1 => rows $rows -if $rows != 10 then +if $rows != 10 then return -1 endi sql select * from d1.t1 where ts < now + 4m print select * from d1.t1 where ts < now + 4m => rows $rows -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from d1.t1 where c001 = 1 print select * from d1.t1 where c001 = 1 => rows $rows -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from d1.t1 where c002 = 2 and c003 = 2 print select * from d1.t1 where c002 = 2 and c003 = 2 => rows $rows -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from d1.t1 where c002 = 2 and c003 = 2 and ts < now + 4m print select * from d1.t1 where c002 = 2 and c003 = 2 and ts < now + 4m => rows $rows -if $rows != 1 then +if $rows != 1 then return -1 endi sql select count(*) from d1.t1 print select count(*) from d1.t1 => $data00 -if $data00 != 10 then +if $data00 != 10 then return -1 endi sql select count(c001), count(c250), avg(c001), avg(c250), sum(c001), max(c001), min(c250), stddev(c250) from d1.t1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 -if $data00 != 10 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 2.872281323 then +if $data07 != 2.872281323 then return -1 endi -sql select count(c001), count(c250), avg(c001), avg(c250), sum(c001), max(c001), min(c250), stddev(c250), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d1.t1 +sql select count(c001), count(c250), avg(c001), avg(c250), sum(c001), max(c001), min(c250), stddev(c250), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d1.t1 -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 2.872281323 then +if $data07 != 2.872281323 then return -1 endi @@ -128,79 +128,79 @@ print ============== step5 sql select * from d1.t1 print select * from d1.t1 => rows $rows -if $rows != 10 then +if $rows != 10 then return -1 endi sql select * from d1.t1 where c001 = 1 print select * from d1.t1 where c001 = 1 => rows $rows -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from d1.t1 where c002 = 2 and c003 = 2 print select * from d1.t1 where c002 = 2 and c003 = 2 => rows $rows -if $rows != 1 then +if $rows != 1 then return -1 endi sql select count(*) from d1.t1 print select count(*) from d1.t1 => $data00 -if $data00 != 10 then +if $data00 != 10 then return -1 endi sql select count(c001), count(c250), avg(c001), avg(c250), sum(c001), max(c001), min(c250), stddev(c250) from d1.t1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 -if $data00 != 10 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 2.872281323 then +if $data07 != 2.872281323 then return -1 endi sql select count(c001), count(c250), avg(c001), avg(c250), sum(c001), max(c001), min(c250), stddev(c250), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*), count(*) from d1.t1 -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 4.500000000 then +if $data02 != 4.500000000 then return -1 endi -if $data03 != 4.500000000 then +if $data03 != 4.500000000 then return -1 endi -if $data04 != 45 then +if $data04 != 45 then return -1 endi -if $data05 != 9 then +if $data05 != 9 then return -1 endi -if $data06 != 0 then +if $data06 != 0 then return -1 endi -if $data07 != 2.872281323 then +if $data07 != 2.872281323 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT From 6a04b8be091b3e6381f9476ecb3d11a86d898144 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:10:07 +0800 Subject: [PATCH 018/108] fix(query): fix test cases --- tests/script/tsim/insert/backquote.sim | 230 +++++++++--------- tests/script/tsim/insert/basic.sim | 16 +- tests/script/tsim/insert/basic0.sim | 216 ++++++++-------- tests/script/tsim/insert/basic1.sim | 28 +-- tests/script/tsim/insert/basic2.sim | 10 +- tests/script/tsim/insert/commit-merge0.sim | 8 +- tests/script/tsim/insert/insert_drop.sim | 18 +- tests/script/tsim/insert/insert_select.sim | 2 +- tests/script/tsim/insert/null.sim | 184 +++++++------- .../script/tsim/insert/query_block1_file.sim | 70 +++--- .../tsim/insert/query_block1_memory.sim | 78 +++--- .../script/tsim/insert/query_block2_file.sim | 72 +++--- .../tsim/insert/query_block2_memory.sim | 80 +++--- .../script/tsim/insert/query_file_memory.sim | 72 +++--- tests/script/tsim/insert/query_multi_file.sim | 10 +- tests/script/tsim/insert/tcp.sim | 4 +- tests/script/tsim/insert/update0.sim | 18 +- .../script/tsim/insert/update1_sort_merge.sim | 38 +-- 18 files changed, 577 insertions(+), 577 deletions(-) diff --git a/tests/script/tsim/insert/backquote.sim b/tests/script/tsim/insert/backquote.sim index fc8aa29c4e..f1b1c97e7d 100644 --- a/tests/script/tsim/insert/backquote.sim +++ b/tests/script/tsim/insert/backquote.sim @@ -8,9 +8,9 @@ print =============== create database sql create database `database` sql create database `DataBase` sql select * from information_schema.ins_databases -print rows: $rows +print rows: $rows print $data00 $data01 -print $data10 $data11 +print $data10 $data11 print $data20 $data21 if $rows != 4 then return -1 @@ -27,12 +27,12 @@ endi $dbCnt = 0 while $dbCnt < 2 - if $dbCnt == 0 then + if $dbCnt == 0 then sql use `database` - else + else sql use `DataBase` endi - + $dbCnt = $dbCnt + 1 print =============== create super table, include all type @@ -41,13 +41,13 @@ while $dbCnt < 2 sql create table `Stable` (`timestamp` timestamp, `int` int, `Binary` binary(32), `Nchar` nchar(32)) tags (`float` float, `binary` binary(16), `nchar` nchar(16)) sql show stables - print rows: $rows + print rows: $rows print $data00 $data01 print $data10 $data11 - if $rows != 2 then + if $rows != 2 then return -1 endi - if $data00 != Stable then + if $data00 != Stable then if $data00 != stable then return -1 endi @@ -57,24 +57,24 @@ while $dbCnt < 2 return -1 endi endi - + print =============== create child table sql create table `table` using `stable` tags(100.0, 'stable+table', 'stable+table') sql create table `Table` using `stable` tags(100.1, 'stable+Table', 'stable+Table') - + sql create table `TAble` using `Stable` tags(100.0, 'Stable+TAble', 'Stable+TAble') - sql create table `TABle` using `Stable` tags(100.1, 'Stable+TABle', 'Stable+TABle') - + sql create table `TABle` using `Stable` tags(100.1, 'Stable+TABle', 'Stable+TABle') + sql show tables - print rows: $rows + print rows: $rows print $data00 $data01 print $data10 $data11 print $data20 $data21 print $data30 $data31 - if $rows != 4 then + if $rows != 4 then return -1 endi - + print =============== insert data sql insert into `table` values(now+0s, 10, 'table', 'table')(now+1s, 11, 'table', 'table') sql insert into `Table` values(now+0s, 20, 'Table', 'Table')(now+1s, 21, 'Table', 'Table') @@ -86,15 +86,15 @@ while $dbCnt < 2 print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then + if $rows != 2 then return -1 - endi - if $data01 != 10 then + endi + if $data01 != 10 then return -1 - endi - if $data02 != table then + endi + if $data02 != table then return -1 - endi + endi if $data03 != table then print expect table, actual $data03 return -1 @@ -103,57 +103,57 @@ while $dbCnt < 2 print =================> 1 sql select * from `Table` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then + if $rows != 2 then return -1 - endi - if $data01 != 20 then + endi + if $data01 != 20 then return -1 - endi - if $data02 != Table then + endi + if $data02 != Table then return -1 - endi - if $data03 != Table then + endi + if $data03 != Table then return -1 endi print ================>2 sql select * from `TAble` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 30 then - return -1 - endi - if $data02 != TAble then - return -1 - endi - if $data03 != TAble then + if $rows != 2 then return -1 endi - + if $data01 != 30 then + return -1 + endi + if $data02 != TAble then + return -1 + endi + if $data03 != TAble then + return -1 + endi + sql select * from `TABle` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 40 then - return -1 - endi - if $data02 != TABle then - return -1 - endi - if $data03 != TABle then + if $rows != 2 then return -1 endi - + if $data01 != 40 then + return -1 + endi + if $data02 != TABle then + return -1 + endi + if $data03 != TABle then + return -1 + endi + #print =============== query data from st, but not support select * from super table, waiting fix #sql select count(*) from `stable` #print rows: $rows @@ -174,7 +174,7 @@ while $dbCnt < 2 # return -1 #endi #sql select * from `stable` - #if $rows != 4 then + #if $rows != 4 then # return -1 #endi @@ -185,9 +185,9 @@ system sh/exec.sh -n dnode1 -s stop -x SIGINT system sh/exec.sh -n dnode1 -s start sql select * from information_schema.ins_databases -print rows: $rows +print rows: $rows print $data00 $data01 -print $data10 $data11 +print $data10 $data11 print $data20 $data21 if $rows != 4 then return -1 @@ -204,22 +204,22 @@ endi $dbCnt = 0 while $dbCnt < 2 - if $dbCnt == 0 then + if $dbCnt == 0 then sql use `database` - else + else sql use `DataBase` endi - + $dbCnt = $dbCnt + 1 sql show stables - print rows: $rows + print rows: $rows print $data00 $data01 print $data10 $data11 - if $rows != 2 then + if $rows != 2 then return -1 endi - if $data00 != Stable then + if $data00 != Stable then if $data00 != stable then return -1 endi @@ -229,86 +229,86 @@ while $dbCnt < 2 return -1 endi endi - + sql show tables - print rows: $rows + print rows: $rows print $data00 $data01 print $data10 $data11 print $data20 $data21 print $data30 $data31 - if $rows != 4 then + if $rows != 4 then return -1 endi - + print =============== query data sql select * from `table` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 10 then - return -1 - endi - if $data02 != table then - return -1 - endi - if $data03 != table then + if $rows != 2 then return -1 endi - + if $data01 != 10 then + return -1 + endi + if $data02 != table then + return -1 + endi + if $data03 != table then + return -1 + endi + sql select * from `Table` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 20 then - return -1 - endi - if $data02 != Table then - return -1 - endi - if $data03 != Table then + if $rows != 2 then return -1 endi - + if $data01 != 20 then + return -1 + endi + if $data02 != Table then + return -1 + endi + if $data03 != Table then + return -1 + endi + sql select * from `TAble` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 30 then - return -1 - endi - if $data02 != TAble then - return -1 - endi - if $data03 != TAble then + if $rows != 2 then return -1 endi - + if $data01 != 30 then + return -1 + endi + if $data02 != TAble then + return -1 + endi + if $data03 != TAble then + return -1 + endi + sql select * from `TABle` - print rows: $rows + print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 - if $rows != 2 then - return -1 - endi - if $data01 != 40 then - return -1 - endi - if $data02 != TABle then - return -1 - endi - if $data03 != TABle then + if $rows != 2 then return -1 endi - + if $data01 != 40 then + return -1 + endi + if $data02 != TABle then + return -1 + endi + if $data03 != TABle then + return -1 + endi + #print =============== query data from st, but not support select * from super table, waiting fix #sql select count(*) from `stable` #print rows: $rows @@ -329,7 +329,7 @@ while $dbCnt < 2 # return -1 #endi #sql select * from `stable` - #if $rows != 4 then + #if $rows != 4 then # return -1 #endi diff --git a/tests/script/tsim/insert/basic.sim b/tests/script/tsim/insert/basic.sim index 20b39c8f00..c4ef3e39da 100644 --- a/tests/script/tsim/insert/basic.sim +++ b/tests/script/tsim/insert/basic.sim @@ -20,26 +20,26 @@ $x = 0 while $x < 10 $cc = $x * 60000 $ms = 1601481600000 + $cc - - sql insert into $tb values ($ms , $x ) + + sql insert into $tb values ($ms , $x ) $x = $x + 1 -endw +endw print =============== step 2 $x = 0 while $x < 5 $cc = $x * 60000 $ms = 1551481600000 + $cc - - sql insert into $tb values ($ms , $x ) + + sql insert into $tb values ($ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb print $rows points data are retrieved -if $rows != 15 then +if $rows != 15 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/basic0.sim b/tests/script/tsim/insert/basic0.sim index 5b506de01f..be023352f9 100644 --- a/tests/script/tsim/insert/basic0.sim +++ b/tests/script/tsim/insert/basic0.sim @@ -18,7 +18,7 @@ print =============== create super table, include column type for count/sum/min/ sql create table if not exists stb (ts timestamp, c1 int, c2 float, c3 double) tags (t1 int unsigned) sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -28,7 +28,7 @@ sql create table ct2 using stb tags(2000) sql create table ct3 using stb tags(3000) sql show tables -if $rows != 3 then +if $rows != 3 then return -1 endi @@ -46,7 +46,7 @@ sql insert into ct3 values('2021-01-01 00:00:00.000', 10, 2.0, 3.0) #=================================================================== print =============== query data from child table sql select * from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 print $data20 $data21 $data22 $data23 @@ -58,111 +58,111 @@ if $data01 != 10 then print expect 10, actual: $data01 return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi print =============== select count(*) from child table sql select count(*) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== select count(column) from child table sql select count(ts), count(c1), count(c2), count(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $data00 != 4 then +if $data00 != 4 then return -1 endi -if $data01 != 4 then +if $data01 != 4 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi #print =============== select first(*)/first(column) from child table sql select first(*) from ct1 print ====> select first(*) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 sql select first(ts), first(c1), first(c2), first(c3) from ct1 print ====> select first(ts), first(c1), first(c2), first(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi print =============== select min(column) from child table sql select min(c1), min(c2), min(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -13 then +if $data00 != -13 then return -1 endi if $data01 != -2.30000 then print expect -2.30000, actual: $data01 return -1 endi -if $data02 != -3.300000000 then +if $data02 != -3.300000000 then return -1 endi print =============== select max(column) from child table sql select max(c1), max(c2), max(c3) from ct1 print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 11 then +if $data00 != 11 then return -1 endi -if $data01 != 2.10000 then +if $data01 != 2.10000 then return -1 endi -if $data02 != 3.100000000 then +if $data02 != 3.100000000 then return -1 endi print =============== select sum(column) from child table sql select sum(c1), sum(c2), sum(c3) from ct1 print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -4 then +if $data00 != -4 then return -1 endi -if $data01 != -0.400000095 then +if $data01 != -0.400000095 then return -1 endi -if $data02 != -0.400000000 then +if $data02 != -0.400000000 then return -1 endi @@ -173,34 +173,34 @@ print $data00 $data01 $data02 print $data10 $data11 $data12 print $data20 $data21 $data22 print $data30 $data31 $data32 -if $rows != 4 then +if $rows != 4 then return -1 endi -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data10 != 11 then +if $data10 != 11 then return -1 endi -if $data11 != 2.10000 then +if $data11 != 2.10000 then return -1 endi -if $data12 != 3.100000000 then +if $data12 != 3.100000000 then return -1 endi -if $data30 != -13 then +if $data30 != -13 then return -1 endi -if $data31 != -2.30000 then +if $data31 != -2.30000 then return -1 endi -if $data32 != -3.300000000 then +if $data32 != -3.300000000 then return -1 endi #=================================================================== @@ -208,17 +208,17 @@ endi #print =============== query data from stb sql select * from stb print $rows -if $rows != 9 then +if $rows != 9 then return -1 endi #print =============== select count(*) from supter table sql select count(*) from stb print $data00 $data01 $data02 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 9 then +if $data00 != 9 then return -1 endi @@ -234,19 +234,19 @@ print $data50 $data51 $data52 $data53 print $data60 $data61 $data62 $data63 print $data70 $data71 $data72 $data73 print $data80 $data81 $data82 $data83 -if $rows != 9 then +if $rows != 9 then return -1 endi -# The order of data from different sub tables in the super table is random, +# The order of data from different sub tables in the super table is random, # so this detection may fail randomly -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi @@ -254,16 +254,16 @@ endi sql select count(ts), count(c1), count(c2), count(c3) from stb print rows: $rows print $data00 $data01 $data02 $data03 -if $data00 != 9 then +if $data00 != 9 then return -1 endi -if $data01 != 9 then +if $data01 != 9 then return -1 endi -if $data02 != 9 then +if $data02 != 9 then return -1 endi -if $data03 != 9 then +if $data03 != 9 then return -1 endi @@ -274,7 +274,7 @@ system sh/exec.sh -n dnode1 -s start print =============== query data from child table sql select * from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 print $data10 $data11 $data12 $data13 print $data20 $data21 $data22 $data23 @@ -282,113 +282,113 @@ print $data30 $data31 $data32 $data33 if $rows != 4 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi print =============== select count(*) from child table sql select count(*) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== select count(column) from child table sql select count(ts), count(c1), count(c2), count(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $data00 != 4 then +if $data00 != 4 then return -1 endi -if $data01 != 4 then +if $data01 != 4 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi #print =============== select first(*)/first(column) from child table sql select first(*) from ct1 print ====> select first(*) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 sql select first(ts), first(c1), first(c2), first(c3) from ct1 print ====> select first(ts), first(c1), first(c2), first(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi print =============== select min(column) from child table sql select min(c1), min(c2), min(c3) from ct1 -print rows: $rows +print rows: $rows print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -13 then +if $data00 != -13 then return -1 endi -if $data01 != -2.30000 then +if $data01 != -2.30000 then return -1 endi -if $data02 != -3.300000000 then +if $data02 != -3.300000000 then return -1 endi print =============== select max(column) from child table sql select max(c1), max(c2), max(c3) from ct1 print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 11 then +if $data00 != 11 then return -1 endi -if $data01 != 2.10000 then +if $data01 != 2.10000 then return -1 endi -if $data02 != 3.100000000 then +if $data02 != 3.100000000 then return -1 endi print =============== select sum(column) from child table sql select sum(c1), sum(c2), sum(c3) from ct1 print $data00 $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -4 then +if $data00 != -4 then return -1 endi -if $data01 != -0.400000095 then +if $data01 != -0.400000095 then return -1 endi -if $data02 != -0.400000000 then +if $data02 != -0.400000000 then return -1 endi @@ -399,51 +399,51 @@ print $data00 $data01 $data02 print $data10 $data11 $data12 print $data20 $data21 $data22 print $data30 $data31 $data32 -if $rows != 4 then +if $rows != 4 then return -1 endi -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data10 != 11 then +if $data10 != 11 then return -1 endi -if $data11 != 2.10000 then +if $data11 != 2.10000 then return -1 endi -if $data12 != 3.100000000 then +if $data12 != 3.100000000 then return -1 endi -if $data30 != -13 then +if $data30 != -13 then return -1 endi -if $data31 != -2.30000 then +if $data31 != -2.30000 then return -1 endi -if $data32 != -3.300000000 then +if $data32 != -3.300000000 then return -1 endi #=================================================================== print =============== query data from stb sql select * from stb -if $rows != 9 then +if $rows != 9 then return -1 -endi +endi print =============== select count(*) from supter table sql select count(*) from stb print $data00 $data01 $data02 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 9 then +if $data00 != 9 then return -1 endi @@ -459,35 +459,35 @@ print $data50 $data51 $data52 $data53 print $data60 $data61 $data62 $data63 print $data70 $data71 $data72 $data73 print $data80 $data81 $data82 $data83 -if $rows != 9 then +if $rows != 9 then return -1 endi -# The order of data from different sub tables in the super table is random, +# The order of data from different sub tables in the super table is random, # so this detection may fail randomly -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi #print =============== select count(column) from supter table sql select count(ts), count(c1), count(c2), count(c3) from stb print $data00 $data01 $data02 $data03 -if $data00 != 9 then +if $data00 != 9 then return -1 endi -if $data01 != 9 then +if $data01 != 9 then return -1 endi -if $data02 != 9 then +if $data02 != 9 then return -1 endi -if $data03 != 9 then +if $data03 != 9 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/basic1.sim b/tests/script/tsim/insert/basic1.sim index 72a883bedf..2e3d6fa513 100644 --- a/tests/script/tsim/insert/basic1.sim +++ b/tests/script/tsim/insert/basic1.sim @@ -21,7 +21,7 @@ sql create table stb_2 (ts timestamp, i int) tags (j int) sql create stable stb_3 (ts timestamp, i int) tags (j int) sql show stables -if $rows != 4 then +if $rows != 4 then return -1 endi @@ -30,7 +30,7 @@ sql create table c1 using stb tags(true, -1, -2, -3, -4, -6.0, -7.0, 'child tbl sql create table c2 using stb tags(false, -1, -2, -3, -4, -6.0, -7.0, 'child tbl 2', 'child tbl 2', '2022-02-25 18:00:00.000', 10, 20, 30, 40) sql show tables -if $rows != 2 then +if $rows != 2 then return -1 endi @@ -39,12 +39,12 @@ sql insert into c1 values(now+0s, true, -1, -2, -3, -4, -6.0, -7.0, 'child tbl 1 print =============== query data sql select * from c1 -print rows: $rows +print rows: $rows print $data00 $data01 -print $data10 $data11 +print $data10 $data11 print $data20 $data21 print $data30 $data31 -if $rows != 4 then +if $rows != 4 then return -1 endi @@ -53,17 +53,17 @@ if $data01 != 1 then return -1 endi -if $data02 != -1 then +if $data02 != -1 then return -1 endi -if $data03 != -2 then +if $data03 != -2 then return -1 endi print =============== query data from st, but not support select * from super table, waiting fix sql select * from stb -if $rows != 4 then +if $rows != 4 then return -1 endi @@ -73,12 +73,12 @@ system sh/exec.sh -n dnode1 -s start print =============== query data sql select * from c1 -print rows: $rows +print rows: $rows print $data00 $data01 -print $data10 $data11 +print $data10 $data11 print $data20 $data21 print $data30 $data31 -if $rows != 4 then +if $rows != 4 then return -1 endi @@ -86,17 +86,17 @@ if $data01 != 1 then return -1 endi -if $data02 != -1 then +if $data02 != -1 then return -1 endi -if $data03 != -2 then +if $data03 != -2 then return -1 endi print =============== query data from st, but not support select * from super table, waiting fix sql select * from stb -if $rows != 4 then +if $rows != 4 then return -1 endi diff --git a/tests/script/tsim/insert/basic2.sim b/tests/script/tsim/insert/basic2.sim index eca46697f5..1794bb54f8 100644 --- a/tests/script/tsim/insert/basic2.sim +++ b/tests/script/tsim/insert/basic2.sim @@ -11,7 +11,7 @@ print =============== create super table sql create table if not exists stb (ts timestamp, c1 int unsigned, c2 double, c3 binary(10), c4 nchar(10), c5 double) tags (city binary(20),district binary(20)); sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -20,7 +20,7 @@ sql create table ct1 using stb tags("BeiJing", "ChaoYang") sql create table ct2 using stb tags("BeiJing", "HaiDian") sql show tables -if $rows != 2 then +if $rows != 2 then return -1 endi @@ -47,7 +47,7 @@ print $data20 $data21 $data22 $data23 $data24 $data25 print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 -if $rows != 5 then +if $rows != 5 then print rows $rows != 5 return -1 endi @@ -189,7 +189,7 @@ print $data20 $data21 $data22 $data23 $data24 $data25 print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 -if $rows != 5 then +if $rows != 5 then print rows $rows != 5 return -1 endi @@ -319,4 +319,4 @@ if $data45 != 30.000000000 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/commit-merge0.sim b/tests/script/tsim/insert/commit-merge0.sim index dfc22354d2..da66560cbd 100644 --- a/tests/script/tsim/insert/commit-merge0.sim +++ b/tests/script/tsim/insert/commit-merge0.sim @@ -63,7 +63,7 @@ reboot_and_check: system sh/exec.sh -n dnode1 -s stop -x SIGINT system sh/exec.sh -n dnode1 -s start -print =============== insert duplicated records to memory - loop $reboot_max - $reboot_cnt +print =============== insert duplicated records to memory - loop $reboot_max - $reboot_cnt sql use db sql insert into ct1 values ('2022-05-01 18:30:27.001', 0.0); sql insert into ct4 values ('2022-04-28 18:30:27.002', 0.0); @@ -91,7 +91,7 @@ sql insert into ct4 values ('2018-05-01 18:30:27.023', NULL) ; sql insert into ct4 values ('2021-03-01 18:30:27.024', NULL) ; sql insert into ct4 values ('2022-08-01 18:30:27.025', NULL) ; -print =============== select * from ct1 - merge memory and file - loop $reboot_max - $reboot_cnt +print =============== select * from ct1 - merge memory and file - loop $reboot_max - $reboot_cnt sql select * from ct1; if $rows != 13 then print rows = $rows != 13 @@ -163,8 +163,8 @@ if $data[12][1] != -99.990000000 then print $data[12][1] != -99.990000000 return -1 endi - -print =============== select * from ct4 - merge memory and file - loop $reboot_max - $reboot_cnt + +print =============== select * from ct4 - merge memory and file - loop $reboot_max - $reboot_cnt sql select * from ct4; if $rows != 12 then print rows = $rows != 12 diff --git a/tests/script/tsim/insert/insert_drop.sim b/tests/script/tsim/insert/insert_drop.sim index 020fd367ae..467eb3a702 100644 --- a/tests/script/tsim/insert/insert_drop.sim +++ b/tests/script/tsim/insert/insert_drop.sim @@ -25,16 +25,16 @@ $ts = $ts0 while $i < 10 $tb = tb . $i sql create table $tb using $stb tags( $i ) - + $x = 0 while $x < $rowNum $xs = $x * $delta $ts = $ts0 + $xs - sql insert into $tb values ( $ts , $x ) + sql insert into $tb values ( $ts , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print ====== tables created print ================== restart server to commit data into disk @@ -46,18 +46,18 @@ sql use $db sql drop table tb5 $i = 0 while $i < 4 - + $tb = tb . $i $x = 0 while $x < $rowNum $xs = $x * $delta $ts = $ts0 + $xs - sql insert into $tb values ( $ts , $x ) + sql insert into $tb values ( $ts , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print ================== restart server to commit data into disk system sh/exec.sh -n dnode1 -s stop -x SIGINT @@ -73,4 +73,4 @@ if $rows != 0 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/insert_select.sim b/tests/script/tsim/insert/insert_select.sim index c44197d7d4..e3374ee277 100644 --- a/tests/script/tsim/insert/insert_select.sim +++ b/tests/script/tsim/insert/insert_select.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql drop database if exists db1; sql create database db1 vgroups 3; sql use db1; diff --git a/tests/script/tsim/insert/null.sim b/tests/script/tsim/insert/null.sim index 49adb8ebe0..57aef3f6a5 100644 --- a/tests/script/tsim/insert/null.sim +++ b/tests/script/tsim/insert/null.sim @@ -18,7 +18,7 @@ print =============== create super table, include column type for count/sum/min/ sql create table if not exists stb (ts timestamp, c1 int, c2 float, c3 double, c4 bigint) tags (t1 int unsigned) sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -28,7 +28,7 @@ sql create table ct2 using stb tags(2000) sql create table ct3 using stb tags(3000) sql show tables -if $rows != 3 then +if $rows != 3 then return -1 endi @@ -55,22 +55,22 @@ print ===> rows4: $data40 $data41 $data42 $data43 $data44 if $rows != 12 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi -#if $data41 != -14 then +#if $data41 != -14 then # return -1 #endi -#if $data42 != -2.40000 then +#if $data42 != -2.40000 then # return -1 #endi -#if $data43 != -3.400000000 then +#if $data43 != -3.400000000 then # return -1 #endi @@ -79,10 +79,10 @@ sql select count(*) from ct1 print ===> select count(*) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 12 then +if $data00 != 12 then return -1 endi @@ -91,16 +91,16 @@ sql select count(ts), count(c1), count(c2), count(c3) from ct1 print ===> select count(ts), count(c1), count(c2), count(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $data00 != 12 then +if $data00 != 12 then return -1 endi -if $data01 != 8 then +if $data01 != 8 then return -1 endi -if $data02 != 8 then +if $data02 != 8 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi @@ -113,16 +113,16 @@ sql select min(c1), min(c2), min(c3) from ct1 print ===> select min(c1), min(c2), min(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -2147483647 then +if $data00 != -2147483647 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi @@ -131,16 +131,16 @@ sql select max(c1), max(c2), max(c3) from ct1 print ===> select max(c1), max(c2), max(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 16 then +if $data00 != 16 then return -1 endi -if $data01 != 2.70000 then +if $data01 != 2.70000 then return -1 endi -if $data02 != 3.700000000 then +if $data02 != 3.700000000 then return -1 endi @@ -149,16 +149,16 @@ sql select sum(c1), sum(c2), sum(c3) from ct1 print ===> select sum(c1), sum(c2), sum(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -2147483556 then +if $data00 != -2147483556 then return -1 endi -if $data01 != 18.799999952 then +if $data01 != 18.799999952 then return -1 endi -if $data02 != 26.800000000 then +if $data02 != 26.800000000 then return -1 endi @@ -167,43 +167,43 @@ sql select c1, c2, c3 from ct1 print ===> select c1, c2, c3 from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 12 then +if $rows != 12 then return -1 endi -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data10 != NULL then +if $data10 != NULL then return -1 endi -if $data11 != NULL then +if $data11 != NULL then return -1 endi -if $data12 != NULL then +if $data12 != NULL then return -1 endi -if $data30 != 11 then +if $data30 != 11 then return -1 endi -if $data31 != NULL then +if $data31 != NULL then return -1 endi -if $data32 != 3.200000000 then +if $data32 != 3.200000000 then return -1 endi -if $data90 != 16 then +if $data90 != 16 then return -1 endi -if $data91 != 2.60000 then +if $data91 != 2.60000 then return -1 endi -if $data92 != 3.600000000 then +if $data92 != 3.600000000 then return -1 endi #=================================================================== @@ -211,36 +211,36 @@ endi #print =============== query data from stb sql select * from stb -print ===> +print ===> print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 12 then +if $rows != 12 then return -1 endi #print =============== select count(*) from supter table sql select count(*) from stb print $data00 $data01 $data02 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 12 then +if $data00 != 12 then return -1 endi #print =============== select count(column) from supter table sql select count(ts), count(c1), count(c2), count(c3) from stb print $data00 $data01 $data02 $data03 -if $data00 != 12 then +if $data00 != 12 then return -1 endi -if $data01 != 8 then +if $data01 != 8 then return -1 endi -if $data02 != 8 then +if $data02 != 8 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi @@ -264,22 +264,22 @@ print ===> rows4: $data40 $data41 $data42 $data43 $data44 if $rows != 12 then return -1 endi -if $data01 != 10 then +if $data01 != 10 then return -1 endi -if $data02 != 2.00000 then +if $data02 != 2.00000 then return -1 endi -if $data03 != 3.000000000 then +if $data03 != 3.000000000 then return -1 endi -if $data41 != 12 then +if $data41 != 12 then return -1 endi -if $data42 != 2.20000 then +if $data42 != 2.20000 then return -1 endi -if $data43 != NULL then +if $data43 != NULL then return -1 endi @@ -288,10 +288,10 @@ sql select count(*) from ct1 print ===> select count(*) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 12 then +if $data00 != 12 then return -1 endi @@ -300,16 +300,16 @@ sql select count(ts), count(c1), count(c2), count(c3) from ct1 print ===> select count(ts), count(c1), count(c2), count(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $data00 != 12 then +if $data00 != 12 then return -1 endi -if $data01 != 8 then +if $data01 != 8 then return -1 endi -if $data02 != 8 then +if $data02 != 8 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi @@ -322,16 +322,16 @@ sql select min(c1), min(c2), min(c3) from ct1 print ===> select min(c1), min(c2), min(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -2147483647 then +if $data00 != -2147483647 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi @@ -340,16 +340,16 @@ sql select max(c1), max(c2), max(c3) from ct1 print ===> select max(c1), max(c2), max(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 16 then +if $data00 != 16 then return -1 endi -if $data01 != 2.70000 then +if $data01 != 2.70000 then return -1 endi -if $data02 != 3.700000000 then +if $data02 != 3.700000000 then return -1 endi @@ -358,16 +358,16 @@ sql select sum(c1), sum(c2), sum(c3) from ct1 print ===> select sum(c1), sum(c2), sum(c3) from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != -2147483556 then +if $data00 != -2147483556 then return -1 endi -if $data01 != 18.799999952 then +if $data01 != 18.799999952 then return -1 endi -if $data02 != 26.800000000 then +if $data02 != 26.800000000 then return -1 endi @@ -376,78 +376,78 @@ sql select c1, c2, c3 from ct1 print ===> select c1, c2, c3 from ct1 print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 12 then +if $rows != 12 then return -1 endi -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data01 != 2.00000 then +if $data01 != 2.00000 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data10 != NULL then +if $data10 != NULL then return -1 endi -if $data11 != NULL then +if $data11 != NULL then return -1 endi -if $data12 != NULL then +if $data12 != NULL then return -1 endi -if $data30 != 11 then +if $data30 != 11 then return -1 endi -if $data31 != NULL then +if $data31 != NULL then return -1 endi -if $data32 != 3.200000000 then +if $data32 != 3.200000000 then return -1 endi -if $data90 != 16 then +if $data90 != 16 then return -1 endi -if $data91 != 2.60000 then +if $data91 != 2.60000 then return -1 endi -if $data92 != 3.600000000 then +if $data92 != 3.600000000 then return -1 endi #=================================================================== print =============== query data from stb sql select * from stb -print ===> +print ===> print ===> rows: $rows print ===> rows0: $data00 $data01 $data02 $data03 $data04 -if $rows != 12 then +if $rows != 12 then return -1 endi print =============== select count(*) from supter table sql select count(*) from stb print $data00 $data01 $data02 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data00 != 12 then +if $data00 != 12 then return -1 endi print =============== select count(column) from supter table sql select count(ts), count(c1), count(c2), count(c3) from stb print $data00 $data01 $data02 $data03 -if $data00 != 12 then +if $data00 != 12 then return -1 endi -if $data01 != 8 then +if $data01 != 8 then return -1 endi -if $data02 != 8 then +if $data02 != 8 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi diff --git a/tests/script/tsim/insert/query_block1_file.sim b/tests/script/tsim/insert/query_block1_file.sim index c6bda6d061..8d2d2664d7 100644 --- a/tests/script/tsim/insert/query_block1_file.sim +++ b/tests/script/tsim/insert/query_block1_file.sim @@ -16,36 +16,36 @@ sql create database $db sql use $db sql create table $tb (ts timestamp, speed int) -#commit to file will trigger if insert 82 rows +#commit to file will trigger if insert 82 rows -$N = 82 +$N = 82 print =============== step 1 $x = $N $y = $N / 2 while $x > $y $ms = $x . m - $xt = - . $x - sql insert into $tb values (now - $ms , -$x ) + $xt = - . $x + sql insert into $tb values (now - $ms , -$x ) $x = $x - 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $y then +print sql select * from $tb -> $rows points +if $rows != $y then return -1 endi $x = $N / 2 $y = $N while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $N then +print sql select * from $tb -> $rows points +if $rows != $N then return -1 endi @@ -53,18 +53,18 @@ print =============== step 2 $R = 4 $x = $N * 2 -$y = $N * $R +$y = $N * $R $expect = $y + $N $y = $y + $x while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi @@ -100,7 +100,7 @@ endi sql select * from $tb where ts < $start2 and ts > $end1 print select * from $tb where ts < $start2 and ts > $end1 -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -115,23 +115,23 @@ if $rows != 0 then endi sql select * from $tb where ts < $start3 and ts > $end1 -print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points -if $rows != $result2 then +print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points +if $rows != $result2 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end2 -print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points -if $rows != $result1 then +print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points +if $rows != $result1 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end3 +sql select * from $tb where ts < $start3 and ts > $end3 if $rows != 0 then return -1 endi -print ================= order by ts desc +print ================= order by ts desc sql select * from $tb where ts < $start1 and ts > $end1 order by ts desc if $rows != 0 then @@ -148,9 +148,9 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc +sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc print select * from $tb where ts < $start2 and ts > $end1 order by ts desc -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -164,15 +164,15 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points -if $rows != $result2 then +sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points +if $rows != $result2 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points -if $rows != $result1 then +sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points +if $rows != $result1 then return -1 endi @@ -185,8 +185,8 @@ clear: sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/query_block1_memory.sim b/tests/script/tsim/insert/query_block1_memory.sim index 110255bd90..168f0e19c9 100644 --- a/tests/script/tsim/insert/query_block1_memory.sim +++ b/tests/script/tsim/insert/query_block1_memory.sim @@ -17,9 +17,9 @@ sql use $db sql create table $tb (ts timestamp, speed int) -#commit to file will trigger if insert 82 rows +#commit to file will trigger if insert 82 rows -$N = 82 +$N = 82 print =============== step 1 $x = $N @@ -28,14 +28,14 @@ while $x > $y $z = $x * 60000 $ms = 1601481600000 - $z - $xt = - . $x - sql insert into $tb values ($ms , -$x ) + $xt = - . $x + sql insert into $tb values ($ms , -$x ) $x = $x - 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $y then +print sql select * from $tb -> $rows points +if $rows != $y then return -1 endi @@ -45,12 +45,12 @@ while $x < $y $z = $x * 60000 $ms = 1601481600000 + $z - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $N then +print sql select * from $tb -> $rows points +if $rows != $N then return -1 endi @@ -69,100 +69,100 @@ $end2 = 1601481600000 $end3 = 1601481600000 + $step sql select * from $tb where ts < $start1 and ts > $end1 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end2 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end1 print select * from $tb where ts < $start2 and ts > $end1 -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end2 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end1 -print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points -if $rows != $result2 then +print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points +if $rows != $result2 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end2 -print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points -if $rows != $result1 then +print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi -print ================= order by ts desc +print ================= order by ts desc sql select * from $tb where ts < $start1 and ts > $end1 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end2 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc +sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc print select * from $tb where ts < $start2 and ts > $end1 order by ts desc -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end2 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points -if $rows != $result2 then +sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points +if $rows != $result2 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points -if $rows != $result1 then +sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -170,8 +170,8 @@ clear: sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/query_block2_file.sim b/tests/script/tsim/insert/query_block2_file.sim index c87262ab14..804051c44a 100644 --- a/tests/script/tsim/insert/query_block2_file.sim +++ b/tests/script/tsim/insert/query_block2_file.sim @@ -16,23 +16,23 @@ sql create database $db sql use $db sql create table $tb (ts timestamp, speed int) -#commit to file will trigger if insert 82 rows -$N = 82 +#commit to file will trigger if insert 82 rows +$N = 82 print =============== step 1 $x = $N * 2 $y = $N $expect = $N while $x > $y - $ms = $x . m - $xt = - . $x - sql insert into $tb values (now - $ms , $xt ) + $ms = $x . m + $xt = - . $x + sql insert into $tb values (now - $ms , $xt ) $x = $x - 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi @@ -40,20 +40,20 @@ $x = $N $y = $N * 2 $expect = $N * 2 while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi print =============== step 2 $R = 4 -$y = $N * $R +$y = $N * $R $expect = $y + $N $expect = $expect + $N @@ -62,17 +62,17 @@ $x = $N * 3 $y = $y + $x while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi - + print =============== step 2 @@ -106,7 +106,7 @@ endi sql select * from $tb where ts < $start2 and ts > $end1 print select * from $tb where ts < $start2 and ts > $end1 -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -121,14 +121,14 @@ if $rows != 0 then endi sql select * from $tb where ts < $start3 and ts > $end1 -print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points -if $rows != $result2 then +print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points +if $rows != $result2 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end2 -print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points -if $rows != $result1 then +print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points +if $rows != $result1 then return -1 endi @@ -137,7 +137,7 @@ if $rows != 0 then return -1 endi -print ================= order by ts desc +print ================= order by ts desc sql select * from $tb where ts < $start1 and ts > $end1 order by ts desc if $rows != 0 then @@ -154,9 +154,9 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc +sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc print select * from $tb where ts < $start2 and ts > $end1 order by ts desc -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -170,15 +170,15 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points -if $rows != $result2 then +sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points +if $rows != $result2 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points -if $rows != $result1 then +sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points +if $rows != $result1 then return -1 endi @@ -191,8 +191,8 @@ clear: sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/query_block2_memory.sim b/tests/script/tsim/insert/query_block2_memory.sim index f919a2a61f..2504e905b7 100644 --- a/tests/script/tsim/insert/query_block2_memory.sim +++ b/tests/script/tsim/insert/query_block2_memory.sim @@ -14,22 +14,22 @@ sql drop database -x step1 step1: sql create database $db sql use $db -sql create table $tb (ts timestamp, speed int) +sql create table $tb (ts timestamp, speed int) -$N = 82 +$N = 82 $x = $N * 2 $y = $N while $x > $y - $ms = $x . m - $xt = - . $x - sql insert into $tb values (now - $ms , $xt ) + $ms = $x . m + $xt = - . $x + sql insert into $tb values (now - $ms , $xt ) $x = $x - 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $y then +print sql select * from $tb -> $rows points +if $rows != $y then return -1 endi @@ -37,13 +37,13 @@ $x = $N $y = $N * 2 $expect = $N * 2 while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi @@ -63,107 +63,107 @@ $end2 = now $end3 = now+ . $step sql select * from $tb where ts < $start1 and ts > $end1 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end2 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end1 print select * from $tb where ts < $start2 and ts > $end1 -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end2 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end1 print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points -if $rows != $result2 then +if $rows != $result2 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end2 -print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points -if $rows != $result1 then +print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end3 -if $rows != 0 then +if $rows != 0 then return -1 endi -print ================= order by ts desc +print ================= order by ts desc sql select * from $tb where ts < $start1 and ts > $end1 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end2 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start1 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc +sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc print select * from $tb where ts < $start2 and ts > $end1 order by ts desc -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end2 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts < $start2 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points -if $rows != $result2 then +sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points +if $rows != $result2 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points -if $rows != $result1 then +sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points +if $rows != $result1 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end3 order by ts desc -if $rows != 0 then +if $rows != 0 then return -1 endi sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/query_file_memory.sim b/tests/script/tsim/insert/query_file_memory.sim index 0d37484494..325d7977b6 100644 --- a/tests/script/tsim/insert/query_file_memory.sim +++ b/tests/script/tsim/insert/query_file_memory.sim @@ -17,23 +17,23 @@ sql use $db sql create table $tb (ts timestamp, speed int) -#commit to file will trigger if insert 82 rows +#commit to file will trigger if insert 82 rows -$N = 82 +$N = 82 $x = $N * 2 $y = $N $expect = $y while $x > $y - $ms = $x . m - $xt = - . $x - sql insert into $tb values (now - $ms , $xt ) + $ms = $x . m + $xt = - . $x + sql insert into $tb values (now - $ms , $xt ) $x = $x - 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi @@ -41,37 +41,37 @@ $x = $N $y = $N * 2 $expect = $N * 2 while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi $R = 4 $R = $R - 1 -$y = $N * $R +$y = $N * $R $expect = $y + $N $expect = $expect + $N $x = $N * 3 $y = $y + $x while $x < $y - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 -endw +endw sql select * from $tb -print sql select * from $tb -> $rows points -if $rows != $expect then +print sql select * from $tb -> $rows points +if $rows != $expect then return -1 endi - + print =============== step 2 @@ -105,7 +105,7 @@ endi sql select * from $tb where ts < $start2 and ts > $end1 print select * from $tb where ts < $start2 and ts > $end1 -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -120,14 +120,14 @@ if $rows != 0 then endi sql select * from $tb where ts < $start3 and ts > $end1 -print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points -if $rows != $result2 then +print sql select * from $tb where ts < $start3 and ts > $end1 -> $rows points +if $rows != $result2 then return -1 endi sql select * from $tb where ts < $start3 and ts > $end2 -print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points -if $rows != $result1 then +print sql select * from $tb where ts < $start3 and ts > $end2 -> $rows points +if $rows != $result1 then return -1 endi @@ -136,7 +136,7 @@ if $rows != 0 then return -1 endi -print ================= order by ts desc +print ================= order by ts desc sql select * from $tb where ts < $start1 and ts > $end1 order by ts desc if $rows != 0 then @@ -153,9 +153,9 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc +sql select * from $tb where ts < $start2 and ts > $end1 order by ts desc print select * from $tb where ts < $start2 and ts > $end1 order by ts desc -> $rows points -if $rows != $result1 then +if $rows != $result1 then return -1 endi @@ -169,15 +169,15 @@ if $rows != 0 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points -if $rows != $result2 then +sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end1 order by ts desc -> $rows points +if $rows != $result2 then return -1 endi -sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points -if $rows != $result1 then +sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc +print sql select * from $tb where ts < $start3 and ts > $end2 order by ts desc -> $rows points +if $rows != $result1 then return -1 endi @@ -190,8 +190,8 @@ clear: sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/query_multi_file.sim b/tests/script/tsim/insert/query_multi_file.sim index 750eb04029..1b3ad57c8e 100644 --- a/tests/script/tsim/insert/query_multi_file.sim +++ b/tests/script/tsim/insert/query_multi_file.sim @@ -15,18 +15,18 @@ step1: sql create database $db sql use $db -sql create table $tb (ts timestamp, speed int) +sql create table $tb (ts timestamp, speed int) $N = 20000 $x = 0 while $x < $N - $ms = $x . s + $ms = $x . s #print insert into $tb values (now + $ms , $x ) sql insert into $tb values (now + $ms , $x ) -x error_insert $x = $x + 1 -endw +endw error_insert: sql select * from $tb @@ -37,8 +37,8 @@ endi sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/tcp.sim b/tests/script/tsim/insert/tcp.sim index 2dc720a0d4..7eb06e82fb 100644 --- a/tests/script/tsim/insert/tcp.sim +++ b/tests/script/tsim/insert/tcp.sim @@ -21,8 +21,8 @@ while $x < 10000 $ms = $x . s sql insert into tb values (now + $ms , '1' ) $x = $x + 1 -endw +endw sql select * from tb -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/update0.sim b/tests/script/tsim/insert/update0.sim index c4bd29615b..6384b5a21f 100644 --- a/tests/script/tsim/insert/update0.sim +++ b/tests/script/tsim/insert/update0.sim @@ -11,7 +11,7 @@ print =============== create super table sql create table if not exists stb (ts timestamp, c1 int) tags (city binary(20),district binary(20)); sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -20,7 +20,7 @@ sql create table ct1 using stb tags("BeiJing", "ChaoYang") sql create table ct2 using stb tags("BeiJing", "HaiDian") sql show tables -if $rows != 2 then +if $rows != 2 then return -1 endi @@ -43,7 +43,7 @@ print $data30 $data31 print $data40 $data41 print $data50 $data51 -if $rows != 6 then +if $rows != 6 then print rows $rows != 6 return -1 endi @@ -74,7 +74,7 @@ print $data00 $data01 print $data10 $data11 print $data20 $data21 -if $rows != 3 then +if $rows != 3 then print rows $rows != 3 return -1 endi @@ -107,7 +107,7 @@ print $data30 $data31 print $data40 $data41 print $data50 $data51 -if $rows != 6 then +if $rows != 6 then print rows $rows != 6 return -1 endi @@ -133,7 +133,7 @@ print $data00 $data01 print $data10 $data11 print $data20 $data21 -if $rows != 3 then +if $rows != 3 then print rows $rows != 3 return -1 endi @@ -166,7 +166,7 @@ print $data30 $data31 print $data40 $data41 print $data50 $data51 -if $rows != 6 then +if $rows != 6 then print rows $rows != 6 return -1 endi @@ -198,7 +198,7 @@ print $data20 $data21 print $data30 $data31 print $data40 $data41 -if $rows != 5 then +if $rows != 5 then print rows $rows != 5 return -1 endi @@ -228,4 +228,4 @@ if $data41 != NULL then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/insert/update1_sort_merge.sim b/tests/script/tsim/insert/update1_sort_merge.sim index 13462520ea..5a69a01acb 100644 --- a/tests/script/tsim/insert/update1_sort_merge.sim +++ b/tests/script/tsim/insert/update1_sort_merge.sim @@ -13,7 +13,7 @@ print =============== create super table sql create table if not exists stb (ts timestamp, c1 int unsigned, c2 double, c3 binary(10), c4 nchar(10), c5 double) tags (city binary(20),district binary(20)); sql show stables -if $rows != 1 then +if $rows != 1 then return -1 endi @@ -24,7 +24,7 @@ sql create table ct3 using stb tags("BeiJing", "PingGu") sql create table ct4 using stb tags("BeiJing", "YanQing") sql show tables -if $rows != 4 then +if $rows != 4 then print rows $rows != 4 return -1 endi @@ -69,7 +69,7 @@ print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 print $data50 $data51 $data52 $data53 $data54 $data55 -if $rows != 6 then +if $rows != 6 then print rows $rows != 6 return -1 endi @@ -154,7 +154,7 @@ print =============== step 6 query records of ct2 from memory(taosc and taosd me sql select * from ct2; print $data00 $data01 $data02 $data03 $data04 $data05 -if $rows != 1 then +if $rows != 1 then print rows $rows != 1 return -1 endi @@ -196,12 +196,12 @@ print $data60 $data61 $data62 $data63 $data64 $data65 print $data70 $data71 $data72 $data73 $data74 $data75 print $data80 $data81 $data82 $data83 $data84 $data85 print $data90 $data91 $data92 $data93 $data94 $data95 -print $data[10][0] $data[10][1] $data[10][2] $data[10][3] $data[10][4] $data[10][5] -print $data[11][0] $data[11][1] $data[11][2] $data[11][3] $data[11][4] $data[11][5] -print $data[12][0] $data[12][1] $data[12][2] $data[12][3] $data[12][4] $data[12][5] -print $data[13][0] $data[13][1] $data[13][2] $data[13][3] $data[13][4] $data[13][5] +print $data[10][0] $data[10][1] $data[10][2] $data[10][3] $data[10][4] $data[10][5] +print $data[11][0] $data[11][1] $data[11][2] $data[11][3] $data[11][4] $data[11][5] +print $data[12][0] $data[12][1] $data[12][2] $data[12][3] $data[12][4] $data[12][5] +print $data[13][0] $data[13][1] $data[13][2] $data[13][3] $data[13][4] $data[13][5] -if $rows != 14 then +if $rows != 14 then print rows $rows != 14 return -1 endi @@ -356,7 +356,7 @@ print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 -if $rows != 5 then +if $rows != 5 then print rows $rows != 5 return -1 endi @@ -451,7 +451,7 @@ print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 print $data50 $data51 $data52 $data53 $data54 $data55 -if $rows != 6 then +if $rows != 6 then print rows $rows != 6 return -1 endi @@ -536,7 +536,7 @@ print =============== step 10 query records of ct2 from file sql select * from ct2; print $data00 $data01 $data02 $data03 $data04 $data05 -if $rows != 1 then +if $rows != 1 then print rows $rows != 1 return -1 endi @@ -578,12 +578,12 @@ print $data60 $data61 $data62 $data63 $data64 $data65 print $data70 $data71 $data72 $data73 $data74 $data75 print $data80 $data81 $data82 $data83 $data84 $data85 print $data90 $data91 $data92 $data93 $data94 $data95 -print $data[10][0] $data[10][1] $data[10][2] $data[10][3] $data[10][4] $data[10][5] -print $data[11][0] $data[11][1] $data[11][2] $data[11][3] $data[11][4] $data[11][5] -print $data[12][0] $data[12][1] $data[12][2] $data[12][3] $data[12][4] $data[12][5] -print $data[13][0] $data[13][1] $data[13][2] $data[13][3] $data[13][4] $data[13][5] +print $data[10][0] $data[10][1] $data[10][2] $data[10][3] $data[10][4] $data[10][5] +print $data[11][0] $data[11][1] $data[11][2] $data[11][3] $data[11][4] $data[11][5] +print $data[12][0] $data[12][1] $data[12][2] $data[12][3] $data[12][4] $data[12][5] +print $data[13][0] $data[13][1] $data[13][2] $data[13][3] $data[13][4] $data[13][5] -if $rows != 14 then +if $rows != 14 then print rows $rows != 14 return -1 endi @@ -738,7 +738,7 @@ print $data30 $data31 $data32 $data33 $data34 $data35 print $data40 $data41 $data42 $data43 $data44 $data45 -if $rows != 5 then +if $rows != 5 then print rows $rows != 5 return -1 endi @@ -818,4 +818,4 @@ if $data44 != n8 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT From 9d4c19ac4891ef0a5e87010ec847bb9010bf726e Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:10:07 +0800 Subject: [PATCH 019/108] fix(query): fix test cases --- tests/script/tsim/compute/avg.sim | 48 ++++++------- tests/script/tsim/compute/block_dist.sim | 16 ++--- tests/script/tsim/compute/bottom.sim | 30 ++++---- tests/script/tsim/compute/count.sim | 56 +++++++-------- tests/script/tsim/compute/diff.sim | 22 +++--- tests/script/tsim/compute/diff2.sim | 40 +++++------ tests/script/tsim/compute/first.sim | 48 ++++++------- tests/script/tsim/compute/interval.sim | 74 +++++++++---------- tests/script/tsim/compute/last.sim | 48 ++++++------- tests/script/tsim/compute/last_row.sim | 58 +++++++-------- tests/script/tsim/compute/leastsquare.sim | 18 ++--- tests/script/tsim/compute/max.sim | 50 ++++++------- tests/script/tsim/compute/min.sim | 48 ++++++------- tests/script/tsim/compute/null.sim | 86 +++++++++++------------ tests/script/tsim/compute/percentile.sim | 32 ++++----- tests/script/tsim/compute/stddev.sim | 30 ++++---- tests/script/tsim/compute/sum.sim | 50 ++++++------- tests/script/tsim/compute/top.sim | 30 ++++---- 18 files changed, 392 insertions(+), 392 deletions(-) diff --git a/tests/script/tsim/compute/avg.sim b/tests/script/tsim/compute/avg.sim index 41a3a48251..2f7e9b83b0 100644 --- a/tests/script/tsim/compute/avg.sim +++ b/tests/script/tsim/compute/avg.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select avg(tbcol) from $tb print ===> $data00 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi @@ -53,27 +53,27 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select avg(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 2.000000000 then +if $data00 != 2.000000000 then return -1 endi print =============== step4 sql select avg(tbcol) as b from $tb print ===> $data00 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi print =============== step5 sql select avg(tbcol) as b from $tb interval(1m) print ===> $data01 -if $data10 != 1.000000000 then +if $data10 != 1.000000000 then return -1 endi sql select avg(tbcol) as b from $tb interval(1d) print ===> $data01 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi @@ -82,17 +82,17 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select avg(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data01 -if $data40 != 4.000000000 then +if $data40 != 4.000000000 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select avg(tbcol) from $mt print ===> $data00 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi @@ -101,13 +101,13 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select avg(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 2.000000000 then +if $data00 != 2.000000000 then return -1 endi sql select avg(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi @@ -115,31 +115,31 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select avg(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 2.000000000 then +if $data00 != 2.000000000 then return -1 endi print =============== step9 sql select avg(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 != 1.000000000 then +if $data10 != 1.000000000 then return -1 endi sql select avg(tbcol) as b from $mt interval(1d) print ===> $data01 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi print =============== step10 sql select avg(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 9.500000000 then +if $data00 != 9.500000000 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -148,18 +148,18 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select avg(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data10 -if $data10 != 1.000000000 then +if $data10 != 1.000000000 then return -1 endi -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/block_dist.sim b/tests/script/tsim/compute/block_dist.sim index ad33575153..2d0a4e8902 100644 --- a/tests/script/tsim/compute/block_dist.sim +++ b/tests/script/tsim/compute/block_dist.sim @@ -27,25 +27,25 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw sql create table $nt (ts timestamp, tbcol int) $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $nt values ($ms , $x ) - $x = $x + 1 + sql insert into $nt values ($ms , $x ) + $x = $x + 1 endw sql flush database $db @@ -94,7 +94,7 @@ sql_error select _block_dist() from (select * from $mt) print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi diff --git a/tests/script/tsim/compute/bottom.sim b/tests/script/tsim/compute/bottom.sim index 141d7f314b..4ccaaf8412 100644 --- a/tests/script/tsim/compute/bottom.sim +++ b/tests/script/tsim/compute/bottom.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select bottom(tbcol, 1) from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -53,24 +53,24 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select bottom(tbcol, 1) from $tb where ts > $ms print ===> $data00 -if $data00 != 5 then +if $data00 != 5 then return -1 endi print =============== step4 sql select bottom(tbcol, 1) as b from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step5 -sql select bottom(tbcol, 2) as b from $tb +sql select bottom(tbcol, 2) as b from $tb print ===> $data00 $data10 -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $data10 != 0 then +if $data10 != 0 then return -1 endi @@ -79,10 +79,10 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select bottom(tbcol, 2) as b from $tb where ts > $ms print ===> $data00 $data10 -if $data00 != 6 then +if $data00 != 6 then return -1 endi -if $data10 != 5 then +if $data10 != 5 then return -1 endi @@ -93,8 +93,8 @@ step6: print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/count.sim b/tests/script/tsim/compute/count.sim index ae8a851559..44038d5195 100644 --- a/tests/script/tsim/compute/count.sim +++ b/tests/script/tsim/compute/count.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,19 +44,19 @@ $tb = $tbPrefix . $i sql select count(*) from $tb print ===> select count(*) from $tb => $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi sql select count(1) from $tb print ===> select count(1) from $tb => $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi sql select count(tbcol) from $tb print ===> $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi @@ -65,27 +65,27 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 5 then +if $data00 != 5 then return -1 endi print =============== step4 sql select count(tbcol) as b from $tb print ===> $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi print =============== step5 sql select count(tbcol) as b from $tb interval(1m) print ===> $data00 -if $data00 != 1 then +if $data00 != 1 then return -1 endi sql select count(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi @@ -94,30 +94,30 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data00 -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select count(*) from $mt print ===> $data00 -if $data00 != $totalNum then +if $data00 != $totalNum then return -1 endi print =============== step8 sql select count(1) from $mt print ===> $data00 -if $data00 != $totalNum then +if $data00 != $totalNum then return -1 endi sql select count(tbcol) from $mt print ===> $data00 -if $data00 != $totalNum then +if $data00 != $totalNum then return -1 endi @@ -126,13 +126,13 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 50 then +if $data00 != 50 then return -1 endi sql select count(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 100 then +if $data00 != 100 then return -1 endi @@ -140,34 +140,34 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 25 then +if $data00 != 25 then return -1 endi print =============== step9 sql select count(tbcol) as b from $mt interval(1m) print ===> $data00 -if $data00 != 10 then +if $data00 != 10 then return -1 endi -if $data10 != 10 then +if $data10 != 10 then return -1 endi sql select count(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 200 then +if $data00 != 200 then return -1 endi print =============== step10 sql select count(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != $rowNum then +if $data00 != $rowNum then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -176,17 +176,17 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data01 -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi diff --git a/tests/script/tsim/compute/diff.sim b/tests/script/tsim/compute/diff.sim index 0882b835c8..7e69f40b97 100644 --- a/tests/script/tsim/compute/diff.sim +++ b/tests/script/tsim/compute/diff.sim @@ -25,17 +25,17 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -43,7 +43,7 @@ $tb = $tbPrefix . $i sql select diff(tbcol) from $tb print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi @@ -52,7 +52,7 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select diff(tbcol) from $tb where ts > $ms print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi @@ -60,14 +60,14 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select diff(tbcol) from $tb where ts <= $ms print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi print =============== step4 sql select diff(tbcol) as b from $tb print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi @@ -86,8 +86,8 @@ step6: print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/diff2.sim b/tests/script/tsim/compute/diff2.sim index bd8a1223be..1cc2a87839 100644 --- a/tests/script/tsim/compute/diff2.sim +++ b/tests/script/tsim/compute/diff2.sim @@ -26,19 +26,19 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc $tinyint = $x / 128 - sql insert into $tb values ($ms , $x , $x , $x , $x , $tinyint , $x , $x , $x , $x ) + sql insert into $tb values ($ms , $x , $x , $x , $x , $tinyint , $x , $x , $x , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -46,7 +46,7 @@ $tb = $tbPrefix . $i sql select diff(c1) from $tb print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c2) from $tb @@ -56,22 +56,22 @@ if $data10 != 1.000000000 then endi sql select diff(c3) from $tb print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c4) from $tb print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c5) from $tb print ===> $data10 -if $data10 != 0 then +if $data10 != 0 then return -1 endi sql select diff(c6) from $tb print ===> $data10 -if $data10 != 1.000000000 then +if $data10 != 1.000000000 then return -1 endi @@ -90,7 +90,7 @@ sql_error select diff(c1) from m_di_tb1 where c2 like '2%' print =============== step3 sql select diff(c1) from $tb where c1 > 5 print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c2) from $tb where c2 > 5 @@ -100,38 +100,38 @@ if $data10 != 1.000000000 then endi sql select diff(c3) from $tb where c3 > 5 print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c4) from $tb where c4 > 5 print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c5) from $tb where c5 > 5 print ===> $data10 -if $data10 != 0 then +if $data10 != 0 then return -1 endi sql select diff(c6) from $tb where c6 > 5 print ===> $data10 -if $data10 != 1.000000000 then +if $data10 != 1.000000000 then return -1 endi print =============== step4 sql select diff(c1) from $tb where c1 > 5 and c2 < $rowNum print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select diff(c1) from $tb where c9 like '%9' and c1 <= 20 -if $rows != 1 then +if $rows != 1 then return -1 endi print ===> $data10 -if $data00 != 10 then +if $data00 != 10 then return -1 endi @@ -148,8 +148,8 @@ step6: print =============== clear #sql drop database $db #sql select * from information_schema.ins_databases -#if $rows != 2 then +#if $rows != 2 then # return -1 #endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/first.sim b/tests/script/tsim/compute/first.sim index 8595416c07..954664a4c6 100644 --- a/tests/script/tsim/compute/first.sim +++ b/tests/script/tsim/compute/first.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select first(tbcol) from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -53,27 +53,27 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select first(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step4 sql select first(tbcol) as b from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step5 sql select first(tbcol) as b from $tb interval(1m) print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi sql select first(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -82,17 +82,17 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select first(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data00 -if $data40 != 4 then +if $data40 != 4 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select first(tbcol) from $mt print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -101,13 +101,13 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select first(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi sql select first(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -115,7 +115,7 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select first(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -123,24 +123,24 @@ print =============== step9 sql select first(tbcol) as b from $mt interval(1m) print select first(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select first(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step10 sql select first(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -149,19 +149,19 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select first(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi print ===> $rows -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/interval.sim b/tests/script/tsim/compute/interval.sim index 903e80769b..4e7960ac4a 100644 --- a/tests/script/tsim/compute/interval.sim +++ b/tests/script/tsim/compute/interval.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,13 +44,13 @@ $tb = $tbPrefix . $i sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb interval(1m) print ===> $rows -if $rows < $rowNum then +if $rows < $rowNum then return -1 endi -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $data04 != 1 then +if $data04 != 1 then return -1 endi @@ -59,16 +59,16 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb where ts <= $ms interval(1m) print ===> $rows -if $rows > 10 then +if $rows > 10 then return -1 endi -if $rows < 3 then +if $rows < 3 then return -1 endi -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $data04 != 1 then +if $data04 != 1 then return -1 endi @@ -81,16 +81,16 @@ $ms2 = 1601481600000 - $cc sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb where ts <= $ms and ts > $ms2 interval(1m) print ===> $rows -if $rows < 18 then +if $rows < 18 then return -1 endi -if $rows > 22 then +if $rows > 22 then return -1 endi -if $data00 != 1 then +if $data00 != 1 then return -1 endi -if $data04 != 1 then +if $data04 != 1 then return -1 endi @@ -107,29 +107,29 @@ if $rows < 30 then print expect greater than 30, actual: $rows return -1 endi -if $rows > 50 then +if $rows > 50 then return -1 endi -if $data20 != 1 then +if $data20 != 1 then return -1 endi -if $data24 != 1 then +if $data24 != 1 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt interval(1m) print ===> $rows -if $rows < 18 then +if $rows < 18 then return -1 endi -if $rows > 22 then +if $rows > 22 then return -1 endi -if $data10 > 15 then +if $data10 > 15 then return -1 endi -if $data10 < 5 then +if $data10 < 5 then return -1 endi @@ -138,16 +138,16 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms interval(1m) print ===> $rows -if $rows < 3 then +if $rows < 3 then return -1 endi -if $rows > 7 then +if $rows > 7 then return -1 endi -if $data10 > 15 then +if $data10 > 15 then return -1 endi -if $data10 < 5 then +if $data10 < 5 then return -1 endi @@ -160,16 +160,16 @@ $ms2 = 1601481600000 - $cc sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms1 and ts > $ms2 interval(1m) print ===> $rows -if $rows < 18 then +if $rows < 18 then return -1 endi -if $rows > 22 then +if $rows > 22 then return -1 endi -if $data10 > 15 then +if $data10 > 15 then return -1 endi -if $data10 < 5 then +if $data10 < 5 then return -1 endi @@ -181,24 +181,24 @@ $cc = 1 * 60000 $ms2 = 1601481600000 - $cc sql select count(tbcol), avg(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms1 and ts > $ms2 interval(1m) fill(value, 0) -if $rows < 30 then +if $rows < 30 then return -1 endi -if $rows > 50 then +if $rows > 50 then return -1 endi -if $data10 > 15 then +if $data10 > 15 then return -1 endi -if $data10 < 5 then +if $data10 < 5 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/last.sim b/tests/script/tsim/compute/last.sim index be2ee47733..e57236e57c 100644 --- a/tests/script/tsim/compute/last.sim +++ b/tests/script/tsim/compute/last.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select last(tbcol) from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -54,27 +54,27 @@ $ms = 1601481600000 + $cc sql select last(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step4 sql select last(tbcol) as b from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step5 sql select last(tbcol) as b from $tb interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select last(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -84,17 +84,17 @@ $ms = 1601481600000 + $cc sql select last(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select last(tbcol) from $mt print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -104,13 +104,13 @@ $ms = 1601481600000 + $cc sql select last(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi sql select last(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -119,31 +119,31 @@ $ms = 1601481600000 + $cc sql select last(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step9 sql select last(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select last(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step10 sql select last(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -153,19 +153,19 @@ $ms = 1601481600000 + $cc sql select last(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi print ===> $rows -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/last_row.sim b/tests/script/tsim/compute/last_row.sim index 57bdc36f6d..2e060dc285 100644 --- a/tests/script/tsim/compute/last_row.sim +++ b/tests/script/tsim/compute/last_row.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select last_row(tbcol) from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -54,21 +54,21 @@ $ms = 1601481600000 + $cc print select last_row(tbcol) from $tb where ts <= $ms sql select last_row(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step4 sql select last_row(tbcol) as b from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step7 sql select last_row(tbcol) from $mt print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -77,13 +77,13 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select last_row(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi sql select last_row(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -91,18 +91,18 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select last_row(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step10 sql select last_row(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -110,28 +110,28 @@ print =============== step11 $cc = 1 * 3600000 $ms = 1601481600000 + $cc -sql insert into $tb values( $ms , 10) +sql insert into $tb values( $ms , 10) $cc = 3 * 3600000 $ms = 1601481600000 + $cc -sql insert into $tb values( $ms , null) +sql insert into $tb values( $ms , null) $cc = 5 * 3600000 $ms = 1601481600000 + $cc -sql insert into $tb values( $ms , -1) +sql insert into $tb values( $ms , -1) $cc = 7 * 3600000 $ms = 1601481600000 + $cc -sql insert into $tb values( $ms , null) +sql insert into $tb values( $ms , null) ## for super table $cc = 6 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $mt where ts < $ms -if $data01 != -1 then +if $data01 != -1 then return -1 endi @@ -139,12 +139,12 @@ $cc = 8 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $mt where ts < $ms -if $data01 != NULL then +if $data01 != NULL then return -1 endi sql select last_row(*) from $mt -if $data01 != NULL then +if $data01 != NULL then return -1 endi @@ -152,7 +152,7 @@ $cc = 4 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $mt where ts < $ms -if $data01 != NULL then +if $data01 != NULL then return -1 endi @@ -162,7 +162,7 @@ $cc = 4 * 3600000 $ms2 = 1601481600000 + $cc sql select last_row(*) from $mt where ts > $ms1 and ts <= $ms2 -if $data01 != NULL then +if $data01 != NULL then return -1 endi @@ -171,7 +171,7 @@ $cc = 6 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $tb where ts <= $ms -if $data01 != -1 then +if $data01 != -1 then return -1 endi @@ -179,12 +179,12 @@ $cc = 8 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $tb where ts <= $ms -if $data01 != NULL then +if $data01 != NULL then return -1 endi sql select last_row(*) from $tb -if $data01 != NULL then +if $data01 != NULL then return -1 endi @@ -192,7 +192,7 @@ $cc = 4 * 3600000 $ms = 1601481600000 + $cc sql select last_row(*) from $tb where ts <= $ms -if $data01 != NULL then +if $data01 != NULL then return -1 endi @@ -202,14 +202,14 @@ $cc = 4 * 3600000 $ms2 = 1601481600000 + $cc sql select last_row(*) from $tb where ts > $ms1 and ts <= $ms2 -if $data01 != NULL then +if $data01 != NULL then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi diff --git a/tests/script/tsim/compute/leastsquare.sim b/tests/script/tsim/compute/leastsquare.sim index 0ead02da56..cde3c01214 100644 --- a/tests/script/tsim/compute/leastsquare.sim +++ b/tests/script/tsim/compute/leastsquare.sim @@ -25,17 +25,17 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 2 $ms = 1000 while $x < $rowNum $ms = $ms + 1000 - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -63,7 +63,7 @@ endi print =============== step5 sql select leastsquares(tbcol, 1, 1) as b from $tb interval(1m) -print ===> $data00 +print ===> $data00 if $data00 != @{slop:1.000000, intercept:1.000000}@ then return -1 endi @@ -81,15 +81,15 @@ if $data00 != @{slop:1.000000, intercept:1.000000}@ then return -1 endi print ===> $rows -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/max.sim b/tests/script/tsim/compute/max.sim index 21bca6be08..451eeaacd8 100644 --- a/tests/script/tsim/compute/max.sim +++ b/tests/script/tsim/compute/max.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - - sql insert into $tb values ($ms , $x ) + + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select max(tbcol) from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -54,27 +54,27 @@ $ms = 1601481600000 + $cc sql select max(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step4 sql select max(tbcol) as b from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step5 sql select max(tbcol) as b from $tb interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select max(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -84,17 +84,17 @@ $ms = 1601481600000 + $cc sql select max(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select max(tbcol) from $mt print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -104,13 +104,13 @@ $ms = 1601481600000 + $cc sql select max(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi sql select max(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -119,31 +119,31 @@ $ms = 1601481600000 + $cc sql select max(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step9 sql select max(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select max(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step10 sql select max(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -153,19 +153,19 @@ $ms = 1601481600000 + $cc sql select max(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi print ===> $rows -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/min.sim b/tests/script/tsim/compute/min.sim index cf22b6f2be..e8ec3232ba 100644 --- a/tests/script/tsim/compute/min.sim +++ b/tests/script/tsim/compute/min.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select min(tbcol) from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -54,27 +54,27 @@ $ms = 1601481600000 + $cc sql select min(tbcol) from $tb where ts < $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step4 sql select min(tbcol) as b from $tb print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step5 sql select min(tbcol) as b from $tb interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select min(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -85,17 +85,17 @@ $ms = 1601481600000 + $cc sql select min(tbcol) as b from $tb where ts <= $ms interval(1m) print select min(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select min(tbcol) from $mt print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -104,13 +104,13 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select min(tbcol) as c from $mt where ts < $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi sql select min(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi @@ -118,31 +118,31 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select min(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step9 sql select min(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select min(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi print =============== step10 sql select min(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 0 then +if $data00 != 0 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -151,19 +151,19 @@ $cc = 4 * 60000 $ms = 1601481600000 + $cc sql select min(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi print ===> $rows -if $rows != 50 then +if $rows != 50 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/null.sim b/tests/script/tsim/compute/null.sim index 2dbf61bb07..d841f25265 100644 --- a/tests/script/tsim/compute/null.sim +++ b/tests/script/tsim/compute/null.sim @@ -25,24 +25,24 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - - $v1 = $x + + $v1 = $x $v2 = $x if $x == 0 then $v1 = NULL endi - - sql insert into $tb values ($ms , $v1 , $v2 ) + + sql insert into $tb values ($ms , $v1 , $v2 ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -61,47 +61,47 @@ if $rows != 20 then endi print =============== step3 -sql select count(tbcol), count(tbcol2), avg(tbcol), avg(tbcol2), sum(tbcol), sum(tbcol2) from $tb -print ===> $data00 $data01 $data02 $data03 $data04 $data05 -if $data00 != 19 then +sql select count(tbcol), count(tbcol2), avg(tbcol), avg(tbcol2), sum(tbcol), sum(tbcol2) from $tb +print ===> $data00 $data01 $data02 $data03 $data04 $data05 +if $data00 != 19 then return -1 endi -if $data01 != 20 then +if $data01 != 20 then return -1 endi -if $data02 != 10.000000000 then +if $data02 != 10.000000000 then return -1 endi -if $data03 != 9.500000000 then +if $data03 != 9.500000000 then return -1 endi -if $data04 != 190 then +if $data04 != 190 then return -1 endi -if $data05 != 190 then +if $data05 != 190 then return -1 endi print =============== step4 sql select * from $tb where tbcol2 = 19 print ===> $data01 $data02 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 19 then +if $data01 != 19 then return -1 endi -if $data02 != 19 then +if $data02 != 19 then return -1 endi -sql select * from $tb where tbcol is NULL -if $rows != 1 then +sql select * from $tb where tbcol is NULL +if $rows != 1 then return -1 endi -sql select * from $tb where tbcol = NULL -if $rows != 0 then +sql select * from $tb where tbcol = NULL +if $rows != 0 then return -1 endi @@ -113,29 +113,29 @@ sql create table tt using $mt tags( NULL ) #step52: sql select * from $mt where tgcol is NULL -if $rows != 0 then +if $rows != 0 then return -1 endi print =============== step6 -sql select count(tbcol), count(tbcol2), avg(tbcol), avg(tbcol2), sum(tbcol), sum(tbcol2) from $mt -print ===> $data00 $data01 $data02 $data03 $data04 $data05 -if $data00 != 190 then +sql select count(tbcol), count(tbcol2), avg(tbcol), avg(tbcol2), sum(tbcol), sum(tbcol2) from $mt +print ===> $data00 $data01 $data02 $data03 $data04 $data05 +if $data00 != 190 then return -1 endi -if $data01 != 200 then +if $data01 != 200 then return -1 endi -if $data02 != 10.000000000 then +if $data02 != 10.000000000 then return -1 endi -if $data03 != 9.500000000 then +if $data03 != 9.500000000 then return -1 endi -if $data04 != 1900 then +if $data04 != 1900 then return -1 endi -if $data05 != 1900 then +if $data05 != 1900 then return -1 endi @@ -158,15 +158,15 @@ sql insert into t7 values(now, NULL) #sql insert into t8 values(now, NULL) #sql select * from t1 -#if $rows != 1 then +#if $rows != 1 then # return -1 #endi -#if $data01 != NULL then +#if $data01 != NULL then # return -1 #endi sql select * from t2 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -174,7 +174,7 @@ if $data01 != NULL then endi sql select * from t3 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -182,7 +182,7 @@ if $data01 != NULL then endi sql select * from t4 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -190,7 +190,7 @@ if $data01 != NULL then endi sql select * from t5 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -198,7 +198,7 @@ if $data01 != NULL then endi sql select * from t6 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -206,7 +206,7 @@ if $data01 != NULL then endi sql select * from t7 -if $rows != 1 then +if $rows != 1 then return -1 endi if $data01 != NULL then @@ -214,7 +214,7 @@ if $data01 != NULL then endi #sql select * from t8 -#if $rows != 1 then +#if $rows != 1 then # return -1 #endi #if $data01 != NULL then @@ -224,8 +224,8 @@ endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/percentile.sim b/tests/script/tsim/compute/percentile.sim index 1ea82a998b..836a6baed5 100644 --- a/tests/script/tsim/compute/percentile.sim +++ b/tests/script/tsim/compute/percentile.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,19 +44,19 @@ $tb = $tbPrefix . $i sql select percentile(tbcol, 10) from $tb print ===> $data00 -if $data00 != 1.900000000 then +if $data00 != 1.900000000 then return -1 endi sql select percentile(tbcol, 20) from $tb print ===> $data00 -if $data00 != 3.800000000 then +if $data00 != 3.800000000 then return -1 endi sql select percentile(tbcol, 100) from $tb print ===> $data00 -if $data00 != 19.000000000 then +if $data00 != 19.000000000 then return -1 endi @@ -70,7 +70,7 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 1) from $tb where ts > $ms print ===> $data00 -if $data00 != 5.140000000 then +if $data00 != 5.140000000 then return -1 endi @@ -79,7 +79,7 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 5) from $tb where ts > $ms print ===> $data00 -if $data00 != 5.700000000 then +if $data00 != 5.700000000 then return -1 endi @@ -88,7 +88,7 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 0) from $tb where ts > $ms print ===> $data00 -if $data00 != 5.000000000 then +if $data00 != 5.000000000 then return -1 endi @@ -98,7 +98,7 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 1) as c from $tb where ts > $ms print ===> $data00 -if $data00 != 5.140000000 then +if $data00 != 5.140000000 then return -1 endi @@ -107,7 +107,7 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 5) as c from $tb where ts > $ms print ===> $data00 -if $data00 != 5.700000000 then +if $data00 != 5.700000000 then return -1 endi @@ -116,15 +116,15 @@ $ms = 1601481600000 + $cc sql select percentile(tbcol, 0) as c from $tb where ts > $ms print ===> $data00 -if $data00 != 5.000000000 then +if $data00 != 5.000000000 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/stddev.sim b/tests/script/tsim/compute/stddev.sim index 9e7a52a774..db3af3e207 100644 --- a/tests/script/tsim/compute/stddev.sim +++ b/tests/script/tsim/compute/stddev.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select stddev(tbcol) from $tb print ===> $data00 -if $data00 != 5.766281297 then +if $data00 != 5.766281297 then return -1 endi @@ -54,27 +54,27 @@ $ms = 1601481600000 + $cc sql select stddev(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 1.414213562 then +if $data00 != 1.414213562 then return -1 endi print =============== step4 sql select stddev(tbcol) as b from $tb print ===> $data00 -if $data00 != 5.766281297 then +if $data00 != 5.766281297 then return -1 endi print =============== step5 sql select stddev(tbcol) as b from $tb interval(1m) -print ===> $data00 -if $data00 != 0.000000000 then +print ===> $data00 +if $data00 != 0.000000000 then return -1 endi sql select stddev(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 5.766281297 then +if $data00 != 5.766281297 then return -1 endi @@ -84,18 +84,18 @@ $ms = 1601481600000 + $cc sql select stddev(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data00 -if $data00 != 0.000000000 then +if $data00 != 0.000000000 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/sum.sim b/tests/script/tsim/compute/sum.sim index 717389e061..7bb000817e 100644 --- a/tests/script/tsim/compute/sum.sim +++ b/tests/script/tsim/compute/sum.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select sum(tbcol) from $tb print ===> $data00 -if $data00 != 190 then +if $data00 != 190 then return -1 endi @@ -54,27 +54,27 @@ $ms = 1601481600000 + $cc sql select sum(tbcol) from $tb where ts <= $ms print ===> $data00 -if $data00 != 10 then +if $data00 != 10 then return -1 endi print =============== step4 sql select sum(tbcol) as b from $tb print ===> $data00 -if $data00 != 190 then +if $data00 != 190 then return -1 endi print =============== step5 sql select sum(tbcol) as b from $tb interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi sql select sum(tbcol) as b from $tb interval(1d) print ===> $data00 -if $data00 != 190 then +if $data00 != 190 then return -1 endi @@ -84,17 +84,17 @@ $ms = 1601481600000 + $cc sql select sum(tbcol) as b from $tb where ts <= $ms interval(1m) print ===> $data10 -if $data10 != 1 then +if $data10 != 1 then return -1 endi -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select sum(tbcol) from $mt print ===> $data00 -if $data00 != 1900 then +if $data00 != 1900 then return -1 endi @@ -104,13 +104,13 @@ $ms = 1601481600000 + $cc sql select sum(tbcol) as c from $mt where ts <= $ms print ===> $data00 -if $data00 != 100 then +if $data00 != 100 then return -1 endi sql select sum(tbcol) as c from $mt where tgcol < 5 print ===> $data00 -if $data00 != 950 then +if $data00 != 950 then return -1 endi @@ -119,31 +119,31 @@ $ms = 1601481600000 + $cc sql select sum(tbcol) as c from $mt where tgcol < 5 and ts <= $ms print ===> $data00 -if $data00 != 50 then +if $data00 != 50 then return -1 endi print =============== step9 sql select sum(tbcol) as b from $mt interval(1m) print ===> $data10 -if $data10 < 5 then +if $data10 < 5 then return -1 endi sql select sum(tbcol) as b from $mt interval(1d) print ===> $data00 -if $data00 != 1900 then +if $data00 != 1900 then return -1 endi print =============== step10 sql select sum(tbcol) as b from $mt group by tgcol print ===> $data00 -if $data00 != 190 then +if $data00 != 190 then return -1 endi -if $rows != $tbNum then +if $rows != $tbNum then return -1 endi @@ -153,19 +153,19 @@ $ms = 1601481600000 + $cc sql select sum(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1d) print select sum(tbcol) as b from $mt where ts <= $ms partition by tgcol interval(1d) -print ===> $data00 $rows -if $data00 != 10 then +print ===> $data00 $rows +if $data00 != 10 then return -1 endi -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/compute/top.sim b/tests/script/tsim/compute/top.sim index 75445762d0..8caf603896 100644 --- a/tests/script/tsim/compute/top.sim +++ b/tests/script/tsim/compute/top.sim @@ -25,18 +25,18 @@ $i = 0 while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - + $x = 0 while $x < $rowNum $cc = $x * 60000 $ms = 1601481600000 + $cc - sql insert into $tb values ($ms , $x ) + sql insert into $tb values ($ms , $x ) $x = $x + 1 - endw - + endw + $i = $i + 1 -endw +endw print =============== step2 $i = 1 @@ -44,7 +44,7 @@ $tb = $tbPrefix . $i sql select top(tbcol, 1) from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi @@ -54,24 +54,24 @@ $ms = 1601481600000 + $cc sql select top(tbcol, 1) from $tb where ts <= $ms print ===> $data00 -if $data00 != 4 then +if $data00 != 4 then return -1 endi print =============== step4 sql select top(tbcol, 1) as b from $tb print ===> $data00 -if $data00 != 19 then +if $data00 != 19 then return -1 endi print =============== step5 -sql select top(tbcol, 2) as b from $tb +sql select top(tbcol, 2) as b from $tb print ===> $data00 $data10 -if $data00 != 18 then +if $data00 != 18 then return -1 endi -if $data10 != 19 then +if $data10 != 19 then return -1 endi @@ -81,10 +81,10 @@ $ms = 1601481600000 + $cc sql select top(tbcol, 2) as b from $tb where ts <= $ms print ===> $data00 $data10 -if $data00 != 3 then +if $data00 != 3 then return -1 endi -if $data10 != 4 then +if $data10 != 4 then return -1 endi @@ -95,8 +95,8 @@ step6: print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT From 3e9609e240b7eaec82e83505e501291634fd9ff1 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:10:07 +0800 Subject: [PATCH 020/108] fix(query): fix test cases --- tests/script/tsim/scalar/in.sim | 18 +++++++++--------- tests/script/tsim/scalar/scalar.sim | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/script/tsim/scalar/in.sim b/tests/script/tsim/scalar/in.sim index 60c12a00c2..75e1face88 100644 --- a/tests/script/tsim/scalar/in.sim +++ b/tests/script/tsim/scalar/in.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql drop database if exists db1; sql create database db1 vgroups 3; sql use db1; @@ -11,24 +11,24 @@ sql create stable st1 (fts timestamp, fbool bool, ftiny tinyint, fsmall smallint sql create table tb1 using st1 tags('2022-07-10 16:31:00', true, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); sql create table tb2 using st1 tags('2022-07-10 16:32:00', false, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql create table tb3 using st1 tags('2022-07-10 16:33:00', true, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); - + sql insert into tb1 values ('2022-07-10 16:31:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); sql insert into tb1 values ('2022-07-10 16:31:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb1 values ('2022-07-10 16:31:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); sql insert into tb1 values ('2022-07-10 16:31:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); sql insert into tb1 values ('2022-07-10 16:31:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); - + sql insert into tb2 values ('2022-07-10 16:32:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); -sql insert into tb2 values ('2022-07-10 16:32:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); +sql insert into tb2 values ('2022-07-10 16:32:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb2 values ('2022-07-10 16:32:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); -sql insert into tb2 values ('2022-07-10 16:32:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); +sql insert into tb2 values ('2022-07-10 16:32:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); sql insert into tb2 values ('2022-07-10 16:32:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); - + sql insert into tb3 values ('2022-07-10 16:33:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); -sql insert into tb3 values ('2022-07-10 16:33:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); +sql insert into tb3 values ('2022-07-10 16:33:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb3 values ('2022-07-10 16:33:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); -sql insert into tb3 values ('2022-07-10 16:33:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); -sql insert into tb3 values ('2022-07-10 16:33:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); +sql insert into tb3 values ('2022-07-10 16:33:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); +sql insert into tb3 values ('2022-07-10 16:33:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); sql select * from tb1 where fts in ('2022-07-10 16:31:01', '2022-07-10 16:31:03', 1657441865000); if $rows != 3 then diff --git a/tests/script/tsim/scalar/scalar.sim b/tests/script/tsim/scalar/scalar.sim index 29cc67ec24..900f7c0904 100644 --- a/tests/script/tsim/scalar/scalar.sim +++ b/tests/script/tsim/scalar/scalar.sim @@ -3,7 +3,7 @@ system sh/deploy.sh -n dnode1 -i 1 system sh/exec.sh -n dnode1 -s start sql connect -print ======== step1 +print ======== step1 sql drop database if exists db1; sql create database db1 vgroups 3; sql use db1; @@ -11,24 +11,24 @@ sql create stable st1 (fts timestamp, fbool bool, ftiny tinyint, fsmall smallint sql create table tb1 using st1 tags('2022-07-10 16:31:00', true, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); sql create table tb2 using st1 tags('2022-07-10 16:32:00', false, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql create table tb3 using st1 tags('2022-07-10 16:33:00', true, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); - + sql insert into tb1 values ('2022-07-10 16:31:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); sql insert into tb1 values ('2022-07-10 16:31:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb1 values ('2022-07-10 16:31:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); sql insert into tb1 values ('2022-07-10 16:31:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); sql insert into tb1 values ('2022-07-10 16:31:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); - + sql insert into tb2 values ('2022-07-10 16:32:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); -sql insert into tb2 values ('2022-07-10 16:32:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); +sql insert into tb2 values ('2022-07-10 16:32:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb2 values ('2022-07-10 16:32:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); -sql insert into tb2 values ('2022-07-10 16:32:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); +sql insert into tb2 values ('2022-07-10 16:32:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); sql insert into tb2 values ('2022-07-10 16:32:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); - + sql insert into tb3 values ('2022-07-10 16:33:01', false, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, 'a', 'a'); -sql insert into tb3 values ('2022-07-10 16:33:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); +sql insert into tb3 values ('2022-07-10 16:33:02', true, 2, 2, 2, 2, 2, 2, 2, 2, 2.0, 2.0, 'b', 'b'); sql insert into tb3 values ('2022-07-10 16:33:03', false, 3, 3, 3, 3, 3, 3, 3, 3, 3.0, 3.0, 'c', 'c'); -sql insert into tb3 values ('2022-07-10 16:33:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); -sql insert into tb3 values ('2022-07-10 16:33:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); +sql insert into tb3 values ('2022-07-10 16:33:04', true, 4, 4, 4, 4, 4, 4, 4, 4, 4.0, 4.0, 'd', 'd'); +sql insert into tb3 values ('2022-07-10 16:33:05', false, 5, 5, 5, 5, 5, 5, 5, 5, 5.0, 5.0, 'e', 'e'); sql select 1+1n; if $rows != 1 then From fb00a50b9f2032da9366248e649ee1574c48b167 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 15 Aug 2022 14:10:07 +0800 Subject: [PATCH 021/108] fix(query): fix test cases --- tests/script/tsim/tag/3.sim | 266 ++++++------- tests/script/tsim/tag/4.sim | 364 ++++++++--------- tests/script/tsim/tag/5.sim | 426 ++++++++++---------- tests/script/tsim/tag/6.sim | 506 ++++++++++++------------ tests/script/tsim/tag/add.sim | 342 ++++++++-------- tests/script/tsim/tag/bigint.sim | 108 ++--- tests/script/tsim/tag/binary.sim | 108 ++--- tests/script/tsim/tag/binary_binary.sim | 150 +++---- tests/script/tsim/tag/bool.sim | 106 ++--- tests/script/tsim/tag/bool_binary.sim | 150 +++---- tests/script/tsim/tag/bool_int.sim | 158 ++++---- tests/script/tsim/tag/change.sim | 198 +++++----- tests/script/tsim/tag/column.sim | 12 +- tests/script/tsim/tag/commit.sim | 470 +++++++++++----------- tests/script/tsim/tag/create.sim | 256 ++++++------ tests/script/tsim/tag/delete.sim | 314 +++++++-------- tests/script/tsim/tag/double.sim | 108 ++--- tests/script/tsim/tag/filter.sim | 56 +-- tests/script/tsim/tag/float.sim | 108 ++--- tests/script/tsim/tag/int.sim | 110 +++--- tests/script/tsim/tag/int_binary.sim | 150 +++---- tests/script/tsim/tag/int_float.sim | 158 ++++---- tests/script/tsim/tag/set.sim | 218 +++++----- tests/script/tsim/tag/smallint.sim | 114 +++--- tests/script/tsim/tag/tinyint.sim | 112 +++--- 25 files changed, 2534 insertions(+), 2534 deletions(-) diff --git a/tests/script/tsim/tag/3.sim b/tests/script/tsim/tag/3.sim index ee794d6fc7..1b8a976980 100644 --- a/tests/script/tsim/tag/3.sim +++ b/tests/script/tsim/tag/3.sim @@ -24,496 +24,496 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgc $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, 0, 0 ) + sql create table $tb using $mt tags( 0, 0, 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, 1, 1 ) + sql create table $tb using $mt tags( 1, 1, 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = false -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> false -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where tgcol3 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol1 = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> false and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select * from $mt where ts > now + 4m and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step9 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol1 = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol1 <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol1 <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> false -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step10 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol1 = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol1 <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol1 = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol1 <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol1 <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> false -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step11 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step12 sql select * from $mt where ts > now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step15 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step16 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol3 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step17 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step18 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true and tgcol2 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step19 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 partition by tgcol1 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 partition by tgcol2 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = true and tgcol2 = 1 and tgcol3 = 1 partition by tgcol3 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/4.sim b/tests/script/tsim/tag/4.sim index 7ad253bf14..9ffe9703c6 100644 --- a/tests/script/tsim/tag/4.sim +++ b/tests/script/tsim/tag/4.sim @@ -24,686 +24,686 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 bigi $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, 0, 0, 0 ) + sql create table $tb using $mt tags( 0, 0, 0, 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, 1, 1, 1 ) + sql create table $tb using $mt tags( 1, 1, 1, 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where tgcol3 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step6 sql select * from $mt where tgcol4 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step9 sql select * from $mt where ts > now + 4m and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step10 sql select * from $mt where ts > now + 4m and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step11 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step12 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step13 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step14 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step15 sql select * from $mt where ts > now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step16 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step17 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step18 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step19 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step20 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step21 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol3 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol4 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step22 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step23 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step24 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol1 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol2 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol2 interval(1d) +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol3 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 partition by tgcol4 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/5.sim b/tests/script/tsim/tag/5.sim index eaf613e9d1..e1ac606dfe 100644 --- a/tests/script/tsim/tag/5.sim +++ b/tests/script/tsim/tag/5.sim @@ -24,809 +24,809 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 tinyint, tgcol2 int, $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, 0, 0, 0, '0' ) + sql create table $tb using $mt tags( 0, 0, 0, 0, '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, 1, 1, 1, '1' ) + sql create table $tb using $mt tags( 1, 1, 1, 1, '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where tgcol3 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step6 sql select * from $mt where tgcol4 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step7 sql select * from $mt where tgcol5 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step8 sql select * from $mt where ts > now + 4m and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step9 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step10 sql select * from $mt where ts > now + 4m and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step11 sql select * from $mt where ts > now + 4m and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step12 sql select * from $mt where ts > now + 4m and tgcol5 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step13 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step14 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step15 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step16 sql select * from $mt where ts > now + 4m and tgcol5 = 1 and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 1 and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 0 and ts < now + 5m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step17 sql select * from $mt where ts > now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step18 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step19 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step20 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 and tgcol5 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 and tgcol5 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step21 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step22 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step23 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step24 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol3 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol4 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol5 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step25 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step26 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step27 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol1 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol2 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol3 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 partition by tgcol4 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 partition by tgcol5 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/6.sim b/tests/script/tsim/tag/6.sim index 31aa5b1747..655129255d 100644 --- a/tests/script/tsim/tag/6.sim +++ b/tests/script/tsim/tag/6.sim @@ -24,964 +24,964 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 bi $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '0', 0, 0, 0, '0', '0' ) + sql create table $tb using $mt tags( '0', 0, 0, 0, '0', '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '1', 1, 1, 1, '1', '1' ) + sql create table $tb using $mt tags( '1', 1, 1, 1, '1', '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol1 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where tgcol3 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol3 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step6 sql select * from $mt where tgcol4 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol4 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step7 sql select * from $mt where tgcol5 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol5 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step8 sql select * from $mt where tgcol6 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol6 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol6 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol6 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step9 sql select * from $mt where ts > now + 4m and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step10 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step11 sql select * from $mt where ts > now + 4m and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step12 sql select * from $mt where ts > now + 4m and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step13 sql select * from $mt where ts > now + 4m and tgcol5 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step14 sql select * from $mt where ts > now + 4m and tgcol6 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol6 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol6 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol6 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step15 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step16 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step17 sql select * from $mt where ts > now + 4m and tgcol3 = 1 and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 1 and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol3 <> 0 and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol3 <> 0 and ts < now + 5m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step18 sql select * from $mt where ts > now + 4m and tgcol5 = 1 and tgcol4 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 1 and tgcol4 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 = 0 and tgcol4 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol5 <> 0 and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 0 and ts < now + 5m and ts < now + 5m and tgcol4 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step19 sql select * from $mt where ts > now + 4m and tgcol5 = 1 and tgcol6 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 1 and tgcol6 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 = 0 and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 = 0 and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol5 <> 0 and ts < now + 5m and ts < now + 5m and tgcol6 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step20 sql select * from $mt where ts > now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol1 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol1 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step21 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step22 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step23 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 and tgcol5 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 and tgcol5 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step24 sql select * from $mt where ts > now + 4m and tgcol4 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol1 = 1 and tgcol5 = 1 and tgcol6 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 1 and tgcol2 <> 1 and tgcol3 <> 1 and tgcol1 <> 1 and tgcol5 <> 1 and tgcol6 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 = 0 and tgcol2 = 0 and tgcol3 = 0 and tgcol1 = 0 and tgcol5 = 0 and tgcol6 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol4 <> 0 and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol4 <> 0 and ts < now + 5m and ts < now + 5m and tgcol2 <> 0 and tgcol3 <> 0 and tgcol1 <> 0 and tgcol5 <> 0 and tgcol6 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step25 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step26 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 and tgcol6 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step27 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 and tgcol6 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step28 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol3 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol4 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol5 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol6 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step29 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 and tgcol6 = 1 group by tgcol1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step30 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 and tgcol6 = 1 group by tgcol2 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step31 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol1 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol2 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 partition by tgcol3 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 partition by tgcol4 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 partition by tgcol5 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol1 = 1 and tgcol2 = 1 and tgcol3 = 1 and tgcol4 = 1 and tgcol5 = 1 and tgcol6 = 1 partition by tgcol6 interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/add.sim b/tests/script/tsim/tag/add.sim index 78244d74c3..2b528c0255 100644 --- a/tests/script/tsim/tag/add.sim +++ b/tests/script/tsim/tag/add.sim @@ -25,39 +25,39 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 int sql reset query cache -sql alter table $tb set tag tgcol4 =4 +sql alter table $tb set tag tgcol4 =4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi @@ -71,61 +71,61 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 tinyint sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = 1 -x step3 return -1 step3: - + print =============== step4 $i = 4 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then @@ -134,34 +134,34 @@ endi sql describe $tb print sql describe $tb -if $data21 != BIGINT then +if $data21 != BIGINT then return -1 endi -if $data31 != FLOAT then +if $data31 != FLOAT then return -1 endi -if $data23 != TAG then +if $data23 != TAG then return -1 endi -if $data33 != TAG then +if $data33 != TAG then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 float sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 4.00000 then @@ -171,184 +171,184 @@ endi sql select * from $mt where tgcol2 = 1 -x step4 return -1 step4: - + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 smallint sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol3 = '1' -x step5 return -1 step5: - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 tinyint) sql create table $tb using $mt tags( 1, 2, 3 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 binary(10) sql alter table $mt add tag tgcol6 binary(10) sql reset query cache -sql alter table $tb set tag tgcol4=false -sql alter table $tb set tag tgcol5='5' -sql alter table $tb set tag tgcol6='6' +sql alter table $tb set tag tgcol4=false +sql alter table $tb set tag tgcol5='5' +sql alter table $tb set tag tgcol6='6' sql reset query cache sql select * from $mt where tgcol5 = '5' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol6 = '6' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where tgcol3 = 1 -x step52 return -1 step52: - + print =============== step7 $i = 7 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 bigint sql alter table $mt add tag tgcol6 tinyint sql reset query cache -sql alter table $tb set tag tgcol4=4 -sql alter table $tb set tag tgcol5=5 -sql alter table $tb set tag tgcol6=6 +sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol5=5 +sql alter table $tb set tag tgcol6=6 sql reset query cache sql select * from $mt where tgcol6 = 6 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi @@ -358,55 +358,55 @@ step71: sql select * from $mt where tgcol3 = 1 -x step72 return -1 step72: - + print =============== step8 $i = 8 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 binary(17) sql alter table $mt add tag tgcol6 bool sql reset query cache -sql alter table $tb set tag tgcol4=4 -sql alter table $tb set tag tgcol5='5' +sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol5='5' sql alter table $tb set tag tgcol6='1' sql reset query cache sql select * from $mt where tgcol5 = '5' print select * from $mt where tgcol5 = 5 print $data01 $data02 $data03 $data04 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi if $data04 != 0 then @@ -426,45 +426,45 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10), tgcol3 binary(10)) sql create table $tb using $mt tags( 1, '2', '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 bool sql alter table $mt add tag tgcol6 float sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql alter table $tb set tag tgcol5=1 sql alter table $tb set tag tgcol6=6 sql reset query cache sql select * from $mt where tgcol5 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4.000000000 then +if $data02 != 4.000000000 then return -1 endi if $data03 != 1 then @@ -487,24 +487,24 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 binary(10), tgcol3 binary(10), tgcol4 binary(10)) sql create table $tb using $mt tags( '1', '2', '3', '4' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol4 = '4' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi @@ -512,7 +512,7 @@ sql alter table $mt rename tag tgcol1 tgcol4 -x step103 return -1 step103: -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql reset query cache @@ -520,28 +520,28 @@ sql alter table $mt add tag tgcol4 binary(10) sql alter table $mt add tag tgcol5 bool sql reset query cache -sql alter table $tb set tag tgcol4='4' +sql alter table $tb set tag tgcol4='4' sql alter table $tb set tag tgcol5=false sql reset query cache sql select * from $mt where tgcol4 = '4' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi if $data04 != 0 then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi @@ -558,27 +558,27 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 smallint, tgcol4 float, tgcol5 binary(10)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi if $data05 != 4.00000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi @@ -586,7 +586,7 @@ sql alter table $mt rename tag tgcol1 tgcol4 -x step114 return -1 step114: -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol5 @@ -598,7 +598,7 @@ sql alter table $mt add tag tgcol7 bigint sql alter table $mt add tag tgcol8 smallint sql reset query cache -sql alter table $tb set tag tgcol4='4' +sql alter table $tb set tag tgcol4='4' sql alter table $tb set tag tgcol5=5 sql alter table $tb set tag tgcol6='6' sql alter table $tb set tag tgcol7=7 @@ -607,28 +607,28 @@ sql reset query cache sql select * from $mt where tgcol5 =5 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 6 then +if $data05 != 6 then return -1 endi -if $data06 != 7 then +if $data06 != 7 then return -1 endi -if $data07 != 8 then +if $data07 != 8 then return -1 endi @@ -648,34 +648,34 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 smallint, tgcol3 float, tgcol4 double, tgcol5 binary(10), tgcol6 binary(20)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5', '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi if $data04 != 3.00000 then return -1 endi -if $data05 != 4.000000000 then +if $data05 != 4.000000000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol5 @@ -686,8 +686,8 @@ sql alter table $mt add tag tgcol4 binary(10) sql alter table $mt add tag tgcol5 bigint sql reset query cache -sql alter table $tb set tag tgcol1=false -sql alter table $tb set tag tgcol2='5' +sql alter table $tb set tag tgcol1=false +sql alter table $tb set tag tgcol2='5' sql alter table $tb set tag tgcol3=4 sql alter table $tb set tag tgcol4='3' sql alter table $tb set tag tgcol5=2 @@ -696,28 +696,28 @@ sql reset query cache sql select * from $mt where tgcol4 = '3' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 1 then +if $data03 != 1 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 3 then +if $data06 != 3 then return -1 endi -if $data07 != 2 then +if $data07 != 2 then return -1 endi @@ -747,34 +747,34 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20)) sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 5.000000000 then +if $data06 != 5.000000000 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol6 sql reset query cache @@ -783,8 +783,8 @@ sql alter table $mt add tag tgcol4 int sql alter table $mt add tag tgcol6 bigint sql reset query cache -sql alter table $tb set tag tgcol1='7' -sql alter table $tb set tag tgcol2='8' +sql alter table $tb set tag tgcol1='7' +sql alter table $tb set tag tgcol2='8' sql alter table $tb set tag tgcol3=9 sql alter table $tb set tag tgcol4=10 sql alter table $tb set tag tgcol5=11 @@ -793,28 +793,28 @@ sql reset query cache sql select * from $mt where tgcol2 = '8' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 9 then +if $data03 != 9 then return -1 endi -if $data04 != 11.000000000 then +if $data04 != 11.000000000 then return -1 endi -if $data05 != 8 then +if $data05 != 8 then return -1 endi -if $data06 != 10 then +if $data06 != 10 then return -1 endi -if $data07 != 12 then +if $data07 != 12 then return -1 endi @@ -824,7 +824,7 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 bigint) sql create table $tb using $mt tags( 1, 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql alter table $mt add tag tgcol3 binary(10) sql alter table $mt add tag tgcol4 int @@ -834,13 +834,13 @@ sql alter table $mt add tag tgcol6 bigint sql reset query cache sql alter table $mt drop tag tgcol6 sql alter table $mt add tag tgcol7 bigint -sql alter table $mt add tag tgcol8 bigint +sql alter table $mt add tag tgcol8 bigint print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/bigint.sim b/tests/script/tsim/tag/bigint.sim index dc5a03152b..26a5addf6a 100644 --- a/tests/script/tsim/tag/bigint.sim +++ b/tests/script/tsim/tag/bigint.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bigint) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -83,155 +83,155 @@ if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/binary.sim b/tests/script/tsim/tag/binary.sim index b3f243b8c0..e0c02b4823 100644 --- a/tests/script/tsim/tag/binary.sim +++ b/tests/script/tsim/tag/binary.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(10)) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '0' ) + sql create table $tb using $mt tags( '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '1' ) + sql create table $tb using $mt tags( '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -83,155 +83,155 @@ if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> '0' and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/binary_binary.sim b/tests/script/tsim/tag/binary_binary.sim index ad6c0ca1cb..b5ba3562ac 100644 --- a/tests/script/tsim/tag/binary_binary.sim +++ b/tests/script/tsim/tag/binary_binary.sim @@ -24,283 +24,283 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(5), tgcol2 bina $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '0', '0' ) + sql create table $tb using $mt tags( '0', '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '1', '1' ) + sql create table $tb using $mt tags( '1', '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> '0' and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol2 = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = '1' and tgcol = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' and tgcol <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' and tgcol = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' and tgcol <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' and tgcol <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m and ts < now + 5m and tgcol <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' and tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' and tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/bool.sim b/tests/script/tsim/tag/bool.sim index c0f4c1ccdd..1473556841 100644 --- a/tests/script/tsim/tag/bool.sim +++ b/tests/script/tsim/tag/bool.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -79,40 +79,40 @@ if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 @@ -121,115 +121,115 @@ if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = false -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> false -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> false and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) print select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/bool_binary.sim b/tests/script/tsim/tag/bool_binary.sim index 627aea4495..7fb15ec2cf 100644 --- a/tests/script/tsim/tag/bool_binary.sim +++ b/tests/script/tsim/tag/bool_binary.sim @@ -24,283 +24,283 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 binary(5) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, '0' ) + sql create table $tb using $mt tags( 0, '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, '1' ) + sql create table $tb using $mt tags( 1, '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = false -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> false -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> false and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol2 = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = '1' and tgcol = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' and tgcol <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m and ts < now + 5m and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true and tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true and tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/bool_int.sim b/tests/script/tsim/tag/bool_int.sim index 1e291573ef..f18da59d9c 100644 --- a/tests/script/tsim/tag/bool_int.sim +++ b/tests/script/tsim/tag/bool_int.sim @@ -24,299 +24,299 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 int) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, 0 ) + sql create table $tb using $mt tags( 0, 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, 1 ) + sql create table $tb using $mt tags( 1, 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = false -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> false -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> true -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = false -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> false -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> false and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol = true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol <> true -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol = false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol <> false -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol <> false -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = true and tgcol2 = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/change.sim b/tests/script/tsim/tag/change.sim index 53f9f49396..d44877c99a 100644 --- a/tests/script/tsim/tag/change.sim +++ b/tests/script/tsim/tag/change.sim @@ -25,18 +25,18 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -62,18 +62,18 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -86,15 +86,15 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then @@ -103,61 +103,61 @@ endi sql alter table $mt rename tag tgcol1 tgcol3 sql alter table $mt rename tag tgcol2 tgcol4 - + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol3 sql alter table $mt rename tag tgcol2 tgcol4 - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20)) sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 5.000000000 then +if $data06 != 5.000000000 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi @@ -187,31 +187,31 @@ step25: sql select * from $mt where tgcol3 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql select * from $mt where tgcol4 = 2 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -229,34 +229,34 @@ step32: sql select * from $mt where tgcol3 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql select * from $mt where tgcol4 = 2 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi - + print =============== step4 $i = 4 $mt = $mtPrefix . $i @@ -271,13 +271,13 @@ step42: sql select * from $mt where tgcol3 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then @@ -298,7 +298,7 @@ endi if $data03 != 2.00000 then return -1 endi - + print =============== step5 $i = 5 $mt = $mtPrefix . $i @@ -313,34 +313,34 @@ step52: sql select * from $mt where tgcol3 < 2 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql select * from $mt where tgcol4 = '2' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi - + print =============== step6 $i = 6 $mt = $mtPrefix . $i @@ -367,144 +367,144 @@ step66: sql select * from $mt where tgcol7 = '1' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 4 then +if $data04 != 4 then return -1 endi -if $data05 != 5.000000000 then +if $data05 != 5.000000000 then return -1 endi -if $data06 != 6 then +if $data06 != 6 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol8 = 2 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 4 then +if $data04 != 4 then return -1 endi -if $data05 != 5.000000000 then +if $data05 != 5.000000000 then return -1 endi -if $data06 != 6 then +if $data06 != 6 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol9 = '4' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 4 then +if $data04 != 4 then return -1 endi -if $data05 != 5.000000000 then +if $data05 != 5.000000000 then return -1 endi -if $data06 != 6 then +if $data06 != 6 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol10 = 5 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 4 then +if $data04 != 4 then return -1 endi -if $data05 != 5.000000000 then +if $data05 != 5.000000000 then return -1 endi -if $data06 != 6 then +if $data06 != 6 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol11 = '6' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 4 then +if $data04 != 4 then return -1 endi -if $data05 != 5.000000000 then +if $data05 != 5.000000000 then return -1 endi -if $data06 != 6 then +if $data06 != 6 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/column.sim b/tests/script/tsim/tag/column.sim index cc692900ce..041bc0a117 100644 --- a/tests/script/tsim/tag/column.sim +++ b/tests/script/tsim/tag/column.sim @@ -31,7 +31,7 @@ sql create table $tb using $mt tags( 0, '0' ) $i = 1 $tb = $tbPrefix . $i -sql create table $tb using $mt tags( 1, '1' ) +sql create table $tb using $mt tags( 1, '1' ) $i = 2 $tb = $tbPrefix . $i @@ -66,26 +66,26 @@ sql insert into $tb values(now, '3', '3') print =============== step4 sql select * from $mt where tgcol2 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step5 sql select * from $mt -if $rows != 4 then +if $rows != 4 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/commit.sim b/tests/script/tsim/tag/commit.sim index cc63e16700..e4f839e613 100644 --- a/tests/script/tsim/tag/commit.sim +++ b/tests/script/tsim/tag/commit.sim @@ -25,39 +25,39 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 int sql reset query cache -sql alter table $tb set tag tgcol4 =4 +sql alter table $tb set tag tgcol4 =4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi @@ -71,61 +71,61 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 tinyint sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = 1 -x step3 return -1 step3: - + print =============== step4 $i = 4 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then @@ -133,34 +133,34 @@ if $data03 != 2.00000 then endi sql describe $tb -if $data21 != BIGINT then +if $data21 != BIGINT then return -1 endi -if $data31 != FLOAT then +if $data31 != FLOAT then return -1 endi -if $data23 != TAG then +if $data23 != TAG then return -1 endi -if $data33 != TAG then +if $data33 != TAG then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 float sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 4.00000 then @@ -170,184 +170,184 @@ endi sql select * from $mt where tgcol2 = 1 -x step4 return -1 step4: - + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt add tag tgcol4 smallint sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql reset query cache sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol3 = '1' -x step5 return -1 step5: - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 tinyint) sql create table $tb using $mt tags( 1, 2, 3 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 binary(10) sql alter table $mt add tag tgcol6 binary(10) sql reset query cache -sql alter table $tb set tag tgcol4=false -sql alter table $tb set tag tgcol5='5' -sql alter table $tb set tag tgcol6='6' +sql alter table $tb set tag tgcol4=false +sql alter table $tb set tag tgcol5='5' +sql alter table $tb set tag tgcol6='6' sql reset query cache sql select * from $mt where tgcol5 = '5' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol6 = '6' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where tgcol3 = 1 -x step52 return -1 step52: - + print =============== step7 $i = 7 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 bigint sql alter table $mt add tag tgcol6 tinyint sql reset query cache -sql alter table $tb set tag tgcol4=4 -sql alter table $tb set tag tgcol5=5 -sql alter table $tb set tag tgcol6=6 +sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol5=5 +sql alter table $tb set tag tgcol6=6 sql reset query cache sql select * from $mt where tgcol6 = 6 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi @@ -357,54 +357,54 @@ step71: sql select * from $mt where tgcol3 = 1 -x step72 return -1 step72: - + print =============== step8 $i = 8 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 binary(17) sql alter table $mt add tag tgcol6 bool sql reset query cache -sql alter table $tb set tag tgcol4=4 -sql alter table $tb set tag tgcol5='5' +sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol5='5' sql alter table $tb set tag tgcol6=1 sql reset query cache sql select * from $mt where tgcol5 = '5' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi if $data04 != 1 then @@ -424,45 +424,45 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10), tgcol3 binary(10)) sql create table $tb using $mt tags( 1, '2', '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt rename tag tgcol1 tgcol4 -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt add tag tgcol5 bool sql alter table $mt add tag tgcol6 float sql reset query cache -sql alter table $tb set tag tgcol4=4 +sql alter table $tb set tag tgcol4=4 sql alter table $tb set tag tgcol5=1 sql alter table $tb set tag tgcol6=6 sql reset query cache sql select * from $mt where tgcol5 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4.000000000 then +if $data02 != 4.000000000 then return -1 endi if $data03 != 1 then @@ -485,24 +485,24 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 binary(10), tgcol3 binary(10), tgcol4 binary(10)) sql create table $tb using $mt tags( '1', '2', '3', '4' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol4 = '4' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi @@ -510,7 +510,7 @@ sql alter table $mt rename tag tgcol1 tgcol4 -x step103 return -1 step103: -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql reset query cache @@ -524,22 +524,22 @@ sql reset query cache sql select * from $mt where tgcol4 = '4' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi if $data04 != 0 then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi @@ -556,27 +556,27 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 smallint, tgcol4 float, tgcol5 binary(10)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi if $data05 != 4.00000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi @@ -584,7 +584,7 @@ sql alter table $mt rename tag tgcol1 tgcol4 -x step114 return -1 step114: -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol5 @@ -596,7 +596,7 @@ sql alter table $mt add tag tgcol7 bigint sql alter table $mt add tag tgcol8 smallint sql reset query cache -sql alter table $tb set tag tgcol4='4' +sql alter table $tb set tag tgcol4='4' sql alter table $tb set tag tgcol5=5 sql alter table $tb set tag tgcol6='6' sql alter table $tb set tag tgcol7=7 @@ -605,28 +605,28 @@ sql reset query cache sql select * from $mt where tgcol5 =5 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 6 then +if $data05 != 6 then return -1 endi -if $data06 != 7 then +if $data06 != 7 then return -1 endi -if $data07 != 8 then +if $data07 != 8 then return -1 endi @@ -646,34 +646,34 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 smallint, tgcol3 float, tgcol4 double, tgcol5 binary(10), tgcol6 binary(20)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5', '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi if $data04 != 3.00000 then return -1 endi -if $data05 != 4.000000000 then +if $data05 != 4.000000000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol5 @@ -684,8 +684,8 @@ sql alter table $mt add tag tgcol4 binary(10) sql alter table $mt add tag tgcol5 bigint sql reset query cache -sql alter table $tb set tag tgcol1=false -sql alter table $tb set tag tgcol2='5' +sql alter table $tb set tag tgcol1=false +sql alter table $tb set tag tgcol2='5' sql alter table $tb set tag tgcol3=4 sql alter table $tb set tag tgcol4='3' sql alter table $tb set tag tgcol5=2 @@ -694,28 +694,28 @@ sql reset query cache sql select * from $mt where tgcol4 = '3' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 1 then +if $data03 != 1 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 3 then +if $data06 != 3 then return -1 endi -if $data07 != 2 then +if $data07 != 2 then return -1 endi @@ -745,34 +745,34 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20)) sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 5.000000000 then +if $data06 != 5.000000000 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi -sql alter table $mt drop tag tgcol2 +sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol4 sql alter table $mt drop tag tgcol6 sql reset query cache @@ -781,8 +781,8 @@ sql alter table $mt add tag tgcol4 int sql alter table $mt add tag tgcol6 bigint sql reset query cache -sql alter table $tb set tag tgcol1='7' -sql alter table $tb set tag tgcol2='8' +sql alter table $tb set tag tgcol1='7' +sql alter table $tb set tag tgcol2='8' sql alter table $tb set tag tgcol3=9 sql alter table $tb set tag tgcol4=10 sql alter table $tb set tag tgcol5=11 @@ -791,28 +791,28 @@ sql reset query cache sql select * from $mt where tgcol2 = '8' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 9 then +if $data03 != 9 then return -1 endi -if $data04 != 11.000000000 then +if $data04 != 11.000000000 then return -1 endi -if $data05 != 8 then +if $data05 != 8 then return -1 endi -if $data06 != 10 then +if $data06 != 10 then return -1 endi -if $data07 != 12 then +if $data07 != 12 then return -1 endi @@ -832,16 +832,16 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi @@ -852,19 +852,19 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi - + print =============== step4 $i = 4 $mt = $mtPrefix . $i @@ -872,20 +872,20 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 4.00000 then return -1 endi - + print =============== step5 $i = 5 $mt = $mtPrefix . $i @@ -893,20 +893,20 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi - + print =============== step6 $i = 6 $mt = $mtPrefix . $i @@ -914,45 +914,45 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol5 = '5' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol6 = '6' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi sql select * from $mt where tgcol4 = 1 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step7 $i = 7 $mt = $mtPrefix . $i @@ -960,23 +960,23 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol6 = 6 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi -if $data04 != 6 then +if $data04 != 6 then return -1 endi - + print =============== step8 $i = 8 $mt = $mtPrefix . $i @@ -984,16 +984,16 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol5 = '5' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4 then +if $data02 != 4 then return -1 endi -if $data03 != 5 then +if $data03 != 5 then return -1 endi if $data04 != 1 then @@ -1008,13 +1008,13 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol5 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 4.000000000 then +if $data02 != 4.000000000 then return -1 endi if $data03 != 1 then @@ -1032,22 +1032,22 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = '4' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi if $data04 != 0 then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi @@ -1058,28 +1058,28 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol5 =5 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 6 then +if $data05 != 6 then return -1 endi -if $data06 != 7 then +if $data06 != 7 then return -1 endi -if $data07 != 8 then +if $data07 != 8 then return -1 endi @@ -1091,28 +1091,28 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = '3' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 1 then +if $data03 != 1 then return -1 endi -if $data04 != 5 then +if $data04 != 5 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 3 then +if $data06 != 3 then return -1 endi -if $data07 != 2 then +if $data07 != 2 then return -1 endi @@ -1143,36 +1143,36 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol2 = '8' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 9 then +if $data03 != 9 then return -1 endi -if $data04 != 11.000000000 then +if $data04 != 11.000000000 then return -1 endi -if $data05 != 8 then +if $data05 != 8 then return -1 endi -if $data06 != 10 then +if $data06 != 10 then return -1 endi -if $data07 != 12 then +if $data07 != 12 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/create.sim b/tests/script/tsim/tag/create.sim index da683389cb..1db2251da0 100644 --- a/tests/script/tsim/tag/create.sim +++ b/tests/script/tsim/tag/create.sim @@ -25,107 +25,107 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step3 $i = 3 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol smallint) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step4 $i = 4 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol tinyint) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bigint) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step7 $i = 7 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol float) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 @@ -133,62 +133,62 @@ if $rows != 0 then print expect 0, actual: $rows return -1 endi - + print =============== step8 $i = 8 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol double) sql create table $tb using $mt tags( 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step9 $i = 9 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(10)) sql create table $tb using $mt tags( '1') -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol = '0' -if $rows != 0 then +if $rows != 0 then return -1 endi - + print =============== step10 $i = 10 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 bool) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 1 if $rows != 1 then print expect 1, actual: $rows return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -198,16 +198,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 smallint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -217,16 +217,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -236,16 +236,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -255,17 +255,17 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 bigint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi print =============== step15 @@ -274,16 +274,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -293,16 +293,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 double) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -312,16 +312,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = true -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -331,16 +331,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -350,16 +350,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol tinyint, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -369,16 +369,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int, tgcol2 bigint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -388,16 +388,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -407,16 +407,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol float, tgcol2 double) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -426,16 +426,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -445,51 +445,51 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 bool, tgcol3 int, tgcol4 float, tgcol5 double, tgcol6 binary(10)) sql create table $tb using $mt tags( 1, 2, 3, 4, 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol3 = 3 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol4 = 4 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol5 = 5 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol6 = '6' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol6 = '0' -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -499,16 +499,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol bool, tgcol2 int, tgcol3 float, tgcol4 double, tgcol5 binary(10), tgcol6 binary(10)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5', '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol6 = '6' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol6 = '0' -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -518,16 +518,16 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(10), tgcol2 binary(10), tgcol3 binary(10), tgcol4 binary(10), tgcol5 binary(10), tgcol6 binary(10)) sql create table $tb using $mt tags( '1', '2', '3', '4', '5', '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi sql select * from $mt where tgcol3 = '0' -if $rows != 0 then +if $rows != 0 then return -1 endi @@ -545,12 +545,12 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(250), tgcol2 binary(250)) sql create table $tb using $mt tags('1', '1') -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi @@ -560,12 +560,12 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(25), tgcol2 binary(250)) sql create table $tb using $mt tags('1', '1') -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi @@ -575,7 +575,7 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(250), tgcol2 binary(250), tgcol3 binary(30)) -x step30 # return -1 -step30: +step30: print =============== step31 $i = 31 @@ -584,16 +584,16 @@ $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(5)) sql_error create table $tb using $mt tags('1234567') sql create table $tb using $mt tags('12345') -sql insert into $tb values(now, 1) -sql select * from $mt +sql insert into $tb values(now, 1) +sql select * from $mt print sql select * from $mt -if $rows != 1 then +if $rows != 1 then return -1 endi print $data00 $data01 $data02 -if $data02 != 12345 then +if $data02 != 12345 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/delete.sim b/tests/script/tsim/tag/delete.sim index 36ef1110f8..acf99cc874 100644 --- a/tests/script/tsim/tag/delete.sim +++ b/tests/script/tsim/tag/delete.sim @@ -25,18 +25,18 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -48,38 +48,38 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi sql alter table $mt drop tag tgcol2 - + print =============== step4 $i = 4 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 < 3 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then @@ -87,13 +87,13 @@ if $data03 != 2.00000 then endi sql describe $tb -if $data21 != BIGINT then +if $data21 != BIGINT then return -1 endi -if $data31 != FLOAT then +if $data31 != FLOAT then return -1 endi -if $data23 != TAG then +if $data23 != TAG then return -1 endi @@ -101,25 +101,25 @@ sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol1 -x step40 return -1 step40: - + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -127,111 +127,111 @@ sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol1 -x step50 return -1 step50: - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 tinyint) sql create table $tb using $mt tags( 1, 2, 3 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 - + print =============== step7 $i = 7 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi sql describe $tb -if $data21 != SMALLINT then +if $data21 != SMALLINT then return -1 endi -if $data31 != TINYINT then +if $data31 != TINYINT then return -1 endi -if $data41 != VARCHAR then +if $data41 != VARCHAR then return -1 endi -if $data22 != 2 then +if $data22 != 2 then return -1 endi -if $data32 != 1 then +if $data32 != 1 then return -1 endi -if $data42 != 10 then +if $data42 != 10 then return -1 endi -if $data23 != TAG then +if $data23 != TAG then return -1 endi -if $data33 != TAG then +if $data33 != TAG then return -1 endi -if $data43 != TAG then +if $data43 != TAG then return -1 endi sql alter table $mt drop tag tgcol2 sql alter table $mt drop tag tgcol3 - + print =============== step8 $i = 8 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float, tgcol3 binary(10)) sql create table $tb using $mt tags( 1, 2, '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol3 = '3' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi if $data03 != 2.00000 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi @@ -244,21 +244,21 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10), tgcol3 binary(10)) sql create table $tb using $mt tags( 1, '2', '3' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = 2 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi @@ -271,24 +271,24 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 binary(10), tgcol3 binary(10), tgcol4 binary(10)) sql create table $tb using $mt tags( '1', '2', '3', '4' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol4 = '4' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi @@ -302,27 +302,27 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int, tgcol3 smallint, tgcol4 float, tgcol5 binary(10)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi if $data05 != 4.00000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi @@ -336,30 +336,30 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 smallint, tgcol3 float, tgcol4 double, tgcol5 binary(10), tgcol6 binary(20)) sql create table $tb using $mt tags( 1, 2, 3, 4, '5', '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi if $data04 != 3.00000 then return -1 endi -if $data05 != 4.000000000 then +if $data05 != 4.000000000 then return -1 endi -if $data06 != 5 then +if $data06 != 5 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi @@ -374,30 +374,30 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20)) sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 5.000000000 then +if $data06 != 5.000000000 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi @@ -412,16 +412,16 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi @@ -436,23 +436,23 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi sql select * from $mt where tgcol2 = 1 -x step3 return -1 step3: - + print =============== step4 $i = 4 $mt = $mtPrefix . $i @@ -460,23 +460,23 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi sql select * from $mt where tgcol2 = 1 -x step4 return -1 step4: - + print =============== step5 $i = 5 $mt = $mtPrefix . $i @@ -484,23 +484,23 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi sql select * from $mt where tgcol2 = '1' -x step5 return -1 step5: - + print =============== step6 $i = 6 $mt = $mtPrefix . $i @@ -508,19 +508,19 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi @@ -530,7 +530,7 @@ step51: sql select * from $mt where tgcol3 = 1 -x step52 return -1 step52: - + print =============== step7 $i = 7 $mt = $mtPrefix . $i @@ -538,19 +538,19 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi @@ -560,7 +560,7 @@ step71: sql select * from $mt where tgcol3 = 1 -x step72 return -1 step72: - + print =============== step8 $i = 8 $mt = $mtPrefix . $i @@ -568,19 +568,19 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi @@ -598,19 +598,19 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = 1 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi @@ -628,22 +628,22 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol1 = '1' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != null then +if $data03 != null then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi @@ -664,10 +664,10 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4=4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then @@ -676,13 +676,13 @@ endi if $data03 != 4.00000 then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi -if $data06 != null then +if $data06 != null then return -1 endi @@ -703,28 +703,28 @@ $tb = $tbPrefix . $i sql select * from $mt where tgcol4 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 4.000000000 then +if $data03 != 4.000000000 then return -1 endi -if $data04 != null then +if $data04 != null then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi -if $data06 != null then +if $data06 != null then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi @@ -749,28 +749,28 @@ $tb = $tbPrefix . $i sql reset query cache sql select * from $mt where tgcol2 = 2 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 5.000000000 then +if $data04 != 5.000000000 then return -1 endi -if $data05 != null then +if $data05 != null then return -1 endi -if $data06 != null then +if $data06 != null then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi @@ -790,7 +790,7 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 bigint) sql create table $tb using $mt tags( 1, 1 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql alter table xxmt drop tag tag1 -x step141 return -1 @@ -814,8 +814,8 @@ step145: print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/double.sim b/tests/script/tsim/tag/double.sim index 7af2f19c59..fbdf973337 100644 --- a/tests/script/tsim/tag/double.sim +++ b/tests/script/tsim/tag/double.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol double) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -83,156 +83,156 @@ if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/filter.sim b/tests/script/tsim/tag/filter.sim index 9fb5f66c36..4f116cb58d 100644 --- a/tests/script/tsim/tag/filter.sim +++ b/tests/script/tsim/tag/filter.sim @@ -24,31 +24,31 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol binary(10)) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '0' ) + sql create table $tb using $mt tags( '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( '1' ) + sql create table $tb using $mt tags( '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = '1' +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi @@ -62,18 +62,18 @@ sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(t step3: print =============== step4 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tbcol = '1' -if $rows != 1 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tbcol = '1' +if $rows != 1 then return -1 endi -if $data00 != 10 then +if $data00 != 10 then return -1 endi print =============== step5 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi @@ -96,9 +96,9 @@ sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(t step9: print =============== step10 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi @@ -112,14 +112,14 @@ step12: print =============== step13 sql select count(tbcol) as c from $mt group by tgcol -print $data00 -if $data00 != 100 then +print $data00 +if $data00 != 100 then return -1 endi print =============== step14 sql select count(tbcol) as c from $mt where ts > 1000 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 100 then print expect 100, actual $data00 return -1 @@ -132,16 +132,16 @@ step15: print =============== step16 sql select count(tbcol) as c from $mt where tgcol = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/float.sim b/tests/script/tsim/tag/float.sim index d176188329..10fac93d5d 100644 --- a/tests/script/tsim/tag/float.sim +++ b/tests/script/tsim/tag/float.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol float) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -83,156 +83,156 @@ if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/int.sim b/tests/script/tsim/tag/int.sim index 5a35695cbe..ac8d31db3b 100644 --- a/tests/script/tsim/tag/int.sim +++ b/tests/script/tsim/tag/int.sim @@ -24,50 +24,50 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m @@ -78,160 +78,160 @@ sql select * from $tb where ts > 100000 and ts < 100000 if $rows != 0 then return -1 endi -sql select * from $tb where ts > now + 4m and ts < now + 3m +sql select * from $tb where ts > now + 4m and ts < now + 3m if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/int_binary.sim b/tests/script/tsim/tag/int_binary.sim index 53058ee331..83a830f64a 100644 --- a/tests/script/tsim/tag/int_binary.sim +++ b/tests/script/tsim/tag/int_binary.sim @@ -24,283 +24,283 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int, tgcol2 binary(5)) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, '0' ) + sql create table $tb using $mt tags( 0, '0' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, '1' ) + sql create table $tb using $mt tags( 1, '1' ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 = '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '0' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = '1' -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> '1' -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol2 = '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = '1' and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '1' and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = '0' and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> '0' and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = '0' and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> '0' and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> '0' and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> '0' and ts < now + 5m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 and tgcol2 = '1' -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 and tgcol2 = '1' group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/int_float.sim b/tests/script/tsim/tag/int_float.sim index 826e1f5c08..009629aac9 100644 --- a/tests/script/tsim/tag/int_float.sim +++ b/tests/script/tsim/tag/int_float.sim @@ -24,299 +24,299 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int, tgcol2 float) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0, 0 ) + sql create table $tb using $mt tags( 0, 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1, 1 ) + sql create table $tb using $mt tags( 1, 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step3 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step4 sql select * from $mt where tgcol2 > 0.5 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 < 0.5 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 > 0.5 and tgcol2 < 1.5 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol2 <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select * from $mt where ts > now + 4m and tgcol2 = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step7 sql select * from $mt where ts > now + 4m and tgcol2 = 1 and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 1 and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 = 0 and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol2 <> 0 and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 = 0 and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol2 <> 0 and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol2 <> 0 and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol2 <> 0 and ts < now + 5m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 and tgcol2 = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol2 = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 and tgcol2 = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step13 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step14 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/set.sim b/tests/script/tsim/tag/set.sim index ebca50a3be..c66ae65903 100644 --- a/tests/script/tsim/tag/set.sim +++ b/tests/script/tsim/tag/set.sim @@ -25,18 +25,18 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bool, tgcol2 int) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -50,46 +50,46 @@ sql reset query cache sql select * from $mt where tgcol1 = false print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi if $data02 != 0 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql describe $tb print $data21 $data23 $data32 $data33 -if $data21 != BOOL then +if $data21 != BOOL then return -1 endi -if $data31 != INT then +if $data31 != INT then return -1 endi if $data23 != TAG then return -1 endi -if $data33 != TAG then +if $data33 != TAG then return -1 endi @@ -99,18 +99,18 @@ $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 smallint, tgcol2 tinyint) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -121,58 +121,58 @@ sql reset query cache sql select * from $mt where tgcol1 = 3 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3 then +if $data02 != 3 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3 then +if $data02 != 3 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = 2 -if $rows != 0 then +if $rows != 0 then return -1 endi - - + + print =============== step4 $i = 4 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 bigint, tgcol2 float) sql create table $tb using $mt tags( 1, 2 ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = 1 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2.00000 then +if $data03 != 2.00000 then return -1 endi @@ -183,53 +183,53 @@ sql reset query cache sql select * from $mt where tgcol1 = 3 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3 then +if $data02 != 3 then return -1 endi -if $data03 != 4.00000 then +if $data03 != 4.00000 then return -1 endi sql select * from $mt where tgcol2 = 4 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3 then +if $data02 != 3 then return -1 endi -if $data03 != 4.00000 then +if $data03 != 4.00000 then return -1 endi - - + + print =============== step5 $i = 5 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 double, tgcol2 binary(10)) sql create table $tb using $mt tags( 1, '2' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol2 = '2' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1.000000000 then +if $data02 != 1.000000000 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi @@ -240,64 +240,64 @@ sql reset query cache sql select * from $mt where tgcol1 = 3 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi sql select * from $mt where tgcol2 = '4' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 3.000000000 then +if $data02 != 3.000000000 then return -1 endi -if $data03 != 4 then +if $data03 != 4 then return -1 endi - + print =============== step6 $i = 6 $mt = $mtPrefix . $i $tb = $tbPrefix . $i sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol1 binary(10), tgcol2 int, tgcol3 smallint, tgcol4 binary(11), tgcol5 double, tgcol6 binary(20)) sql create table $tb using $mt tags( '1', 2, 3, '4', 5, '6' ) -sql insert into $tb values(now, 1) +sql insert into $tb values(now, 1) sql select * from $mt where tgcol1 = '1' -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 1 then +if $data02 != 1 then return -1 endi -if $data03 != 2 then +if $data03 != 2 then return -1 endi -if $data04 != 3 then +if $data04 != 3 then return -1 endi -if $data05 != 4 then +if $data05 != 4 then return -1 endi -if $data06 != 5.000000000 then +if $data06 != 5.000000000 then return -1 endi -if $data07 != 6 then +if $data07 != 6 then return -1 endi @@ -309,146 +309,146 @@ sql alter table $tb set tag tgcol5=10 sql alter table $tb set tag tgcol6='11' sql reset query cache - + sql select * from $mt where tgcol1 = '7' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi -if $data04 != 9 then +if $data04 != 9 then return -1 endi -if $data05 != 10.000000000 then +if $data05 != 10.000000000 then return -1 endi -if $data06 != 11 then +if $data06 != 11 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol2 = 8 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi -if $data04 != 9 then +if $data04 != 9 then return -1 endi -if $data05 != 10.000000000 then +if $data05 != 10.000000000 then return -1 endi -if $data06 != 11 then +if $data06 != 11 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol4 = '9' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi -if $data04 != 9 then +if $data04 != 9 then return -1 endi -if $data05 != 10.000000000 then +if $data05 != 10.000000000 then return -1 endi -if $data06 != 11 then +if $data06 != 11 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol5 = 10 print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi -if $data04 != 9 then +if $data04 != 9 then return -1 endi -if $data05 != 10.000000000 then +if $data05 != 10.000000000 then return -1 endi -if $data06 != 11 then +if $data06 != 11 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi sql select * from $mt where tgcol6 = '11' print $data01 $data02 $data03 -if $rows != 1 then +if $rows != 1 then return -1 endi -if $data01 != 1 then +if $data01 != 1 then return -1 endi -if $data02 != 7 then +if $data02 != 7 then return -1 endi -if $data03 != 8 then +if $data03 != 8 then return -1 endi -if $data04 != 9 then +if $data04 != 9 then return -1 endi -if $data05 != 10.000000000 then +if $data05 != 10.000000000 then return -1 endi -if $data06 != 11 then +if $data06 != 11 then return -1 endi -if $data07 != null then +if $data07 != null then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi diff --git a/tests/script/tsim/tag/smallint.sim b/tests/script/tsim/tag/smallint.sim index 9fb3ca1426..e3a819c837 100644 --- a/tests/script/tsim/tag/smallint.sim +++ b/tests/script/tsim/tag/smallint.sim @@ -24,214 +24,214 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol smallint) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts > 100000 and ts < 100000 -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 3m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/tsim/tag/tinyint.sim b/tests/script/tsim/tag/tinyint.sim index 11cd6ee3b2..8560def34c 100644 --- a/tests/script/tsim/tag/tinyint.sim +++ b/tests/script/tsim/tag/tinyint.sim @@ -24,214 +24,214 @@ sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol tinyint) $i = 0 while $i < 5 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 0 ) + sql create table $tb using $mt tags( 0 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw while $i < 10 $tb = $tbPrefix . $i - sql create table $tb using $mt tags( 1 ) + sql create table $tb using $mt tags( 1 ) $x = 0 while $x < $rowNum - $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + $ms = $x . m + sql insert into $tb values (now + $ms , $x ) $x = $x + 1 - endw + endw $i = $i + 1 -endw +endw print =============== step2 sql select * from $tb -if $rows != $rowNum then +if $rows != $rowNum then return -1 endi sql select * from $tb where ts < now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts <= now + 4m -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $tb where ts > now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts >= now + 4m -if $rows != 15 then +if $rows != 15 then return -1 endi sql select * from $tb where ts > now + 4m and ts < now + 5m -if $rows != 1 then +if $rows != 1 then return -1 endi sql select * from $tb where ts < now + 4m and ts > now + 5m if $rows != 0 then return -1 endi -sql select * from $tb where ts > 100000 and ts < 100000 +sql select * from $tb where ts > 100000 and ts < 100000 if $rows != 0 then return -1 endi -sql select * from $tb where ts > now + 4m and ts < now + 3m +sql select * from $tb where ts > now + 4m and ts < now + 3m if $rows != 0 then return -1 endi sql select * from $tb where ts > now + 4m and ts > now + 5m and ts < now + 6m -if $rows != 1 then +if $rows != 1 then return -1 endi print =============== step3 sql select * from $mt -if $rows != $totalNum then +if $rows != $totalNum then return -1 endi sql select * from $mt where ts < now + 4m -if $rows != 50 then +if $rows != 50 then return -1 endi sql select * from $mt where ts > now + 4m -if $rows != 150 then +if $rows != 150 then return -1 endi sql select * from $mt where ts = now + 4m -if $rows != 0 then +if $rows != 0 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m -if $rows != 10 then +if $rows != 10 then return -1 endi print =============== step4 sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 1 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol = 0 -if $rows != 100 then +if $rows != 100 then return -1 endi sql select * from $mt where tgcol <> 0 -if $rows != 100 then +if $rows != 100 then return -1 endi print =============== step5 sql select * from $mt where ts > now + 4m and tgcol = 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 1 -if $rows != 75 then +if $rows != 75 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts < now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol = 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts <= now + 4m and tgcol <> 0 -if $rows != 25 then +if $rows != 25 then return -1 endi sql select * from $mt where ts > now + 4m and ts < now + 5m and tgcol <> 0 -if $rows != 5 then +if $rows != 5 then return -1 endi sql select * from $mt where ts > now + 4m and tgcol <> 0 and ts < now + 5m -if $rows != 5 then +if $rows != 5 then return -1 endi print =============== step6 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 200 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 200 then return -1 endi print =============== step7 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step8 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 50 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 50 then return -1 endi print =============== step9 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step10 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tgcol = 1 group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== step11 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m group by tgcol -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 25 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 25 then return -1 endi print =============== step12 sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt partition by tgcol interval(1d) -print $data00 $data01 $data02 $data03 $data04 $data05 $data06 -if $data00 != 100 then +print $data00 $data01 $data02 $data03 $data04 $data05 $data06 +if $data00 != 100 then return -1 endi print =============== clear sql drop database $db sql select * from information_schema.ins_databases -if $rows != 2 then +if $rows != 2 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT From a733479735c7f1feeeb8a9a8d0ef18ecd16df22a Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 15 Aug 2022 14:41:52 +0800 Subject: [PATCH 022/108] docs(REST): improve REST API document --- .../14-reference/02-rest-api/02-rest-api.mdx | 312 ++++-------------- 1 file changed, 62 insertions(+), 250 deletions(-) diff --git a/docs/zh/14-reference/02-rest-api/02-rest-api.mdx b/docs/zh/14-reference/02-rest-api/02-rest-api.mdx index ba43aa30fd..f4aae74bd7 100644 --- a/docs/zh/14-reference/02-rest-api/02-rest-api.mdx +++ b/docs/zh/14-reference/02-rest-api/02-rest-api.mdx @@ -20,8 +20,10 @@ RESTful 接口不依赖于任何 TDengine 的库,因此客户端不需要安 下面示例是列出所有的数据库,请把 h1.taosdata.com 和 6041(缺省值)替换为实际运行的 TDengine 服务 FQDN 和端口号: -```html -curl -L -H "Authorization: Basic cm9vdDp0YW9zZGF0YQ==" -d "show databases;" h1.taosdata.com:6041/rest/sql +```bash +curl -L -H "Authorization: Basic cm9vdDp0YW9zZGF0YQ==" \ + -d "select name, ntables, status from information_schema.ins_databases;" \ + h1.taosdata.com:6041/rest/sql ``` 返回值结果如下表示验证通过: @@ -35,188 +37,27 @@ curl -L -H "Authorization: Basic cm9vdDp0YW9zZGF0YQ==" -d "show databases;" h1.t "VARCHAR", 64 ], - [ - "create_time", - "TIMESTAMP", - 8 - ], - [ - "vgroups", - "SMALLINT", - 2 - ], [ "ntables", "BIGINT", 8 ], - [ - "replica", - "TINYINT", - 1 - ], - [ - "strict", - "VARCHAR", - 4 - ], - [ - "duration", - "VARCHAR", - 10 - ], - [ - "keep", - "VARCHAR", - 32 - ], - [ - "buffer", - "INT", - 4 - ], - [ - "pagesize", - "INT", - 4 - ], - [ - "pages", - "INT", - 4 - ], - [ - "minrows", - "INT", - 4 - ], - [ - "maxrows", - "INT", - 4 - ], - [ - "comp", - "TINYINT", - 1 - ], - [ - "precision", - "VARCHAR", - 2 - ], [ "status", "VARCHAR", 10 - ], - [ - "retention", - "VARCHAR", - 60 - ], - [ - "single_stable", - "BOOL", - 1 - ], - [ - "cachemodel", - "VARCHAR", - 11 - ], - [ - "cachesize", - "INT", - 4 - ], - [ - "wal_level", - "TINYINT", - 1 - ], - [ - "wal_fsync_period", - "INT", - 4 - ], - [ - "wal_retention_period", - "INT", - 4 - ], - [ - "wal_retention_size", - "BIGINT", - 8 - ], - [ - "wal_roll_period", - "INT", - 4 - ], - [ - "wal_seg_size", - "BIGINT", - 8 ] ], "data": [ [ "information_schema", - null, - null, - 14, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "ready", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null + 16, + "ready" ], [ "performance_schema", - null, - null, - 3, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "ready", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null + 9, + "ready" ] ], "rows": 2 @@ -231,21 +72,21 @@ http://:/rest/sql/[db_name] 参数说明: -- fqnd: 集群中的任一台主机 FQDN 或 IP 地址 -- port: 配置文件中 httpPort 配置项,缺省为 6041 +- fqnd: 集群中的任一台主机 FQDN 或 IP 地址。 +- port: 配置文件中 httpPort 配置项,缺省为 6041。 - db_name: 可选参数,指定本次所执行的 SQL 语句的默认数据库库名。 例如:`http://h1.taos.com:6041/rest/sql/test` 是指向地址为 `h1.taos.com:6041` 的 URL,并将默认使用的数据库库名设置为 `test`。 HTTP 请求的 Header 里需带有身份认证信息,TDengine 支持 Basic 认证与自定义认证两种机制,后续版本将提供标准安全的数字签名机制来做身份验证。 -- [自定义身份认证信息](#自定义授权码)如下所示 +- [自定义身份认证信息](#自定义授权码)如下所示: ```text Authorization: Taosd ``` -- Basic 身份认证信息如下所示 +- Basic 身份认证信息如下所示: ```text Authorization: Basic @@ -259,13 +100,13 @@ HTTP 请求的 BODY 里就是一个完整的 SQL 语句,SQL 语句中的数据 curl -L -H "Authorization: Basic " -d "" :/rest/sql/[db_name] ``` -或者 +或者, ```bash curl -L -u username:password -d "" :/rest/sql/[db_name] ``` -其中,`TOKEN` 为 `{username}:{password}` 经过 Base64 编码之后的字符串,例如 `root:taosdata` 编码后为 `cm9vdDp0YW9zZGF0YQ==` +其中,`TOKEN` 为 `{username}:{password}` 经过 Base64 编码之后的字符串,例如 `root:taosdata` 编码后为 `cm9vdDp0YW9zZGF0YQ==`。 ## HTTP 返回格式 @@ -282,27 +123,9 @@ curl -L -u username:password -d "" :/rest/sql/[db_name] ### HTTP body 结构 - - - - - - - - - - - - - - - - - - - - - -
执行结果说明样例
正确执行 - code:(int)0 代表成功 -
-
- column_meta:([][3]any)列信息,每个列会用三个值来说明,分别为:列名(string)、列类型(string)、类型长度(int) -
-
- rows:(int)数据返回行数 -
-
- data:([][]any)具体数据内容 -
+#### 正确执行 + +样例: ```json { @@ -313,23 +136,16 @@ curl -L -u username:password -d "" :/rest/sql/[db_name] } ``` -
正确查询 - code:(int)0 代表成功 -
-
- column_meta:([][3]any) 列信息,每个列会用三个值来说明,分别为:列名(string)、列类型(string)、类型长度(int) -
-
- rows:(int)数据返回行数 -
-
- data:([][]any)具体数据内容 -
+说明: + +- code:(`int`)0 代表成功。 +- column_meta:(`[1][3]any`)只返回 `[["affected_rows", "INT", 4]]`。 +- rows:(`int`)只返回 `1`。 +- data:(`[][]any`)返回受影响行数。 + +#### 正确查询 + +样例: ```json { @@ -385,17 +201,35 @@ curl -L -u username:password -d "" :/rest/sql/[db_name] } ``` -
错误 - code:(int)错误码 -
-
- desc:(string)错误描述 -
+说明: + +- code:(`int`)0 代表成功。 +- column_meta:(`[][3]any`) 列信息,每个列会用三个值来说明,分别为:列名(string)、列类型(string)、类型长度(int)。 +- rows:(`int`)数据返回行数。 +- data:(`[][]any`)具体数据内容(时间格式仅支持 RFC3339,结果集为 0 时区)。 + +列类型使用如下字符串: + +- "NULL" +- "BOOL" +- "TINYINT" +- "SMALLINT" +- "INT" +- "BIGINT" +- "FLOAT" +- "DOUBLE" +- "VARCHAR" +- "TIMESTAMP" +- "NCHAR" +- "TINYINT UNSIGNED" +- "SMALLINT UNSIGNED" +- "INT UNSIGNED" +- "BIGINT UNSIGNED" +- "JSON" + +#### 错误 + +样例: ```json { @@ -404,30 +238,10 @@ curl -L -u username:password -d "" :/rest/sql/[db_name] } ``` -
+说明: -### 说明 - -- 时间格式仅支持 RFC3339,结果集为 0 时区 -- 列类型使用如下字符串: - > "NULL" - > "BOOL" - > "TINYINT" - > "SMALLINT" - > "INT" - > "BIGINT" - > "FLOAT" - > "DOUBLE" - > "VARCHAR" - > "TIMESTAMP" - > "NCHAR" - > "TINYINT UNSIGNED" - > "SMALLINT UNSIGNED" - > "INT UNSIGNED" - > "BIGINT UNSIGNED" - > "JSON" +- code:(`int`)错误码。 +- desc:(`string`)错误描述。 ## 自定义授权码 @@ -439,11 +253,9 @@ curl http://:/rest/login// 其中,`fqdn` 是 TDengine 数据库的 FQDN 或 IP 地址,`port` 是 TDengine 服务的端口号,`username` 为数据库用户名,`password` 为数据库密码,返回值为 JSON 格式,各字段含义如下: -- status:请求结果的标志位 - -- code:返回值代码 - -- desc:授权码 +- status:请求结果的标志位。 +- code:返回值代码。 +- desc:授权码。 获取授权码示例: From 6cff4dcfd83be7d9f5181be72ebfafa6fb80b48a Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Mon, 15 Aug 2022 14:42:40 +0800 Subject: [PATCH 023/108] refactor(sync): add syncIsReadyForRead --- include/libs/sync/sync.h | 4 ++ source/dnode/vnode/src/inc/vnd.h | 3 +- source/dnode/vnode/src/vnd/vnodeSvr.c | 4 +- source/dnode/vnode/src/vnd/vnodeSync.c | 14 +++++++ source/libs/sync/src/syncMain.c | 56 ++++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 3 deletions(-) diff --git a/include/libs/sync/sync.h b/include/libs/sync/sync.h index aa563343f8..6d8895eb96 100644 --- a/include/libs/sync/sync.h +++ b/include/libs/sync/sync.h @@ -30,6 +30,7 @@ extern bool gRaftDetailLog; #define SYNC_SPEED_UP_HB_TIMER 400 #define SYNC_SPEED_UP_AFTER_MS (1000 * 20) #define SYNC_SLOW_DOWN_RANGE 100 +#define SYNC_MAX_READ_RANGE 10 #define SYNC_MAX_BATCH_SIZE 1 #define SYNC_INDEX_BEGIN 0 @@ -210,9 +211,12 @@ void syncStop(int64_t rid); int32_t syncSetStandby(int64_t rid); ESyncState syncGetMyRole(int64_t rid); bool syncIsReady(int64_t rid); +bool syncIsReadyForRead(int64_t rid); const char* syncGetMyRoleStr(int64_t rid); bool syncRestoreFinish(int64_t rid); SyncTerm syncGetMyTerm(int64_t rid); +SyncIndex syncGetLastIndex(int64_t rid); +SyncIndex syncGetCommitIndex(int64_t rid); SyncGroupId syncGetVgId(int64_t rid); void syncGetEpSet(int64_t rid, SEpSet* pEpSet); void syncGetRetryEpSet(int64_t rid, SEpSet* pEpSet); diff --git a/source/dnode/vnode/src/inc/vnd.h b/source/dnode/vnode/src/inc/vnd.h index dd1facb462..5608efa7af 100644 --- a/source/dnode/vnode/src/inc/vnd.h +++ b/source/dnode/vnode/src/inc/vnd.h @@ -80,7 +80,7 @@ int32_t vnodeQueryOpen(SVnode* pVnode); void vnodeQueryClose(SVnode* pVnode); int32_t vnodeGetTableMeta(SVnode* pVnode, SRpcMsg* pMsg, bool direct); int vnodeGetTableCfg(SVnode* pVnode, SRpcMsg* pMsg, bool direct); -int32_t vnodeGetBatchMeta(SVnode *pVnode, SRpcMsg *pMsg); +int32_t vnodeGetBatchMeta(SVnode* pVnode, SRpcMsg* pMsg); // vnodeCommit.c int32_t vnodeBegin(SVnode* pVnode); @@ -98,6 +98,7 @@ void vnodeSyncStart(SVnode* pVnode); void vnodeSyncClose(SVnode* pVnode); void vnodeRedirectRpcMsg(SVnode* pVnode, SRpcMsg* pMsg); bool vnodeIsLeader(SVnode* pVnode); +bool vnodeIsReadyForRead(SVnode* pVnode); #ifdef __cplusplus } diff --git a/source/dnode/vnode/src/vnd/vnodeSvr.c b/source/dnode/vnode/src/vnd/vnodeSvr.c index d5c5e18668..e17d4a0b6d 100644 --- a/source/dnode/vnode/src/vnd/vnodeSvr.c +++ b/source/dnode/vnode/src/vnd/vnodeSvr.c @@ -281,7 +281,7 @@ int32_t vnodePreprocessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg) { int32_t vnodeProcessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg) { vTrace("message in vnode query queue is processing"); - if ((pMsg->msgType == TDMT_SCH_QUERY) && !vnodeIsLeader(pVnode)) { + if ((pMsg->msgType == TDMT_SCH_QUERY) && !vnodeIsReadyForRead(pVnode)) { vnodeRedirectRpcMsg(pVnode, pMsg); return 0; } @@ -305,7 +305,7 @@ int32_t vnodeProcessFetchMsg(SVnode *pVnode, SRpcMsg *pMsg, SQueueInfo *pInfo) { vTrace("vgId:%d, msg:%p in fetch queue is processing", pVnode->config.vgId, pMsg); if ((pMsg->msgType == TDMT_SCH_FETCH || pMsg->msgType == TDMT_VND_TABLE_META || pMsg->msgType == TDMT_VND_TABLE_CFG || pMsg->msgType == TDMT_VND_BATCH_META) && - !vnodeIsLeader(pVnode)) { + !vnodeIsReadyForRead(pVnode)) { vnodeRedirectRpcMsg(pVnode, pMsg); return 0; } diff --git a/source/dnode/vnode/src/vnd/vnodeSync.c b/source/dnode/vnode/src/vnd/vnodeSync.c index 50d32f5f5e..2779ab724f 100644 --- a/source/dnode/vnode/src/vnd/vnodeSync.c +++ b/source/dnode/vnode/src/vnd/vnodeSync.c @@ -771,3 +771,17 @@ bool vnodeIsLeader(SVnode *pVnode) { return true; } + +bool vnodeIsReadyForRead(SVnode *pVnode) { + if (syncIsReady(pVnode->sync)) { + return true; + } + + if (syncIsReadyForRead(pVnode->sync)) { + return true; + } + + vDebug("vgId:%d, vnode not ready for read, state:%s, last:%ld, cmt:%ld", pVnode->config.vgId, + syncGetMyRoleStr(pVnode->sync), syncGetLastIndex(pVnode->sync), syncGetCommitIndex(pVnode->sync)); + return false; +} diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index c7784cd62e..5656f19890 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -392,6 +392,29 @@ bool syncIsReady(int64_t rid) { return b; } +bool syncIsReadyForRead(int64_t rid) { + SSyncNode* pSyncNode = (SSyncNode*)taosAcquireRef(tsNodeRefId, rid); + if (pSyncNode == NULL) { + return false; + } + ASSERT(rid == pSyncNode->rid); + + // TODO: last not noop? + SyncIndex lastIndex = syncNodeGetLastIndex(pSyncNode); + bool b = (pSyncNode->state == TAOS_SYNC_STATE_LEADER) && (pSyncNode->commitIndex >= lastIndex - SYNC_MAX_READ_RANGE); + taosReleaseRef(tsNodeRefId, pSyncNode->rid); + + // if false, set error code + if (false == b) { + if (pSyncNode->state != TAOS_SYNC_STATE_LEADER) { + terrno = TSDB_CODE_SYN_NOT_LEADER; + } else { + terrno = TSDB_CODE_APP_NOT_READY; + } + } + return b; +} + bool syncIsRestoreFinish(int64_t rid) { SSyncNode* pSyncNode = (SSyncNode*)taosAcquireRef(tsNodeRefId, rid); if (pSyncNode == NULL) { @@ -519,6 +542,30 @@ SyncTerm syncGetMyTerm(int64_t rid) { return term; } +SyncIndex syncGetLastIndex(int64_t rid) { + SSyncNode* pSyncNode = (SSyncNode*)taosAcquireRef(tsNodeRefId, rid); + if (pSyncNode == NULL) { + return SYNC_INDEX_INVALID; + } + ASSERT(rid == pSyncNode->rid); + SyncIndex lastIndex = syncNodeGetLastIndex(pSyncNode); + + taosReleaseRef(tsNodeRefId, pSyncNode->rid); + return lastIndex; +} + +SyncIndex syncGetCommitIndex(int64_t rid) { + SSyncNode* pSyncNode = (SSyncNode*)taosAcquireRef(tsNodeRefId, rid); + if (pSyncNode == NULL) { + return SYNC_INDEX_INVALID; + } + ASSERT(rid == pSyncNode->rid); + SyncIndex cmtIndex = pSyncNode->commitIndex; + + taosReleaseRef(tsNodeRefId, pSyncNode->rid); + return cmtIndex; +} + SyncGroupId syncGetVgId(int64_t rid) { SSyncNode* pSyncNode = (SSyncNode*)taosAcquireRef(tsNodeRefId, rid); if (pSyncNode == NULL) { @@ -828,6 +875,15 @@ int32_t syncNodePropose(SSyncNode* pSyncNode, SRpcMsg* pMsg, bool isWeak) { pSyncNode->changing = true; } + // not restored + if (!pSyncNode->restoreFinish) { + ret = -1; + terrno = TSDB_CODE_SYN_PROPOSE_NOT_READY; + sError("vgId:%d, failed to sync propose since not ready, type:%s, last:%ld, cmt:%ld", pSyncNode->vgId, + TMSG_INFO(pMsg->msgType), syncNodeGetLastIndex(pSyncNode), pSyncNode->commitIndex); + goto _END; + } + SRespStub stub; stub.createTime = taosGetTimestampMs(); stub.rpcMsg = *pMsg; From b420bf4c3d8d17fe725ddda6ccbb04180db11434 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Mon, 15 Aug 2022 14:45:59 +0800 Subject: [PATCH 024/108] enh: insert client optimize --- source/libs/parser/src/parInsert.c | 27 ++- source/libs/parser/test/parInsertTest.cpp | 270 +++------------------- source/libs/parser/test/parTestUtil.cpp | 64 +++-- 3 files changed, 96 insertions(+), 265 deletions(-) diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index 4e3d18ca93..44ad68356c 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -1193,7 +1193,7 @@ static int parseOneRow(SInsertParseContext* pCxt, STableDataBlocks* pDataBlocks, tdSRowEnd(pBuilder); *gotRow = true; - + #ifdef TD_DEBUG_PRINT_ROW STSchema* pSTSchema = tdGetSTSChemaFromSSChema(schema, spd->numOfCols, 1); tdSRowPrint(row, pSTSchema, __func__); @@ -1365,6 +1365,20 @@ static void destroyInsertParseContext(SInsertParseContext* pCxt) { destroyBlockArrayList(pCxt->pVgDataBlocks); } +static int32_t parseTableName(SInsertParseContext* pCxt, SToken* pTbnameToken, SName* pName, char* pDbFName, + char* pTbFName) { + int32_t code = createSName(pName, pTbnameToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg); + if (TSDB_CODE_SUCCESS == code) { + tNameExtractFullName(pName, pTbFName); + code = taosHashPut(pCxt->pTableNameHashObj, pTbFName, strlen(pTbFName), pName, sizeof(SName)); + } + if (TSDB_CODE_SUCCESS == code) { + tNameGetFullDbName(pName, pDbFName); + code = taosHashPut(pCxt->pDbFNameHashObj, pDbFName, strlen(pDbFName), pDbFName, TSDB_DB_FNAME_LEN); + } + return code; +} + // tb_name // [USING stb_name [(tag1_name, ...)] TAGS (tag1_value, ...)] // [(field1_name, ...)] @@ -1418,13 +1432,7 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { NEXT_TOKEN(pCxt->pSql, sToken); if (!pCxt->pComCxt->async || TK_USING == sToken.type) { - CHECK_CODE(createSName(&name, &tbnameToken, pCxt->pComCxt->acctId, pCxt->pComCxt->db, &pCxt->msg)); - - tNameExtractFullName(&name, tbFName); - CHECK_CODE(taosHashPut(pCxt->pTableNameHashObj, tbFName, strlen(tbFName), &name, sizeof(SName))); - - tNameGetFullDbName(&name, dbFName); - CHECK_CODE(taosHashPut(pCxt->pDbFNameHashObj, dbFName, strlen(dbFName), dbFName, sizeof(dbFName))); + CHECK_CODE(parseTableName(pCxt, &tbnameToken, &name, dbFName, tbFName)); } bool existedUsing = false; @@ -1445,6 +1453,9 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { } if (TK_USING == sToken.type) { + if (pCxt->pComCxt->async) { + CHECK_CODE(parseTableName(pCxt, &tbnameToken, &name, dbFName, tbFName)); + } CHECK_CODE(parseUsingClause(pCxt, tbNum, &name, tbFName)); NEXT_TOKEN(pCxt->pSql, sToken); autoCreateTbl = true; diff --git a/source/libs/parser/test/parInsertTest.cpp b/source/libs/parser/test/parInsertTest.cpp index a15fc6e8fa..ddf15ec67b 100644 --- a/source/libs/parser/test/parInsertTest.cpp +++ b/source/libs/parser/test/parInsertTest.cpp @@ -13,21 +13,13 @@ * along with this program. If not, see . */ -#include - #include -#include "mockCatalogService.h" -#include "os.h" -#include "parInt.h" +#include "parTestUtil.h" using namespace std; -using namespace std::placeholders; -using namespace testing; -namespace { -string toString(int32_t code) { return tstrerror(code); } -} // namespace +namespace ParserTest { // syntax: // INSERT INTO @@ -36,260 +28,60 @@ string toString(int32_t code) { return tstrerror(code); } // [(field1_name, ...)] // VALUES (field1_value, ...) [(field1_value2, ...) ...] | FILE csv_file_path // [...]; -class InsertTest : public Test { - protected: - InsertTest() : res_(nullptr) {} - ~InsertTest() { reset(); } - - void setDatabase(const string& acctId, const string& db) { - acctId_ = acctId; - db_ = db; - } - - void bind(const char* sql) { - reset(); - cxt_.acctId = atoi(acctId_.c_str()); - cxt_.db = (char*)db_.c_str(); - strcpy(sqlBuf_, sql); - cxt_.sqlLen = strlen(sql); - sqlBuf_[cxt_.sqlLen] = '\0'; - cxt_.pSql = sqlBuf_; - cxt_.pUser = "root"; - } - - int32_t run() { - code_ = parseInsertSql(&cxt_, &res_, nullptr); - if (code_ != TSDB_CODE_SUCCESS) { - cout << "code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; - } - return code_; - } - - int32_t runAsync() { - cxt_.async = true; - bool request = true; - unique_ptr > metaCache( - new SParseMetaCache(), std::bind(_destoryParseMetaCache, _1, cref(request))); - code_ = parseInsertSyntax(&cxt_, &res_, metaCache.get()); - if (code_ != TSDB_CODE_SUCCESS) { - cout << "parseInsertSyntax code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; - return code_; - } - - unique_ptr catalogReq(new SCatalogReq(), - MockCatalogService::destoryCatalogReq); - code_ = buildCatalogReq(&cxt_, metaCache.get(), catalogReq.get()); - if (code_ != TSDB_CODE_SUCCESS) { - cout << "buildCatalogReq code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; - return code_; - } - - unique_ptr metaData(new SMetaData(), MockCatalogService::destoryMetaData); - g_mockCatalogService->catalogGetAllMeta(catalogReq.get(), metaData.get()); - - metaCache.reset(new SParseMetaCache()); - request = false; - code_ = putMetaDataToCache(catalogReq.get(), metaData.get(), metaCache.get(), true); - if (code_ != TSDB_CODE_SUCCESS) { - cout << "putMetaDataToCache code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; - return code_; - } - - code_ = parseInsertSql(&cxt_, &res_, metaCache.get()); - if (code_ != TSDB_CODE_SUCCESS) { - cout << "parseInsertSql code:" << toString(code_) << ", msg:" << errMagBuf_ << endl; - return code_; - } - - return code_; - } - - void dumpReslut() { - SVnodeModifOpStmt* pStmt = getVnodeModifStmt(res_); - size_t num = taosArrayGetSize(pStmt->pDataBlocks); - cout << "payloadType:" << (int32_t)pStmt->payloadType << ", insertType:" << pStmt->insertType - << ", numOfVgs:" << num << endl; - for (size_t i = 0; i < num; ++i) { - SVgDataBlocks* vg = (SVgDataBlocks*)taosArrayGetP(pStmt->pDataBlocks, i); - cout << "vgId:" << vg->vg.vgId << ", numOfTables:" << vg->numOfTables << ", dataSize:" << vg->size << endl; - SSubmitReq* submit = (SSubmitReq*)vg->pData; - cout << "length:" << ntohl(submit->length) << ", numOfBlocks:" << ntohl(submit->numOfBlocks) << endl; - int32_t numOfBlocks = ntohl(submit->numOfBlocks); - SSubmitBlk* blk = (SSubmitBlk*)(submit + 1); - for (int32_t i = 0; i < numOfBlocks; ++i) { - cout << "Block:" << i << endl; - cout << "\tuid:" << be64toh(blk->uid) << ", tid:" << be64toh(blk->suid) << ", sversion:" << ntohl(blk->sversion) - << ", dataLen:" << ntohl(blk->dataLen) << ", schemaLen:" << ntohl(blk->schemaLen) - << ", numOfRows:" << ntohl(blk->numOfRows) << endl; - blk = (SSubmitBlk*)(blk->data + ntohl(blk->dataLen)); - } - } - } - - void checkReslut(int32_t numOfTables, int32_t numOfRows1, int32_t numOfRows2 = -1) { - SVnodeModifOpStmt* pStmt = getVnodeModifStmt(res_); - ASSERT_EQ(pStmt->payloadType, PAYLOAD_TYPE_KV); - ASSERT_EQ(pStmt->insertType, TSDB_QUERY_TYPE_INSERT); - size_t num = taosArrayGetSize(pStmt->pDataBlocks); - ASSERT_GE(num, 0); - for (size_t i = 0; i < num; ++i) { - SVgDataBlocks* vg = (SVgDataBlocks*)taosArrayGetP(pStmt->pDataBlocks, i); - ASSERT_EQ(vg->numOfTables, numOfTables); - ASSERT_GE(vg->size, 0); - SSubmitReq* submit = (SSubmitReq*)vg->pData; - ASSERT_GE(ntohl(submit->length), 0); - ASSERT_GE(ntohl(submit->numOfBlocks), 0); - int32_t numOfBlocks = ntohl(submit->numOfBlocks); - SSubmitBlk* blk = (SSubmitBlk*)(submit + 1); - for (int32_t i = 0; i < numOfBlocks; ++i) { - ASSERT_EQ(ntohl(blk->numOfRows), (0 == i ? numOfRows1 : (numOfRows2 > 0 ? numOfRows2 : numOfRows1))); - blk = (SSubmitBlk*)(blk->data + ntohl(blk->dataLen)); - } - } - } - - private: - static const int max_err_len = 1024; - static const int max_sql_len = 1024 * 1024; - - static void _destoryParseMetaCache(SParseMetaCache* pMetaCache, bool request) { - destoryParseMetaCache(pMetaCache, request); - delete pMetaCache; - } - - void reset() { - memset(&cxt_, 0, sizeof(cxt_)); - memset(errMagBuf_, 0, max_err_len); - cxt_.pMsg = errMagBuf_; - cxt_.msgLen = max_err_len; - code_ = TSDB_CODE_SUCCESS; - qDestroyQuery(res_); - res_ = nullptr; - } - - SVnodeModifOpStmt* getVnodeModifStmt(SQuery* pQuery) { return (SVnodeModifOpStmt*)pQuery->pRoot; } - - string acctId_; - string db_; - char errMagBuf_[max_err_len]; - char sqlBuf_[max_sql_len]; - SParseContext cxt_; - int32_t code_; - SQuery* res_; -}; +class ParserInsertTest : public ParserTestBase {}; // INSERT INTO tb_name [(field1_name, ...)] VALUES (field1_value, ...) -TEST_F(InsertTest, singleTableSingleRowTest) { - setDatabase("root", "test"); +TEST_F(ParserInsertTest, singleTableSingleRowTest) { + useDb("root", "test"); - bind("insert into t1 values (now, 1, 'beijing', 3, 4, 5)"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(1, 1); + run("INSERT INTO t1 VALUES (now, 1, 'beijing', 3, 4, 5)"); - bind("insert into t1 (ts, c1, c2, c3, c4, c5) values (now, 1, 'beijing', 3, 4, 5)"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - - bind("insert into t1 values (now, 1, 'beijing', 3, 4, 5)"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(1, 1); - - bind("insert into t1 (ts, c1, c2, c3, c4, c5) values (now, 1, 'beijing', 3, 4, 5)"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); + run("INSERT INTO t1 (ts, c1, c2, c3, c4, c5) VALUES (now, 1, 'beijing', 3, 4, 5)"); } // INSERT INTO tb_name VALUES (field1_value, ...)(field1_value, ...) -TEST_F(InsertTest, singleTableMultiRowTest) { - setDatabase("root", "test"); +TEST_F(ParserInsertTest, singleTableMultiRowTest) { + useDb("root", "test"); - bind( - "insert into t1 values (now, 1, 'beijing', 3, 4, 5)(now+1s, 2, 'shanghai', 6, 7, 8)" + run("INSERT INTO t1 VALUES (now, 1, 'beijing', 3, 4, 5)" + "(now+1s, 2, 'shanghai', 6, 7, 8)" "(now+2s, 3, 'guangzhou', 9, 10, 11)"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(1, 3); - - bind( - "insert into t1 values (now, 1, 'beijing', 3, 4, 5)(now+1s, 2, 'shanghai', 6, 7, 8)" - "(now+2s, 3, 'guangzhou', 9, 10, 11)"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); } // INSERT INTO tb1_name VALUES (field1_value, ...) tb2_name VALUES (field1_value, ...) -TEST_F(InsertTest, multiTableSingleRowTest) { - setDatabase("root", "test"); +TEST_F(ParserInsertTest, multiTableSingleRowTest) { + useDb("root", "test"); - bind("insert into st1s1 values (now, 1, \"beijing\") st1s2 values (now, 10, \"131028\")"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(2, 1); - - bind("insert into st1s1 values (now, 1, \"beijing\") st1s2 values (now, 10, \"131028\")"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); + run("INSERT INTO st1s1 VALUES (now, 1, 'beijing') st1s2 VALUES (now, 10, '131028')"); } // INSERT INTO tb1_name VALUES (field1_value, ...) tb2_name VALUES (field1_value, ...) -TEST_F(InsertTest, multiTableMultiRowTest) { - setDatabase("root", "test"); +TEST_F(ParserInsertTest, multiTableMultiRowTest) { + useDb("root", "test"); - bind( - "insert into st1s1 values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")" - " st1s2 values (now, 10, \"131028\")(now+1s, 20, \"132028\")"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(2, 3, 2); - - bind( - "insert into st1s1 values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")" - " st1s2 values (now, 10, \"131028\")(now+1s, 20, \"132028\")"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); + run("INSERT INTO " + "st1s1 VALUES (now, 1, 'beijing')(now+1s, 2, 'shanghai')(now+2s, 3, 'guangzhou') " + "st1s2 VALUES (now, 10, '131028')(now+1s, 20, '132028')"); } // INSERT INTO // tb1_name USING st1_name [(tag1_name, ...)] TAGS (tag1_value, ...) VALUES (field1_value, ...) // tb2_name USING st2_name [(tag1_name, ...)] TAGS (tag1_value, ...) VALUES (field1_value, ...) -TEST_F(InsertTest, autoCreateTableTest) { - setDatabase("root", "test"); +TEST_F(ParserInsertTest, autoCreateTableTest) { + useDb("root", "test"); - bind( - "insert into st1s1 using st1 tags(1, 'wxy', now) " - "values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); - dumpReslut(); - checkReslut(1, 3); + run("INSERT INTO st1s1 USING st1 TAGS(1, 'wxy', now) " + "VALUES (now, 1, 'beijing')(now+1s, 2, 'shanghai')(now+2s, 3, 'guangzhou')"); - bind( - "insert into st1s1 using st1 (tag1, tag2) tags(1, 'wxy') values (now, 1, \"beijing\")" - "(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); + run("INSERT INTO st1s1 USING st1 (tag1, tag2) TAGS(1, 'wxy') (ts, c1, c2) " + "VALUES (now, 1, 'beijing')(now+1s, 2, 'shanghai')(now+2s, 3, 'guangzhou')"); - bind( - "insert into st1s1 using st1 tags(1, 'wxy', now) " - "values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); + run("INSERT INTO st1s1 (ts, c1, c2) USING st1 (tag1, tag2) TAGS(1, 'wxy') " + "VALUES (now, 1, 'beijing')(now+1s, 2, 'shanghai')(now+2s, 3, 'guangzhou')"); - bind( - "insert into st1s1 using st1 (tag1, tag2) tags(1, 'wxy') values (now, 1, \"beijing\")" - "(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); - ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); - - bind( - "insert into st1s1 using st1 tags(1, 'wxy', now) values (now, 1, \"beijing\")" - "st1s1 using st1 tags(1, 'wxy', now) values (now+1s, 2, \"shanghai\")"); - ASSERT_EQ(run(), TSDB_CODE_SUCCESS); + run("INSERT INTO " + "st1s1 USING st1 (tag1, tag2) TAGS(1, 'wxy') (ts, c1, c2) VALUES (now, 1, 'beijing') " + "st1s2 (ts, c1, c2) USING st1 TAGS(2, 'abc', now) VALUES (now+1s, 2, 'shanghai')"); } -TEST_F(InsertTest, toleranceTest) { - setDatabase("root", "test"); - - bind("insert into"); - ASSERT_NE(run(), TSDB_CODE_SUCCESS); - bind("insert into t"); - ASSERT_NE(run(), TSDB_CODE_SUCCESS); - - bind("insert into"); - ASSERT_NE(runAsync(), TSDB_CODE_SUCCESS); - bind("insert into t"); - ASSERT_NE(runAsync(), TSDB_CODE_SUCCESS); -} +} // namespace ParserTest diff --git a/source/libs/parser/test/parTestUtil.cpp b/source/libs/parser/test/parTestUtil.cpp index 10a9561300..98281b7bf0 100644 --- a/source/libs/parser/test/parTestUtil.cpp +++ b/source/libs/parser/test/parTestUtil.cpp @@ -233,8 +233,9 @@ class ParserTestBaseImpl { DO_WITH_THROW(g_mockCatalogService->catalogGetAllMeta, pCatalogReq, pMetaData); } - void doPutMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache) { - DO_WITH_THROW(putMetaDataToCache, pCatalogReq, pMetaData, pMetaCache, false); + void doPutMetaDataToCache(const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SParseMetaCache* pMetaCache, + bool isInsertValues) { + DO_WITH_THROW(putMetaDataToCache, pCatalogReq, pMetaData, pMetaCache, isInsertValues); } void doAuthenticate(SParseContext* pCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) { @@ -261,7 +262,9 @@ class ParserTestBaseImpl { void doParseSqlSyntax(SParseContext* pCxt, SQuery** pQuery, SCatalogReq* pCatalogReq) { DO_WITH_THROW(qParseSqlSyntax, pCxt, pQuery, pCatalogReq); ASSERT_NE(*pQuery, nullptr); - res_.parsedAst_ = toString((*pQuery)->pRoot); + if (nullptr != (*pQuery)->pRoot) { + res_.parsedAst_ = toString((*pQuery)->pRoot); + } } void doAnalyseSqlSemantic(SParseContext* pCxt, const SCatalogReq* pCatalogReq, const SMetaData* pMetaData, @@ -270,6 +273,17 @@ class ParserTestBaseImpl { res_.calcConstAst_ = toString(pQuery->pRoot); } + void doParseInsertSql(SParseContext* pCxt, SQuery** pQuery, SParseMetaCache* pMetaCache) { + DO_WITH_THROW(parseInsertSql, pCxt, pQuery, pMetaCache); + ASSERT_NE(*pQuery, nullptr); + res_.parsedAst_ = toString((*pQuery)->pRoot); + } + + void doParseInsertSyntax(SParseContext* pCxt, SQuery** pQuery, SParseMetaCache* pMetaCache) { + DO_WITH_THROW(parseInsertSyntax, pCxt, pQuery, pMetaCache); + ASSERT_NE(*pQuery, nullptr); + } + string toString(const SNode* pRoot) { char* pStr = NULL; int32_t len = 0; @@ -287,15 +301,20 @@ class ParserTestBaseImpl { SParseContext cxt = {0}; setParseContext(sql, &cxt); - unique_ptr query((SQuery**)taosMemoryCalloc(1, sizeof(SQuery*)), _destroyQuery); - doParse(&cxt, query.get()); - SQuery* pQuery = *(query.get()); + if (qIsInsertValuesSql(cxt.pSql, cxt.sqlLen)) { + unique_ptr query((SQuery**)taosMemoryCalloc(1, sizeof(SQuery*)), _destroyQuery); + doParseInsertSql(&cxt, query.get(), nullptr); + } else { + unique_ptr query((SQuery**)taosMemoryCalloc(1, sizeof(SQuery*)), _destroyQuery); + doParse(&cxt, query.get()); + SQuery* pQuery = *(query.get()); - doAuthenticate(&cxt, pQuery, nullptr); + doAuthenticate(&cxt, pQuery, nullptr); - doTranslate(&cxt, pQuery, nullptr); + doTranslate(&cxt, pQuery, nullptr); - doCalculateConstant(&cxt, pQuery); + doCalculateConstant(&cxt, pQuery); + } if (g_dump) { dump(); @@ -338,13 +357,18 @@ class ParserTestBaseImpl { setParseContext(sql, &cxt, true); unique_ptr query((SQuery**)taosMemoryCalloc(1, sizeof(SQuery*)), _destroyQuery); - doParse(&cxt, query.get()); - SQuery* pQuery = *(query.get()); - - bool request = true; + bool request = true; unique_ptr > metaCache( new SParseMetaCache(), bind(_destoryParseMetaCache, _1, cref(request))); - doCollectMetaKey(&cxt, pQuery, metaCache.get()); + bool isInsertValues = qIsInsertValuesSql(cxt.pSql, cxt.sqlLen); + if (isInsertValues) { + doParseInsertSyntax(&cxt, query.get(), metaCache.get()); + } else { + doParse(&cxt, query.get()); + doCollectMetaKey(&cxt, *(query.get()), metaCache.get()); + } + + SQuery* pQuery = *(query.get()); unique_ptr catalogReq(new SCatalogReq(), MockCatalogService::destoryCatalogReq); @@ -358,13 +382,17 @@ class ParserTestBaseImpl { metaCache.reset(new SParseMetaCache()); request = false; - doPutMetaDataToCache(catalogReq.get(), metaData.get(), metaCache.get()); + doPutMetaDataToCache(catalogReq.get(), metaData.get(), metaCache.get(), isInsertValues); - doAuthenticate(&cxt, pQuery, metaCache.get()); + if (isInsertValues) { + doParseInsertSql(&cxt, query.get(), metaCache.get()); + } else { + doAuthenticate(&cxt, pQuery, metaCache.get()); - doTranslate(&cxt, pQuery, metaCache.get()); + doTranslate(&cxt, pQuery, metaCache.get()); - doCalculateConstant(&cxt, pQuery); + doCalculateConstant(&cxt, pQuery); + } } catch (const TerminateFlag& e) { // success and terminate } catch (const runtime_error& e) { From 2cd7f52c59284f3b8b6bbbe9e90407440d611428 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Mon, 15 Aug 2022 14:46:47 +0800 Subject: [PATCH 025/108] Update 01-docker.md docs: update docker run port --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 0cbc23727a..949d54f77b 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -13,7 +13,7 @@ title: 通过 Docker 快速体验 TDengine 如果已经安装了 docker, 只需执行下面的命令。 ```shell -docker run -d -p 6043-6049:6043-6049/udp tdengine/tdengine +docker run -d -p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine ``` 注意:TDengine 3.0 服务端仅使用 6030 TCP 端口。6041 为 taosAdapter 所使用提供 REST 服务端口。6043-6049 为 taosAdapter 提供第三方应用接入所使用端口,可根据需要选择是否打开。 From 6a9dc072e5147dd9be16f98750c45e476c8c3289 Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 15 Aug 2022 14:59:02 +0800 Subject: [PATCH 026/108] docs: modify tmq document --- docs/zh/07-develop/{07-tmq.md => 07-tmq.mdx} | 141 +++++++++++++++++-- 1 file changed, 127 insertions(+), 14 deletions(-) rename docs/zh/07-develop/{07-tmq.md => 07-tmq.mdx} (60%) diff --git a/docs/zh/07-develop/07-tmq.md b/docs/zh/07-develop/07-tmq.mdx similarity index 60% rename from docs/zh/07-develop/07-tmq.md rename to docs/zh/07-develop/07-tmq.mdx index 25d468cad3..5cf3554f46 100644 --- a/docs/zh/07-develop/07-tmq.md +++ b/docs/zh/07-develop/07-tmq.mdx @@ -29,6 +29,9 @@ import CDemo from "./_sub_c.mdx"; TMQ 的 API 中,与订阅相关的主要数据结构和API如下: + + + ```c typedef struct tmq_t tmq_t; typedef struct tmq_conf_t tmq_conf_t; @@ -64,6 +67,30 @@ DLL_EXPORT void tmq_conf_set_auto_commit_cb(tmq_conf_t *conf, tmq_comm 这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面C语言的示例代码。 + + + +```java +void subscribe(Collection topics) throws SQLException; + +void unsubscribe() throws SQLException; + +Set subscription() throws SQLException; + +ConsumerRecords poll(Duration timeout) throws SQLException; + +void commitAsync(); + +void commitAsync(OffsetCommitCallback callback); + +void commitSync() throws SQLException; + +void close() throws SQLException; +``` + + + + ## 写入数据 首先完成建库、建一张超级表和多张子表操作,然后就可以写入数据了,比如: @@ -108,19 +135,22 @@ TMQ支持多种订阅类型: 对于consumer, 目前支持的config包括: -| 参数名称 | 参数值 | 备注 | -| ---------------------------- | ------------------------------ | ------------------------------------------------------ | -| group.id | 最大长度:192 | | -| enable.auto.commit | 合法值:true, false | | -| auto.commit.interval.ms | | | -| auto.offset.reset | 合法值:earliest, latest, none | | -| td.connect.ip | 用于连接,同taos_connect的参数 | | -| td.connect.user | 用于连接,同taos_connect的参数 | | -| td.connect.pass | 用于连接,同taos_connect的参数 | | -| td.connect.port | 用于连接,同taos_connect的参数 | | -| enable.heartbeat.background | 合法值:true, false | 开启后台心跳,即consumer不会因为长时间不poll而认为离线 | -| experimental.snapshot.enable | 合法值:true, false | 从wal开始消费,还是从tsbs开始消费 | -| msg.with.table.name | 合法值:true, false | 从消息中能否解析表名 | + + + +| 参数名称 | 参数说明 | 备注 | +| ---------------------------- |----------------------------|----------------------------| +| group.id | | 最大长度:192 | +| enable.auto.commit | | 合法值:true, false | +| auto.commit.interval.ms | | | +| auto.offset.reset | | 合法值:earliest, latest, none | +| td.connect.ip | | 用于连接,同taos_connect的参数 | | +| td.connect.user | | 用于连接,同taos_connect的参数 | | +| td.connect.pass | | 用于连接,同taos_connect的参数 | | +| td.connect.port | | 用于连接,同taos_connect的参数 | | +| enable.heartbeat.background |开启后台心跳,即consumer不会因为长时间不poll而认为离线 | 合法值:true, false | | +| experimental.snapshot.enable |从wal开始消费,还是从tsbs开始消费 | 合法值:true, false | | +| msg.with.table.name | 从消息中能否解析表名 | 合法值:true, false | ```sql /* 根据需要,设置消费组(group.id)、自动提交(enable.auto.commit)、自动提交时间间隔(auto.commit.interval.ms)、用户名(td.connect.user)、密码(td.connect.pass)等参数 */ @@ -139,10 +169,54 @@ TMQ支持多种订阅类型: tmq_conf_destroy(conf); ``` + + + +| 参数名称 | 参数值 | 备注 | +| ---------------------------- |----------------------------|------------------------------------------------------------------------------------------------| +| group.id | 最大长度:192,必填 | consumer 所在组 id | +| client.id | 最大长度:192 | consumer id | +| enable.auto.commit | 合法值:true, false | 是否允许自动提交 | +| auto.commit.interval.ms | | 自动提交时间间隔 | +| auto.offset.reset | 合法值:earliest, latest, none | offset 消费位置 | +| bootstrap.servers | 用于创建连接 | 服务端 ip + port | +| td.connect.user | 用于创建连接,同 taos_connect 的参数 | 服务端用户名 | +| td.connect.pass | 用于创建连接,同 taos_connect 的参数 | 服务端密码 | +| enable.heartbeat.background | 合法值:true, false | 开启后台心跳,即 consumer 不会因为长时间不 poll 而认为离线 | +| experimental.snapshot.enable | 合法值:true, false | 从 wal 开始消费,还是从 tsbs 开始消费 | +| msg.with.table.name | 合法值:true, false | 从消息中能否解析表名 | +| value.deserializer | value 值解析方法 | 此方法应实现 com.taosdata.jdbc.tmq.Deserializer 接口或是继承 com.taosdata.jdbc.tmq.ReferenceDeserializer 类 | +| value.deserializer.encoding | value 中使用字符编码集 | | + +```java +import com.taosdata.jdbc.tmq.ReferenceDeserializer; + +public class MetersDeserializer extends ReferenceDeserializer { +} +``` + +```java + Properties properties = new Properties(); + properties.setProperty("enable.auto.commit", "true"); + properties.setProperty("auto.commit.interval.ms", "1000"); + properties.setProperty("group.id", "cgrpName"); + properties.setProperty("bootstrap.servers", "127.0.0.1:6030"); + properties.setProperty("td.connect.user", "root"); + properties.setProperty("td.connect.pass", "taosdata"); + properties.setProperty("auto.offset.reset", "earliest"); + properties.setProperty("msg.with.table.name", "true"); + properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); + + TaosConsumer consumer = new TaosConsumer<>(properties) +``` + + + + 上述配置中包括consumer group ID,如果多个 consumer 指定的 consumer group ID一样,则自动形成一个consumer group,共享消费进度。 -## 创建 topic 列表 +## 订阅 topic 列表 单个consumer支持同时订阅多个topic。 @@ -153,6 +227,9 @@ TMQ支持多种订阅类型: ## 启动订阅并开始消费 + + + ``` /* 启动订阅 */ tmq_subscribe(tmq, topicList); @@ -165,10 +242,32 @@ TMQ支持多种订阅类型: } ``` + + + +```java + List topics = new ArrayList<>(); + topics.add("tmq_topic"); + consumer.subscribe(topics); + + while(running){ + ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); + for (Meters meter : meters) { + processMsg(meter); + } + } +``` + + + + 这里是一个 **while** 循环,每调用一次tmq_consumer_poll(),获取一个消息,该消息与普通查询返回的结果集完全相同,可以使用相同的解析API完成消息内容的解析。 ## 结束消费 + + + ```sql /* 取消订阅 */ tmq_unsubscribe(tmq); @@ -177,6 +276,20 @@ TMQ支持多种订阅类型: tmq_consumer_close(tmq); ``` + + + +```java + /* 取消订阅 */ + consumer.unsubscribe(); + + /* 关闭消费 */ + consumer.close(); +``` + + + + ## 删除topic 如果不再需要,可以删除创建topic,但注意:只有没有被订阅的topic才能别删除。 From b1bbcf93366908504d46a49adb2440f0b15ebc3e Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Mon, 15 Aug 2022 14:59:37 +0800 Subject: [PATCH 027/108] Update cpp.mdx --- docs/zh/14-reference/03-connector/cpp.mdx | 44 ----------------------- 1 file changed, 44 deletions(-) diff --git a/docs/zh/14-reference/03-connector/cpp.mdx b/docs/zh/14-reference/03-connector/cpp.mdx index 3a8367ef33..bd5776d035 100644 --- a/docs/zh/14-reference/03-connector/cpp.mdx +++ b/docs/zh/14-reference/03-connector/cpp.mdx @@ -404,47 +404,3 @@ TDengine 的异步 API 均采用非阻塞调用模式。应用程序可以用多 **支持版本** 该功能接口从 2.3.0.0 版本开始支持。 - -### 订阅和消费 API - -订阅 API 目前支持订阅一张或多张表,并通过定期轮询的方式不断获取写入表中的最新数据。 - -- `TAOS_SUB *taos_subscribe(TAOS* taos, int restart, const char* topic, const char *sql, TAOS_SUBSCRIBE_CALLBACK fp, void *param, int interval)` - - 该函数负责启动订阅服务,成功时返回订阅对象,失败时返回 `NULL`,其参数为: - - - taos:已经建立好的数据库连接 - - restart:如果订阅已经存在,是重新开始,还是继续之前的订阅 - - topic:订阅的主题(即名称),此参数是订阅的唯一标识 - - sql:订阅的查询语句,此语句只能是 `select` 语句,只应查询原始数据,只能按时间正序查询数据 - - fp:收到查询结果时的回调函数(稍后介绍函数原型),只在异步调用时使用,同步调用时此参数应该传 `NULL` - - param:调用回调函数时的附加参数,系统 API 将其原样传递到回调函数,不进行任何处理 - - interval:轮询周期,单位为毫秒。异步调用时,将根据此参数周期性的调用回调函数,为避免对系统性能造成影响,不建议将此参数设置的过小;同步调用时,如两次调用 `taos_consume()` 的间隔小于此周期,API 将会阻塞,直到时间间隔超过此周期。 - -- `typedef void (*TAOS_SUBSCRIBE_CALLBACK)(TAOS_SUB* tsub, TAOS_RES *res, void* param, int code)` - - 异步模式下,回调函数的原型,其参数为: - - - tsub:订阅对象 - - res:查询结果集,注意结果集中可能没有记录 - - param:调用 `taos_subscribe()` 时客户程序提供的附加参数 - - code:错误码 - - :::note - 在这个回调函数里不可以做耗时过长的处理,尤其是对于返回的结果集中数据较多的情况,否则有可能导致客户端阻塞等异常状态。如果必须进行复杂计算,则建议在另外的线程中进行处理。 - - ::: - -- `TAOS_RES *taos_consume(TAOS_SUB *tsub)` - - 同步模式下,该函数用来获取订阅的结果。 用户应用程序将其置于一个循环之中。 如两次调用 `taos_consume()` 的间隔小于订阅的轮询周期,API 将会阻塞,直到时间间隔超过此周期。如果数据库有新记录到达,该 API 将返回该最新的记录,否则返回一个没有记录的空结果集。 如果返回值为 `NULL`,说明系统出错。 异步模式下,用户程序不应调用此 API。 - - :::note - 在调用 `taos_consume()` 之后,用户应用应确保尽快调用 `taos_fetch_row()` 或 `taos_fetch_block()` 来处理订阅结果,否则服务端会持续缓存查询结果数据等待客户端读取,极端情况下会导致服务端内存消耗殆尽,影响服务稳定性。 - - ::: - -- `void taos_unsubscribe(TAOS_SUB *tsub, int keepProgress)` - - 取消订阅。 如参数 `keepProgress` 不为 0,API 会保留订阅的进度信息,后续调用 `taos_subscribe()` 时可以基于此进度继续;否则将删除进度信息,后续只能重新开始读取数据。 - From f927d6c384f2b9bdac08d9323be5f2ed30008baf Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Mon, 15 Aug 2022 15:01:08 +0800 Subject: [PATCH 028/108] Update java.mdx --- docs/zh/14-reference/03-connector/java.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/14-reference/03-connector/java.mdx b/docs/zh/14-reference/03-connector/java.mdx index c9d74dcaeb..ef9da4beee 100644 --- a/docs/zh/14-reference/03-connector/java.mdx +++ b/docs/zh/14-reference/03-connector/java.mdx @@ -712,7 +712,7 @@ while(true) { } ``` -`poll` 每次调用获取一个消息。请按需选择合理的调用 `poll` 的频率(如例子中的 `Duration.ofMillis(100)`),否则会给服务端造成不必要的压力。 +`poll` 每次调用获取一个消息。 #### 关闭订阅 From dc25401c59420b5aff2d8289b08541f7a0697074 Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 15 Aug 2022 15:12:28 +0800 Subject: [PATCH 029/108] docs: remove space --- docs/zh/07-develop/07-tmq.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 5cf3554f46..51a7d862ee 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -148,8 +148,8 @@ TMQ支持多种订阅类型: | td.connect.user | | 用于连接,同taos_connect的参数 | | | td.connect.pass | | 用于连接,同taos_connect的参数 | | | td.connect.port | | 用于连接,同taos_connect的参数 | | -| enable.heartbeat.background |开启后台心跳,即consumer不会因为长时间不poll而认为离线 | 合法值:true, false | | -| experimental.snapshot.enable |从wal开始消费,还是从tsbs开始消费 | 合法值:true, false | | +| enable.heartbeat.background |开启后台心跳,即consumer不会因为长时间不poll而认为离线 | 合法值:true, false | +| experimental.snapshot.enable |从wal开始消费,还是从tsbs开始消费 | 合法值:true, false | | msg.with.table.name | 从消息中能否解析表名 | 合法值:true, false | ```sql From 1d265e1ac6b71e2811d80decbb5080a8d4f18024 Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 15 Aug 2022 15:23:18 +0800 Subject: [PATCH 030/108] docs: add consumer.unsubscribe() --- .../src/main/java/com/taos/example/SubscribeDemo.java | 1 + docs/zh/07-develop/07-tmq.mdx | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/examples/java/src/main/java/com/taos/example/SubscribeDemo.java b/docs/examples/java/src/main/java/com/taos/example/SubscribeDemo.java index b1e675cdf6..50e8b35771 100644 --- a/docs/examples/java/src/main/java/com/taos/example/SubscribeDemo.java +++ b/docs/examples/java/src/main/java/com/taos/example/SubscribeDemo.java @@ -68,6 +68,7 @@ public class SubscribeDemo { System.out.println(meter); } } + consumer.unsubscribe(); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 51a7d862ee..8565b6833a 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -185,14 +185,14 @@ TMQ支持多种订阅类型: | enable.heartbeat.background | 合法值:true, false | 开启后台心跳,即 consumer 不会因为长时间不 poll 而认为离线 | | experimental.snapshot.enable | 合法值:true, false | 从 wal 开始消费,还是从 tsbs 开始消费 | | msg.with.table.name | 合法值:true, false | 从消息中能否解析表名 | -| value.deserializer | value 值解析方法 | 此方法应实现 com.taosdata.jdbc.tmq.Deserializer 接口或是继承 com.taosdata.jdbc.tmq.ReferenceDeserializer 类 | -| value.deserializer.encoding | value 中使用字符编码集 | | +| value.deserializer | 指定 value 解析方法 | 此方法应实现 com.taosdata.jdbc.tmq.Deserializer 接口或是继承 com.taosdata.jdbc.tmq.ReferenceDeserializer 类 | +| value.deserializer.encoding | 指定 value 解析使用的字符编码集 | | ```java -import com.taosdata.jdbc.tmq.ReferenceDeserializer; + import com.taosdata.jdbc.tmq.ReferenceDeserializer; -public class MetersDeserializer extends ReferenceDeserializer { -} + public class MetersDeserializer extends ReferenceDeserializer { + } ``` ```java From f784a6aec16b940571c9b30a5cfbed436161952f Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Mon, 15 Aug 2022 15:24:47 +0800 Subject: [PATCH 031/108] Update 13-tmq.md --- docs/zh/12-taos-sql/13-tmq.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/docs/zh/12-taos-sql/13-tmq.md b/docs/zh/12-taos-sql/13-tmq.md index 4d9c475a38..b05d2bf680 100644 --- a/docs/zh/12-taos-sql/13-tmq.md +++ b/docs/zh/12-taos-sql/13-tmq.md @@ -1,6 +1,6 @@ --- -sidebar_label: 消息队列 -title: 消息队列 +sidebar_label: 数据订阅 +title: 数据订阅 --- TDengine 3.0.0.0 开始对消息队列做了大幅的优化和增强以简化用户的解决方案。 @@ -8,24 +8,17 @@ TDengine 3.0.0.0 开始对消息队列做了大幅的优化和增强以简化用 ## 创建订阅主题 ```sql -CREATE TOPIC [IF NOT EXISTS] topic_name AS {subquery | DATABASE db_name | STABLE stb_name }; +CREATE TOPIC [IF NOT EXISTS] topic_name AS subquery; ``` -订阅主题包括三种:列订阅、超级表订阅和数据库订阅。 -**列订阅是**用 subquery 描述,支持过滤和标量函数和 UDF 标量函数,不支持 JOIN、GROUP BY、窗口切分子句、聚合函数和 UDF 聚合函数。列订阅规则如下: +TOPIC 支持过滤和标量函数和 UDF 标量函数,不支持 JOIN、GROUP BY、窗口切分子句、聚合函数和 UDF 聚合函数。列订阅规则如下: 1. TOPIC 一旦创建则返回结果的字段确定 2. 被订阅或用于计算的列不可被删除、修改 3. 列可以新增,但新增的列不出现在订阅结果字段中 4. 对于 select \*,则订阅展开为创建时所有的列(子表、普通表为数据列,超级表为数据列加标签列) -**超级表订阅和数据库订阅**规则如下: - -1. 被订阅主体的 schema 变更不受限 -2. 返回消息中 schema 是块级别的,每块的 schema 可能不一样 -3. 列变更后写入的数据若未落盘,将以写入时的 schema 返回 -4. 列变更后写入的数据若未已落盘,将以落盘时的 schema 返回 ## 删除订阅主题 From e61156d316b125a4056da35f9fc83521d9a30186 Mon Sep 17 00:00:00 2001 From: slzhou Date: Mon, 15 Aug 2022 15:35:39 +0800 Subject: [PATCH 032/108] fix: set time window overlapping to true when windows end past block end --- source/libs/executor/src/scanoperator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index d8de8df163..255a51d3da 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -128,7 +128,7 @@ static bool overlapWithTimeWindow(SInterval* pInterval, SDataBlockInfo* pBlockIn w = getAlignQueryTimeWindow(pInterval, pInterval->precision, pBlockInfo->window.skey); assert(w.ekey >= pBlockInfo->window.skey); - if (w.ekey < pBlockInfo->window.ekey) { + if (MAX(w.skey, pBlockInfo->window.skey) <= MIN(w.ekey, pBlockInfo->window.ekey)) { return true; } From 7d24d9e6adbfdd351aec000a95fa33e6e47ae006 Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 15 Aug 2022 15:43:15 +0800 Subject: [PATCH 033/108] docs(REST): improve REST API document --- docs/zh/14-reference/02-rest-api/02-rest-api.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/14-reference/02-rest-api/02-rest-api.mdx b/docs/zh/14-reference/02-rest-api/02-rest-api.mdx index f4aae74bd7..4b9171c07d 100644 --- a/docs/zh/14-reference/02-rest-api/02-rest-api.mdx +++ b/docs/zh/14-reference/02-rest-api/02-rest-api.mdx @@ -2,7 +2,7 @@ title: REST API --- -为支持各种不同类型平台的开发,TDengine 提供符合 REST 设计标准的 API,即 REST API。为最大程度降低学习成本,不同于其他数据库 REST API 的设计方法,TDengine 直接通过 HTTP POST 请求 BODY 中包含的 SQL 语句来操作数据库,仅需要一个 URL。REST 连接器的使用参见[视频教程](https://www.taosdata.com/blog/2020/11/11/1965.html)。 +为支持各种不同类型平台的开发,TDengine 提供符合 REST 设计标准的 API,即 REST API。为最大程度降低学习成本,不同于其他数据库 REST API 的设计方法,TDengine 直接通过 HTTP POST 请求 BODY 中包含的 SQL 语句来操作数据库,仅需要一个 URL。REST 连接器的使用参见 [视频教程](https://www.taosdata.com/blog/2020/11/11/1965.html)。 :::note 与原生连接器的一个区别是,RESTful 接口是无状态的,因此 `USE db_name` 指令没有效果,所有对表名、超级表名的引用都需要指定数据库名前缀。支持在 RESTful URL 中指定 db_name,这时如果 SQL 语句中没有指定数据库名前缀的话,会使用 URL 中指定的这个 db_name。 @@ -208,7 +208,7 @@ curl -L -u username:password -d "" :/rest/sql/[db_name] - rows:(`int`)数据返回行数。 - data:(`[][]any`)具体数据内容(时间格式仅支持 RFC3339,结果集为 0 时区)。 -列类型使用如下字符串: +列类型使用如下字符串: - "NULL" - "BOOL" From a88c8a4511e4358b67127b79dc6abb117f8d12d4 Mon Sep 17 00:00:00 2001 From: "wenzhouwww@live.cn" Date: Mon, 15 Aug 2022 15:52:05 +0800 Subject: [PATCH 034/108] test:update test case of irate --- tests/system-test/2-query/irate.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/system-test/2-query/irate.py b/tests/system-test/2-query/irate.py index a64e7695c3..9738879145 100644 --- a/tests/system-test/2-query/irate.py +++ b/tests/system-test/2-query/irate.py @@ -69,7 +69,7 @@ class TDTestCase: comput_irate_value = origin_result[1][0]*1000/( origin_result[1][-1] - origin_result[0][-1]) else: comput_irate_value = (origin_result[1][0] - origin_result[0][0])*1000/( origin_result[1][-1] - origin_result[0][-1]) - if abs(comput_irate_value - irate_value) <= 0.0000001: + if abs(comput_irate_value - irate_value) <= 0.001: tdLog.info(" irate work as expected , sql is %s "% irate_sql) else: tdLog.exit(" irate work not as expected , sql is %s "% irate_sql) @@ -78,9 +78,11 @@ class TDTestCase: # prepare datas tdSql.execute( f"create database if not exists {dbname} keep 3650 duration 1000") + tdSql.execute(f"use {dbname} ") + time.sleep(2) tdSql.execute( - f'''create table {dbname}.stb1 + f'''create stable {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t0 timestamp, tag1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32)) ''' From 65d4b024f39b9927188003d25fa6aa0e085773fd Mon Sep 17 00:00:00 2001 From: "wenzhouwww@live.cn" Date: Mon, 15 Aug 2022 15:52:53 +0800 Subject: [PATCH 035/108] update --- tests/system-test/fulltest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/fulltest.sh b/tests/system-test/fulltest.sh index e9331de6bf..f3bbbfc562 100755 --- a/tests/system-test/fulltest.sh +++ b/tests/system-test/fulltest.sh @@ -111,7 +111,7 @@ python3 ./test.py -f 2-query/histogram.py -R python3 ./test.py -f 2-query/hyperloglog.py python3 ./test.py -f 2-query/hyperloglog.py -R python3 ./test.py -f 2-query/irate.py -# python3 ./test.py -f 2-query/irate.py -R +python3 ./test.py -f 2-query/irate.py -R python3 ./test.py -f 2-query/join.py python3 ./test.py -f 2-query/join.py -R From 3355ad5150438938b5bcb9f8384b40adc59661cd Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Mon, 15 Aug 2022 16:05:09 +0800 Subject: [PATCH 036/108] enh: insert client optimize --- source/libs/parser/src/parInsert.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/libs/parser/src/parInsert.c b/source/libs/parser/src/parInsert.c index 44ad68356c..31ae35e717 100644 --- a/source/libs/parser/src/parInsert.c +++ b/source/libs/parser/src/parInsert.c @@ -1464,10 +1464,16 @@ static int32_t parseInsertBody(SInsertParseContext* pCxt) { } STableDataBlocks* dataBuf = NULL; - CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, &pCxt->pTableMeta->uid, sizeof(pCxt->pTableMeta->uid), - TSDB_DEFAULT_PAYLOAD_SIZE, sizeof(SSubmitBlk), - getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, &dataBuf, NULL, - &pCxt->createTblReq)); + if (pCxt->pComCxt->async) { + CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, &pCxt->pTableMeta->uid, sizeof(pCxt->pTableMeta->uid), + TSDB_DEFAULT_PAYLOAD_SIZE, sizeof(SSubmitBlk), + getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, &dataBuf, NULL, + &pCxt->createTblReq)); + } else { + CHECK_CODE(getDataBlockFromList(pCxt->pTableBlockHashObj, tbFName, strlen(tbFName), TSDB_DEFAULT_PAYLOAD_SIZE, + sizeof(SSubmitBlk), getTableInfo(pCxt->pTableMeta).rowSize, pCxt->pTableMeta, + &dataBuf, NULL, &pCxt->createTblReq)); + } if (NULL != pBoundColsStart) { char* pCurrPos = pCxt->pSql; From d3bf82fc02e9a055735ccb57e2a0d850c54c5c2b Mon Sep 17 00:00:00 2001 From: slzhou Date: Mon, 15 Aug 2022 16:24:30 +0800 Subject: [PATCH 037/108] fix: clone nodes when create partition targets --- source/libs/planner/src/planLogicCreater.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index c843dd0a67..71f084d412 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -1002,7 +1002,7 @@ static int32_t createPartitionLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pS int32_t code = nodesCollectColumns(pSelect, SQL_CLAUSE_PARTITION_BY, NULL, COLLECT_COL_TYPE_ALL, &pPartition->node.pTargets); if (TSDB_CODE_SUCCESS == code && NULL == pPartition->node.pTargets) { - code = nodesListMakeStrictAppend(&pPartition->node.pTargets, nodesListGetNode(pCxt->pCurrRoot->pTargets, 0)); + code = nodesListMakeStrictAppend(&pPartition->node.pTargets, nodesCloneNode(nodesListGetNode(pCxt->pCurrRoot->pTargets, 0))); } if (TSDB_CODE_SUCCESS == code) { From b04bc1aee239f94b9c991e9cbafe72591028e00b Mon Sep 17 00:00:00 2001 From: "wenzhouwww@live.cn" Date: Mon, 15 Aug 2022 16:34:38 +0800 Subject: [PATCH 038/108] test:update metchod about get current datetime --- tests/pytest/crash_gen/crash_gen_main.py | 2 +- tests/pytest/crash_gen/shared/misc.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pytest/crash_gen/crash_gen_main.py b/tests/pytest/crash_gen/crash_gen_main.py index 203541f14a..600c64b8e6 100755 --- a/tests/pytest/crash_gen/crash_gen_main.py +++ b/tests/pytest/crash_gen/crash_gen_main.py @@ -1120,7 +1120,7 @@ class Database: @classmethod def setupLastTick(cls): # start time will be auto generated , start at 10 years ago local time - local_time = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-16] + local_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-16] local_epoch_time = [int(i) for i in local_time.split("-")] #local_epoch_time will be such as : [2022, 7, 18] diff --git a/tests/pytest/crash_gen/shared/misc.py b/tests/pytest/crash_gen/shared/misc.py index fd73f97fcb..6a8a59a027 100644 --- a/tests/pytest/crash_gen/shared/misc.py +++ b/tests/pytest/crash_gen/shared/misc.py @@ -46,7 +46,7 @@ class Logging: @classmethod def _get_datetime(cls): - return datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-1] + return datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-1] @classmethod def getLogger(cls): From 45cc2a67ae27b97fac56def87dac1e5265de8132 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Mon, 15 Aug 2022 16:37:40 +0800 Subject: [PATCH 039/108] os: fix win lack dll error --- cmake/cmake.define | 8 +++++++- contrib/CMakeLists.txt | 2 +- source/os/src/osRand.c | 8 ++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cmake/cmake.define b/cmake/cmake.define index 5639d212d7..989b69a89b 100644 --- a/cmake/cmake.define +++ b/cmake/cmake.define @@ -81,7 +81,7 @@ ENDIF () IF (TD_WINDOWS) MESSAGE("${Yellow} set compiler flag for Windows! ${ColourReset}") - SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32 /Zi") + SET(COMMON_FLAGS "/w /D_WIN32 /DWIN32 /Zi /MTd") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") # IF (MSVC AND (MSVC_VERSION GREATER_EQUAL 1900)) # SET(COMMON_FLAGS "${COMMON_FLAGS} /Wv:18") @@ -92,6 +92,12 @@ IF (TD_WINDOWS) IF (CMAKE_DEPFILE_FLAGS_CXX) SET(CMAKE_DEPFILE_FLAGS_CXX "") ENDIF () + IF (CMAKE_C_FLAGS_DEBUG) + SET(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "" FORCE) + ENDIF () + IF (CMAKE_CXX_FLAGS_DEBUG) + SET(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "" FORCE) + ENDIF () SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}") diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index b4e8825431..294b59fe95 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -273,7 +273,7 @@ endif(${BUILD_WITH_NURAFT}) # pthread if(${BUILD_PTHREAD}) - set(CMAKE_BUILD_TYPE release) + set(CMAKE_BUILD_TYPE debug) add_definitions(-DPTW32_STATIC_LIB) add_subdirectory(pthread EXCLUDE_FROM_ALL) set_target_properties(libpthreadVC3 PROPERTIES OUTPUT_NAME pthread) diff --git a/source/os/src/osRand.c b/source/os/src/osRand.c index 461a72e962..bd2bfa486e 100644 --- a/source/os/src/osRand.c +++ b/source/os/src/osRand.c @@ -37,9 +37,13 @@ uint32_t taosRandR(uint32_t *pSeed) { uint32_t taosSafeRand(void) { #ifdef WINDOWS - uint32_t seed; + uint32_t seed = taosRand(); HCRYPTPROV hCryptProv; - if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) return seed; + if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) { + if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) { + return seed; + } + } if (hCryptProv != NULL) { if (!CryptGenRandom(hCryptProv, 4, &seed)) return seed; } From a874c5c8e98df54bae96323fc94346e836127186 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Mon, 15 Aug 2022 16:37:49 +0800 Subject: [PATCH 040/108] Update irate.py --- tests/system-test/2-query/irate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/2-query/irate.py b/tests/system-test/2-query/irate.py index 9738879145..47998abbe7 100644 --- a/tests/system-test/2-query/irate.py +++ b/tests/system-test/2-query/irate.py @@ -69,7 +69,7 @@ class TDTestCase: comput_irate_value = origin_result[1][0]*1000/( origin_result[1][-1] - origin_result[0][-1]) else: comput_irate_value = (origin_result[1][0] - origin_result[0][0])*1000/( origin_result[1][-1] - origin_result[0][-1]) - if abs(comput_irate_value - irate_value) <= 0.001: + if abs(comput_irate_value - irate_value) <= 0.0000001: tdLog.info(" irate work as expected , sql is %s "% irate_sql) else: tdLog.exit(" irate work not as expected , sql is %s "% irate_sql) From ac39e06207c9ab28fe5772014e99d743ed20aca7 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Mon, 15 Aug 2022 16:38:17 +0800 Subject: [PATCH 041/108] Update irate.py --- tests/system-test/2-query/irate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/2-query/irate.py b/tests/system-test/2-query/irate.py index 47998abbe7..80e32a9885 100644 --- a/tests/system-test/2-query/irate.py +++ b/tests/system-test/2-query/irate.py @@ -82,7 +82,7 @@ class TDTestCase: tdSql.execute(f"use {dbname} ") time.sleep(2) tdSql.execute( - f'''create stable {dbname}.stb1 + f'''create table {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t0 timestamp, tag1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32)) ''' From 0a75d71b55f33b1e8de1ad653c3a8d1f921acb37 Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Mon, 15 Aug 2022 16:39:05 +0800 Subject: [PATCH 042/108] Update irate.py --- tests/system-test/2-query/irate.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/system-test/2-query/irate.py b/tests/system-test/2-query/irate.py index 80e32a9885..a64e7695c3 100644 --- a/tests/system-test/2-query/irate.py +++ b/tests/system-test/2-query/irate.py @@ -78,9 +78,7 @@ class TDTestCase: # prepare datas tdSql.execute( f"create database if not exists {dbname} keep 3650 duration 1000") - tdSql.execute(f"use {dbname} ") - time.sleep(2) tdSql.execute( f'''create table {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) From 35359ed4595df5b245d4b755668c677aa54be5da Mon Sep 17 00:00:00 2001 From: wenzhouwww Date: Mon, 15 Aug 2022 16:39:29 +0800 Subject: [PATCH 043/108] Update fulltest.sh --- tests/system-test/fulltest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/fulltest.sh b/tests/system-test/fulltest.sh index f3bbbfc562..e9331de6bf 100755 --- a/tests/system-test/fulltest.sh +++ b/tests/system-test/fulltest.sh @@ -111,7 +111,7 @@ python3 ./test.py -f 2-query/histogram.py -R python3 ./test.py -f 2-query/hyperloglog.py python3 ./test.py -f 2-query/hyperloglog.py -R python3 ./test.py -f 2-query/irate.py -python3 ./test.py -f 2-query/irate.py -R +# python3 ./test.py -f 2-query/irate.py -R python3 ./test.py -f 2-query/join.py python3 ./test.py -f 2-query/join.py -R From 9e2fd1d695d370b6c9f6a78c13ee93a8752ead5f Mon Sep 17 00:00:00 2001 From: slzhou Date: Mon, 15 Aug 2022 16:48:06 +0800 Subject: [PATCH 044/108] fix: pass windows compilation --- source/libs/executor/src/scanoperator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 255a51d3da..fa9e3a1d85 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -128,7 +128,7 @@ static bool overlapWithTimeWindow(SInterval* pInterval, SDataBlockInfo* pBlockIn w = getAlignQueryTimeWindow(pInterval, pInterval->precision, pBlockInfo->window.skey); assert(w.ekey >= pBlockInfo->window.skey); - if (MAX(w.skey, pBlockInfo->window.skey) <= MIN(w.ekey, pBlockInfo->window.ekey)) { + if (TMAX(w.skey, pBlockInfo->window.skey) <= TMIN(w.ekey, pBlockInfo->window.ekey)) { return true; } From 55e7f68582356eff6dbfc653e28166b46885f238 Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 17:28:42 +0800 Subject: [PATCH 045/108] docs(java): use tabular style in subscription document --- docs/zh/07-develop/07-tmq.mdx | 685 ++++++++++++++++++++++++++-------- 1 file changed, 526 insertions(+), 159 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 8565b6833a..5ed1639f72 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -14,23 +14,22 @@ import Node from "./_sub_node.mdx"; import CSharp from "./_sub_cs.mdx"; import CDemo from "./_sub_c.mdx"; +为了帮助应用实时获取写入 TDengine 的数据,或者以事件到达顺序处理数据,TDengine 提供了类似消息队列产品的数据订阅、消费接口。这样在很多场景下,采用 TDengine 的时序数据处理系统不再需要集成消息队列产品,比如 kafka, 从而简化系统设计的复杂度,降低运营维护成本。 -为了帮助应用实时获取写入 TDengine 的数据,或者以事件到达顺序处理数据,TDengine提供了类似消息队列产品的数据订阅、消费接口。这样在很多场景下,采用 TDengine 的时序数据处理系统不再需要集成消息队列产品,比如 kafka, 从而简化系统设计的复杂度,降低运营维护成本。 +与 kafka 一样,你需要定义 *topic*, 但 TDengine 的 *topic* 是基于一个已经存在的超级表、子表或普通表的查询条件,即一个 `SELECT` 语句。你可以使用 SQL 对标签、表名、列、表达式等条件进行过滤,以及对数据进行标量函数与 UDF 计算(不包括数据聚合)。与其他消息队列软件相比,这是 TDengine 数据订阅功能的最大的优势,它提供了更大的灵活性,数据的颗粒度可以由应用随时调整,而且数据的过滤与预处理交给 TDengine,而不是应用完成,有效的减少传输的数据量与应用的复杂度。 -与 kafka 一样,你需要定义 topic, 但 TDengine 的 topic 是基于一个已经存在的超级表、子表或普通表的查询条件,即一个 SELECT 语句。你可以使用 SQL 对标签、表名、列、表达式等条件进行过滤,以及对数据进行标量函数与 UDF 计算(不包括数据聚合)。与其他消息队列软件相比,这是 TDengine 数据订阅功能的最大的优势,它提供了更大的灵活性,数据的颗粒度可以由应用随时调整,而且数据的过滤与预处理交给 TDengine,而不是应用完成,有效的减少传输的数据量与应用的复杂度。 - -消费者订阅 topic 后,可以实时获得最新的数据。多个消费者可以组成一个消费者组 (consumer group), 一个消费者组里的多个消费者共享消费进度,便于多线程、分布式地消费数据,提高消费速度。但不同消费者组中的消费者即使消费同一个topic, 并不共享消费进度。一个消费者可以订阅多个 topic。如果订阅的是超级表,数据可能会分布在多个不同的 vnode 上,也就是多个 shard 上,这样一个消费组里有多个消费者可以提高消费效率。TDengine 的消息队列提供了消息的ACK机制,在宕机、重启等复杂环境下确保 at least once 消费。 +消费者订阅 *topic* 后,可以实时获得最新的数据。多个消费者可以组成一个消费者组 (consumer group), 一个消费者组里的多个消费者共享消费进度,便于多线程、分布式地消费数据,提高消费速度。但不同消费者组中的消费者即使消费同一个 topic, 并不共享消费进度。一个消费者可以订阅多个 topic。如果订阅的是超级表,数据可能会分布在多个不同的 vnode 上,也就是多个 shard 上,这样一个消费组里有多个消费者可以提高消费效率。TDengine 的消息队列提供了消息的 ACK 机制,在宕机、重启等复杂环境下确保 at least once 消费。 为了实现上述功能,TDengine 会为 WAL (Write-Ahead-Log) 文件自动创建索引以支持快速随机访问,并提供了灵活可配置的文件切换与保留机制:用户可以按需指定 WAL 文件保留的时间以及大小(详见 create database 语句)。通过以上方式将 WAL 改造成了一个保留事件到达顺序的、可持久化的存储引擎(但由于 TSDB 具有远比 WAL 更高的压缩率,我们不推荐保留太长时间,一般来说,不超过几天)。 对于以 topic 形式创建的查询,TDengine 将对接 WAL 而不是 TSDB 作为其存储引擎。在消费时,TDengine 根据当前消费进度从 WAL 直接读取数据,并使用统一的查询引擎实现过滤、变换等操作,将数据推送给消费者。 本文档不对消息队列本身的基础知识做介绍,如果需要了解,请自行搜索。 -## 主要数据结构和API +## 主要数据结构和 API -TMQ 的 API 中,与订阅相关的主要数据结构和API如下: +不同语言下, TMQ 订阅相关的 API 及数据结构如下: - - + + ```c typedef struct tmq_t tmq_t; @@ -65,10 +64,10 @@ DLL_EXPORT void tmq_conf_destroy(tmq_conf_t *conf); DLL_EXPORT void tmq_conf_set_auto_commit_cb(tmq_conf_t *conf, tmq_commit_cb *cb, void *param); ``` -这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面C语言的示例代码。 +这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面 C 语言的示例代码。 - + ```java void subscribe(Collection topics) throws SQLException; @@ -96,97 +95,115 @@ void close() throws SQLException; 首先完成建库、建一张超级表和多张子表操作,然后就可以写入数据了,比如: ```sql -drop database if exists tmqdb; -create database tmqdb; -create table tmqdb.stb (ts timestamp, c1 int, c2 float, c3 varchar(16) tags(t1 int, t3 varchar(16)); -create table tmqdb.ctb0 using tmqdb.stb tags(0, "subtable0"); -create table tmqdb.ctb1 using tmqdb.stb tags(1, "subtable1"); -insert into tmqdb.ctb0 values(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00'); -insert into tmqdb.ctb1 values(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11'); +DROP DATABASE IF EXISTS tmqdb; +CREATE DATABASE tmqdb; +CREATE TABLE tmqdb.stb (ts TIMESTAMP, c1 INT, c2 FLOAT, c3 VARCHAR(16) TAGS(t1 INT, t3 VARCHAR(16)); +CREATE TABLE tmqdb.ctb0 USING tmqdb.stb TAGS(0, "subtable0"); +CREATE TABLE tmqdb.ctb1 USING tmqdb.stb TAGS(1, "subtable1"); +INSERT INTO tmqdb.ctb0 VALUES(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00'); +INSERT INTO tmqdb.ctb1 VALUES(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11'); ``` -## 创建topic: +## 创建 *topic* + +TDengine 使用 SQL 创建一个 topic: ```sql -create topic topicName as select ts, c1, c2, c3 from tmqdb.stb where c1 > 1; +CREATE TOPIC topic_name AS SELECT ts, c1, c2, c3 FROM tmqdb.stb WHERE c1 > 1; ``` -TMQ支持多种订阅类型: +TMQ 支持多种订阅类型: ### 列订阅 -语法:CREATE TOPIC topic_name as subquery -通过select语句订阅(包括select *,或select ts, c1等指定列描述订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合) - -- TOPIC一旦创建则schema确定 -- 被订阅或用于计算的column和tag不可被删除、修改 -- 若发生schema变更,新增的column不出现在结果中 - -### 超级表订阅 -语法:CREATE TOPIC topic_name AS STABLE stbName - -与select * from stbName订阅的区别是: -- 不会限制用户的schema变更 -- 返回的是非结构化的数据:返回数据的schema会随之超级表的schema变化而变化 -- 用户对于要处理的每一个数据块都可能有不同的schema,因此,必须重新获取schema -- 返回数据不带有tag - -## 创建 consumer 以及consumer group - -对于consumer, 目前支持的config包括: - - - - -| 参数名称 | 参数说明 | 备注 | -| ---------------------------- |----------------------------|----------------------------| -| group.id | | 最大长度:192 | -| enable.auto.commit | | 合法值:true, false | -| auto.commit.interval.ms | | | -| auto.offset.reset | | 合法值:earliest, latest, none | -| td.connect.ip | | 用于连接,同taos_connect的参数 | | -| td.connect.user | | 用于连接,同taos_connect的参数 | | -| td.connect.pass | | 用于连接,同taos_connect的参数 | | -| td.connect.port | | 用于连接,同taos_connect的参数 | | -| enable.heartbeat.background |开启后台心跳,即consumer不会因为长时间不poll而认为离线 | 合法值:true, false | -| experimental.snapshot.enable |从wal开始消费,还是从tsbs开始消费 | 合法值:true, false | -| msg.with.table.name | 从消息中能否解析表名 | 合法值:true, false | +语法: ```sql -/* 根据需要,设置消费组(group.id)、自动提交(enable.auto.commit)、自动提交时间间隔(auto.commit.interval.ms)、用户名(td.connect.user)、密码(td.connect.pass)等参数 */ - tmq_conf_t* conf = tmq_conf_new(); - tmq_conf_set(conf, "enable.auto.commit", "true"); - tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); - tmq_conf_set(conf, "group.id", "cgrpName"); - tmq_conf_set(conf, "td.connect.user", "root"); - tmq_conf_set(conf, "td.connect.pass", "taosdata"); - tmq_conf_set(conf, "auto.offset.reset", "earliest"); - tmq_conf_set(conf, "experimental.snapshot.enable", "true"); - tmq_conf_set(conf, "msg.with.table.name", "true"); - tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); +CREATE TOPIC topic_name as subquery +``` - tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); - tmq_conf_destroy(conf); +通过 `SELECT` 语句订阅(包括 `SELECT *`,或 `SELECT ts, c1` 等指定列订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合)。需要注意的是: + +- 该类型 TOPIC 一旦创建则订阅数据的结构确定。 +- 被订阅或用于计算的列或标签不可被删除(`ALTER table DROP`)、修改(`ALTER table MODIFY`)。 +- 若发生表结构变更,新增的列不出现在结果中,若发生列删除则会报错。 + +### 超级表订阅 + +语法: + +```sql +CREATE TOPIC topic_name AS STABLE stb_name +``` + +与 `SELECT * from stbName` 订阅的区别是: + +- 不会限制用户的表结构变更。 +- 返回的是非结构化的数据:返回数据的结构会随之超级表的表结构变化而变化。 +- 用户对于要处理的每一个数据块都可能有不同的表结构。 +- 返回数据不包含标签。 + +### 数据库订阅 + +语法: + +```sql +CREATE TOPIC topic_name [WITH META] AS DATABASE db_name; +``` + +通过该语句可创建一个包含数据库所有表数据的订阅,`WITH META` 可选择将数据库结构变动信息加入到订阅消息流,TMQ 将消费当前数据库下所有表结构的变动,包括超级表的创建与删除,列添加、删除或修改,子表的创建、删除及 TAG 变动信息等等。消费者可通过 API 来判断具体的消息类型。这一点也是与 Kafka 不同的地方。 + +## 创建消费者 *consumer* + +消费者需要通过一系列配置选项创建,基础配置项如下表所示: + +| 参数名称 | 类型 | 参数说明 | 备注 | +| :----------------------------: | :-----: | -------------------------------------------------------- | ------------------------------------------- | +| `td.connect.ip` | string | 用于创建连接,同 `taos_connect` | | +| `td.connect.user` | string | 用于创建连接,同 `taos_connect` | | +| `td.connect.pass` | string | 用于创建连接,同 `taos_connect` | +| `td.connect.port` | integer | 用于创建连接,同 `taos_connect` | +| `group.id` | string | 消费组 ID,同一消费组共享消费进度 | **必填项**。最大长度:192。 | +| `client.id` | string | 客户端 ID | 最大长度:192。 | +| `auto.offset.reset` | enum | 消费组订阅的初始位置 | 可选:`earliest`, `latest`, `none`(default) | +| `enable.auto.commit` | boolean | 启用自动提交 | 合法值:`true`, `false`。 | +| `auto.commit.interval.ms` | integer | 以毫秒为单位的自动提交时间间隔 | +| `enable.heartbeat.background` | boolean | 启用后台心跳,启用后即使长时间不 poll 消息也不会造成离线 | | +| `experimental.snapshot.enable` | boolean | 从 wal 开始消费,还是从 tsbs 开始消费 | | +| `msg.with.table.name` | boolean | 从消息中能否解析表名 | + +对于不同编程语言,其设置方式如下: + + + + +```c +/* 根据需要,设置消费组 (group.id)、自动提交 (enable.auto.commit)、 + 自动提交时间间隔 (auto.commit.interval.ms)、用户名 (td.connect.user)、密码 (td.connect.pass) 等参数 */ +tmq_conf_t* conf = tmq_conf_new(); +tmq_conf_set(conf, "enable.auto.commit", "true"); +tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); +tmq_conf_set(conf, "group.id", "cgrpName"); +tmq_conf_set(conf, "td.connect.user", "root"); +tmq_conf_set(conf, "td.connect.pass", "taosdata"); +tmq_conf_set(conf, "auto.offset.reset", "earliest"); +tmq_conf_set(conf, "experimental.snapshot.enable", "true"); +tmq_conf_set(conf, "msg.with.table.name", "true"); +tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); + +tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); +tmq_conf_destroy(conf); ``` - + -| 参数名称 | 参数值 | 备注 | -| ---------------------------- |----------------------------|------------------------------------------------------------------------------------------------| -| group.id | 最大长度:192,必填 | consumer 所在组 id | -| client.id | 最大长度:192 | consumer id | -| enable.auto.commit | 合法值:true, false | 是否允许自动提交 | -| auto.commit.interval.ms | | 自动提交时间间隔 | -| auto.offset.reset | 合法值:earliest, latest, none | offset 消费位置 | -| bootstrap.servers | 用于创建连接 | 服务端 ip + port | -| td.connect.user | 用于创建连接,同 taos_connect 的参数 | 服务端用户名 | -| td.connect.pass | 用于创建连接,同 taos_connect 的参数 | 服务端密码 | -| enable.heartbeat.background | 合法值:true, false | 开启后台心跳,即 consumer 不会因为长时间不 poll 而认为离线 | -| experimental.snapshot.enable | 合法值:true, false | 从 wal 开始消费,还是从 tsbs 开始消费 | -| msg.with.table.name | 合法值:true, false | 从消息中能否解析表名 | -| value.deserializer | 指定 value 解析方法 | 此方法应实现 com.taosdata.jdbc.tmq.Deserializer 接口或是继承 com.taosdata.jdbc.tmq.ReferenceDeserializer 类 | -| value.deserializer.encoding | 指定 value 解析使用的字符编码集 | | +对于 Java 程序,额外支持以下配置项: + +| 参数名称 | 类型 | 参数说明 | +| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | +| value.deserializer | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | +| value.deserializer.encoding | string | 值解析所使用的反序列化方式 | | ```java import com.taosdata.jdbc.tmq.ReferenceDeserializer; @@ -196,139 +213,428 @@ TMQ支持多种订阅类型: ``` ```java - Properties properties = new Properties(); - properties.setProperty("enable.auto.commit", "true"); - properties.setProperty("auto.commit.interval.ms", "1000"); - properties.setProperty("group.id", "cgrpName"); - properties.setProperty("bootstrap.servers", "127.0.0.1:6030"); - properties.setProperty("td.connect.user", "root"); - properties.setProperty("td.connect.pass", "taosdata"); - properties.setProperty("auto.offset.reset", "earliest"); - properties.setProperty("msg.with.table.name", "true"); - properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); - - TaosConsumer consumer = new TaosConsumer<>(properties) +Properties properties = new Properties(); +properties.setProperty("enable.auto.commit", "true"); +properties.setProperty("auto.commit.interval.ms", "1000"); +properties.setProperty("group.id", "cgrpName"); +properties.setProperty("bootstrap.servers", "127.0.0.1:6030"); +properties.setProperty("td.connect.user", "root"); +properties.setProperty("td.connect.pass", "taosdata"); +properties.setProperty("auto.offset.reset", "earliest"); +properties.setProperty("msg.with.table.name", "true"); +properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); + +TaosConsumer consumer = new TaosConsumer<>(properties); ``` -上述配置中包括consumer group ID,如果多个 consumer 指定的 consumer group ID一样,则自动形成一个consumer group,共享消费进度。 +上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 +## 订阅 *topics* -## 订阅 topic 列表 +一个 consumer 支持同时订阅多个 topic。 -单个consumer支持同时订阅多个topic。 - -```sql - tmq_list_t* topicList = tmq_list_new(); - tmq_list_append(topicList, "topicName"); -``` - -## 启动订阅并开始消费 - - - - -``` - /* 启动订阅 */ - tmq_subscribe(tmq, topicList); - tmq_list_destroy(topicList); +```c +// 创建订阅 topics 列表 +tmq_list_t* topicList = tmq_list_new(); +tmq_list_append(topicList, "topicName"); +// 启动订阅 +tmq_subscribe(tmq, topicList); +tmq_list_destroy(topicList); - /* 循环poll消息 */ - while (running) { - TAOS_RES* tmqmsg = tmq_consumer_poll(tmq, timeOut); - msg_process(tmqmsg); - } ``` +## 消费 + + + + +```c +// 消费数据 +while (running) { + TAOS_RES* msg = tmq_consumer_poll(tmq, timeOut); + msg_process(msg); +} +``` + +这里是一个 **while** 循环,每调用一次 tmq_consumer_poll(),获取一个消息,该消息与普通查询返回的结果集完全相同,可以使用相同的解析 API 完成消息内容的解析。 + - + ```java - List topics = new ArrayList<>(); - topics.add("tmq_topic"); - consumer.subscribe(topics); - - while(running){ - ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); - for (Meters meter : meters) { - processMsg(meter); - } - } +List topics = new ArrayList<>(); +topics.add("tmq_topic"); +consumer.subscribe(topics); + +while(running){ + ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); + for (Meters meter : meters) { + processMsg(meter); + } +} ``` -这里是一个 **while** 循环,每调用一次tmq_consumer_poll(),获取一个消息,该消息与普通查询返回的结果集完全相同,可以使用相同的解析API完成消息内容的解析。 - ## 结束消费 - - + + -```sql - /* 取消订阅 */ - tmq_unsubscribe(tmq); +```c +/* 取消订阅 */ +tmq_unsubscribe(tmq); - /* 关闭消费 */ - tmq_consumer_close(tmq); +/* 关闭消费者对象 */ +tmq_consumer_close(tmq); ``` - + ```java - /* 取消订阅 */ - consumer.unsubscribe(); +/* 取消订阅 */ +consumer.unsubscribe(); - /* 关闭消费 */ - consumer.close(); +/* 关闭消费 */ +consumer.close(); ``` -## 删除topic +## 删除 *topic* -如果不再需要,可以删除创建topic,但注意:只有没有被订阅的topic才能别删除。 +如果不再需要订阅数据,可以删除 topic,需要注意:只有当前未在订阅中的 TOPIC 才能被删除。 ```sql - /* 删除topic */ - drop topic topicName; +/* 删除 topic */ +DROP TOPIC topic_name; ``` ## 状态查看 -1、topics:查询已经创建的topic +1、*topics*:查询已经创建的 topic ```sql - show topics; +SHOW TOPICS; ``` -2、consumers:查询consumer的状态及其订阅的topic +2、consumers:查询 consumer 的状态及其订阅的 topic ```sql - show consumers; +SHOW CONSUMERS; ``` -3、subscriptions:查询consumer与vgroup之间的分配关系 +3、subscriptions:查询 consumer 与 vgroup 之间的分配关系 ```sql - show subscriptions; +SHOW SUBSCRIPTIONS; ``` ## 示例代码 -本节展示各种语言的示例代码。 +以下是各语言的完整示例代码。 - + ```c -{{#include examples/c/tmq.c}} +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include "taos.h" + +static int running = 1; +static char dbName[64] = "tmqdb"; +static char stbName[64] = "stb"; +static char topicName[64] = "topicname"; + +static int32_t msg_process(TAOS_RES* msg) { + char buf[1024]; + int32_t rows = 0; + + const char* topicName = tmq_get_topic_name(msg); + const char* dbName = tmq_get_db_name(msg); + int32_t vgroupId = tmq_get_vgroup_id(msg); + + printf("topic: %s\n", topicName); + printf("db: %s\n", dbName); + printf("vgroup id: %d\n", vgroupId); + + while (1) { + TAOS_ROW row = taos_fetch_row(msg); + if (row == NULL) break; + + TAOS_FIELD* fields = taos_fetch_fields(msg); + int32_t numOfFields = taos_field_count(msg); + int32_t* length = taos_fetch_lengths(msg); + int32_t precision = taos_result_precision(msg); + const char* tbName = tmq_get_table_name(msg); + rows++; + taos_print_row(buf, row, fields, numOfFields); + printf("row content from %s: %s\n", (tbName != NULL ? tbName : "table null"), buf); + } + + return rows; +} + +static int32_t init_env() { + TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); + if (pConn == NULL) { + return -1; + } + + TAOS_RES* pRes; + // drop database if exists + printf("create database\n"); + pRes = taos_query(pConn, "drop database if exists tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in drop tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create database + pRes = taos_query(pConn, "create database tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in create tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create super table + printf("create super table\n"); + pRes = taos_query( + pConn, "create table tmqdb.stb (ts timestamp, c1 int, c2 float, c3 varchar(16)) tags(t1 int, t3 varchar(16))"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table stb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create sub tables + printf("create sub tables\n"); + pRes = taos_query(pConn, "create table tmqdb.ctb0 using tmqdb.stb tags(0, 'subtable0')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb1 using tmqdb.stb tags(1, 'subtable1')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb1, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb2 using tmqdb.stb tags(2, 'subtable2')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb2, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb3 using tmqdb.stb tags(3, 'subtable3')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb3, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // insert data + printf("insert data into sub tables\n"); + pRes = taos_query(pConn, "insert into tmqdb.ctb0 values(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb1 values(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb2 values(now, 2, 2, 'a1')(now+1s, 22, 22, 'a22')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb3 values(now, 3, 3, 'a1')(now+1s, 33, 33, 'a33')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + taos_close(pConn); + return 0; +} + +int32_t create_topic() { + printf("create topic\n"); + TAOS_RES* pRes; + TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); + if (pConn == NULL) { + return -1; + } + + pRes = taos_query(pConn, "use tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in use tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create topic topicname as select ts, c1, c2, c3 from tmqdb.stb where c1 > 1"); + if (taos_errno(pRes) != 0) { + printf("failed to create topic topicname, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + taos_close(pConn); + return 0; +} + +void tmq_commit_cb_print(tmq_t* tmq, int32_t code, void* param) { + printf("tmq_commit_cb_print() code: %d, tmq: %p, param: %p\n", code, tmq, param); +} + +tmq_t* build_consumer() { + tmq_conf_res_t code; + tmq_conf_t* conf = tmq_conf_new(); + code = tmq_conf_set(conf, "enable.auto.commit", "true"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "group.id", "cgrpName"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "client.id", "user defined name"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "td.connect.user", "root"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "td.connect.pass", "taosdata"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "auto.offset.reset", "earliest"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "experimental.snapshot.enable", "true"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "msg.with.table.name", "true"); + if (TMQ_CONF_OK != code) return NULL; + + tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); + + tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); + tmq_conf_destroy(conf); + return tmq; +} + +tmq_list_t* build_topic_list() { + tmq_list_t* topicList = tmq_list_new(); + int32_t code = tmq_list_append(topicList, "topicname"); + if (code) { + return NULL; + } + return topicList; +} + +void basic_consume_loop(tmq_t* tmq, tmq_list_t* topicList) { + int32_t code; + + if ((code = tmq_subscribe(tmq, topicList))) { + fprintf(stderr, "%% Failed to tmq_subscribe(): %s\n", tmq_err2str(code)); + return; + } + + int32_t totalRows = 0; + int32_t msgCnt = 0; + int32_t timeout = 5000; + while (running) { + TAOS_RES* tmqmsg = tmq_consumer_poll(tmq, timeout); + if (tmqmsg) { + msgCnt++; + totalRows += msg_process(tmqmsg); + taos_free_result(tmqmsg); + /*} else {*/ + /*break;*/ + } + } + + fprintf(stderr, "%d msg consumed, include %d rows\n", msgCnt, totalRows); +} + +int main(int argc, char* argv[]) { + int32_t code; + + if (init_env() < 0) { + return -1; + } + + if (create_topic() < 0) { + return -1; + } + + tmq_t* tmq = build_consumer(); + if (NULL == tmq) { + fprintf(stderr, "%% build_consumer() fail!\n"); + return -1; + } + + tmq_list_t* topic_list = build_topic_list(); + if (NULL == topic_list) { + return -1; + } + + basic_consume_loop(tmq, topic_list); + + code = tmq_unsubscribe(tmq); + if (code) { + fprintf(stderr, "%% Failed to unsubscribe: %s\n", tmq_err2str(code)); + } else { + fprintf(stderr, "%% unsubscribe\n"); + } + + code = tmq_consumer_close(tmq); + if (code) { + fprintf(stderr, "%% Failed to close consumer: %s\n", tmq_err2str(code)); + } else { + fprintf(stderr, "%% Consumer closed\n"); + } + + return 0; +} + ``` + +[查看源码](https://github.com/taosdata/TDengine/blob/develop/examples/c/tmq.c) @@ -346,9 +652,70 @@ TMQ支持多种订阅类型: ```python -{{#include docs/examples/python/tmq_example.py}} +import taos +from taos.tmq import * + +conn = taos.connect() + +# create database +conn.execute("drop database if exists py_tmq") +conn.execute("create database if not exists py_tmq vgroups 2") + +# create table and stables +conn.select_db("py_tmq") +conn.execute("create stable if not exists stb1 (ts timestamp, c1 int, c2 float, c3 binary(10)) tags(t1 int)") +conn.execute("create table if not exists tb1 using stb1 tags(1)") +conn.execute("create table if not exists tb2 using stb1 tags(2)") +conn.execute("create table if not exists tb3 using stb1 tags(3)") + +# create topic +conn.execute("drop topic if exists topic_ctb_column") +conn.execute("create topic if not exists topic_ctb_column as select ts, c1, c2, c3 from stb1") + +# set consumer configure options +conf = TaosTmqConf() +conf.set("group.id", "tg2") +conf.set("td.connect.user", "root") +conf.set("td.connect.pass", "taosdata") +conf.set("enable.auto.commit", "true") +conf.set("msg.with.table.name", "true") + +def tmq_commit_cb_print(tmq, resp, offset, param=None): + print(f"commit: {resp}, tmq: {tmq}, offset: {offset}, param: {param}") + +conf.set_auto_commit_cb(tmq_commit_cb_print, None) + +# build consumer +tmq = conf.new_consumer() + +# build topic list +topic_list = TaosTmqList() +topic_list.append("topic_ctb_column") + +# subscribe consumer +tmq.subscribe(topic_list) + +# check subscriptions +sub_list = tmq.subscription() +print("subscribed topics: ",sub_list) + +# start subscribe +while 1: + res = tmq.poll(1000) + if res: + topic = res.get_topic_name() + vg = res.get_vgroup_id() + db = res.get_db_name() + print(f"topic: {topic}\nvgroup id: {vg}\ndb: {db}") + for row in res: + print(row) + tb = res.get_table_name() + print(f"from table: {tb}") + ``` +[查看源码](https://github.com/taosdata/TDengine/blob/develop/docs/examples/python/tmq_example.py) + From 947d90e196a69b176814c0110ee31052f0b30072 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Mon, 15 Aug 2022 17:36:46 +0800 Subject: [PATCH 046/108] refactor(sync): add syncIsReadyForRead --- source/dnode/vnode/src/inc/vnd.h | 1 + 1 file changed, 1 insertion(+) diff --git a/source/dnode/vnode/src/inc/vnd.h b/source/dnode/vnode/src/inc/vnd.h index 5608efa7af..5164e22474 100644 --- a/source/dnode/vnode/src/inc/vnd.h +++ b/source/dnode/vnode/src/inc/vnd.h @@ -99,6 +99,7 @@ void vnodeSyncClose(SVnode* pVnode); void vnodeRedirectRpcMsg(SVnode* pVnode, SRpcMsg* pMsg); bool vnodeIsLeader(SVnode* pVnode); bool vnodeIsReadyForRead(SVnode* pVnode); +bool vnodeIsRoleLeader(SVnode* pVnode); #ifdef __cplusplus } From 02a5b027e95063a2ee41794b5535d8a2a5660544 Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 17:38:35 +0800 Subject: [PATCH 047/108] chore: dos2unix of tmq doc --- docs/zh/07-develop/07-tmq.mdx | 1458 ++++++++++++++++----------------- 1 file changed, 729 insertions(+), 729 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 5ed1639f72..46dab395c0 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -1,729 +1,729 @@ ---- -sidebar_label: 数据订阅 -description: "数据订阅与推送服务。写入到 TDengine 中的时序数据能够被自动推送到订阅客户端。" -title: 数据订阅 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; -import Java from "./_sub_java.mdx"; -import Python from "./_sub_python.mdx"; -import Go from "./_sub_go.mdx"; -import Rust from "./_sub_rust.mdx"; -import Node from "./_sub_node.mdx"; -import CSharp from "./_sub_cs.mdx"; -import CDemo from "./_sub_c.mdx"; - -为了帮助应用实时获取写入 TDengine 的数据,或者以事件到达顺序处理数据,TDengine 提供了类似消息队列产品的数据订阅、消费接口。这样在很多场景下,采用 TDengine 的时序数据处理系统不再需要集成消息队列产品,比如 kafka, 从而简化系统设计的复杂度,降低运营维护成本。 - -与 kafka 一样,你需要定义 *topic*, 但 TDengine 的 *topic* 是基于一个已经存在的超级表、子表或普通表的查询条件,即一个 `SELECT` 语句。你可以使用 SQL 对标签、表名、列、表达式等条件进行过滤,以及对数据进行标量函数与 UDF 计算(不包括数据聚合)。与其他消息队列软件相比,这是 TDengine 数据订阅功能的最大的优势,它提供了更大的灵活性,数据的颗粒度可以由应用随时调整,而且数据的过滤与预处理交给 TDengine,而不是应用完成,有效的减少传输的数据量与应用的复杂度。 - -消费者订阅 *topic* 后,可以实时获得最新的数据。多个消费者可以组成一个消费者组 (consumer group), 一个消费者组里的多个消费者共享消费进度,便于多线程、分布式地消费数据,提高消费速度。但不同消费者组中的消费者即使消费同一个 topic, 并不共享消费进度。一个消费者可以订阅多个 topic。如果订阅的是超级表,数据可能会分布在多个不同的 vnode 上,也就是多个 shard 上,这样一个消费组里有多个消费者可以提高消费效率。TDengine 的消息队列提供了消息的 ACK 机制,在宕机、重启等复杂环境下确保 at least once 消费。 - -为了实现上述功能,TDengine 会为 WAL (Write-Ahead-Log) 文件自动创建索引以支持快速随机访问,并提供了灵活可配置的文件切换与保留机制:用户可以按需指定 WAL 文件保留的时间以及大小(详见 create database 语句)。通过以上方式将 WAL 改造成了一个保留事件到达顺序的、可持久化的存储引擎(但由于 TSDB 具有远比 WAL 更高的压缩率,我们不推荐保留太长时间,一般来说,不超过几天)。 对于以 topic 形式创建的查询,TDengine 将对接 WAL 而不是 TSDB 作为其存储引擎。在消费时,TDengine 根据当前消费进度从 WAL 直接读取数据,并使用统一的查询引擎实现过滤、变换等操作,将数据推送给消费者。 - -本文档不对消息队列本身的基础知识做介绍,如果需要了解,请自行搜索。 - -## 主要数据结构和 API - -不同语言下, TMQ 订阅相关的 API 及数据结构如下: - - - - -```c -typedef struct tmq_t tmq_t; -typedef struct tmq_conf_t tmq_conf_t; -typedef struct tmq_list_t tmq_list_t; - -typedef void(tmq_commit_cb(tmq_t *, int32_t code, void *param)); - -DLL_EXPORT tmq_list_t *tmq_list_new(); -DLL_EXPORT int32_t tmq_list_append(tmq_list_t *, const char *); -DLL_EXPORT void tmq_list_destroy(tmq_list_t *); -DLL_EXPORT tmq_t *tmq_consumer_new(tmq_conf_t *conf, char *errstr, int32_t errstrLen); -DLL_EXPORT const char *tmq_err2str(int32_t code); - -DLL_EXPORT int32_t tmq_subscribe(tmq_t *tmq, const tmq_list_t *topic_list); -DLL_EXPORT int32_t tmq_unsubscribe(tmq_t *tmq); -DLL_EXPORT TAOS_RES *tmq_consumer_poll(tmq_t *tmq, int64_t timeout); -DLL_EXPORT int32_t tmq_consumer_close(tmq_t *tmq); -DLL_EXPORT int32_t tmq_commit_sync(tmq_t *tmq, const TAOS_RES *msg); -DLL_EXPORT void tmq_commit_async(tmq_t *tmq, const TAOS_RES *msg, tmq_commit_cb *cb, void *param); - -enum tmq_conf_res_t { - TMQ_CONF_UNKNOWN = -2, - TMQ_CONF_INVALID = -1, - TMQ_CONF_OK = 0, -}; -typedef enum tmq_conf_res_t tmq_conf_res_t; - -DLL_EXPORT tmq_conf_t *tmq_conf_new(); -DLL_EXPORT tmq_conf_res_t tmq_conf_set(tmq_conf_t *conf, const char *key, const char *value); -DLL_EXPORT void tmq_conf_destroy(tmq_conf_t *conf); -DLL_EXPORT void tmq_conf_set_auto_commit_cb(tmq_conf_t *conf, tmq_commit_cb *cb, void *param); -``` - -这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面 C 语言的示例代码。 - - - - -```java -void subscribe(Collection topics) throws SQLException; - -void unsubscribe() throws SQLException; - -Set subscription() throws SQLException; - -ConsumerRecords poll(Duration timeout) throws SQLException; - -void commitAsync(); - -void commitAsync(OffsetCommitCallback callback); - -void commitSync() throws SQLException; - -void close() throws SQLException; -``` - - - - -## 写入数据 - -首先完成建库、建一张超级表和多张子表操作,然后就可以写入数据了,比如: - -```sql -DROP DATABASE IF EXISTS tmqdb; -CREATE DATABASE tmqdb; -CREATE TABLE tmqdb.stb (ts TIMESTAMP, c1 INT, c2 FLOAT, c3 VARCHAR(16) TAGS(t1 INT, t3 VARCHAR(16)); -CREATE TABLE tmqdb.ctb0 USING tmqdb.stb TAGS(0, "subtable0"); -CREATE TABLE tmqdb.ctb1 USING tmqdb.stb TAGS(1, "subtable1"); -INSERT INTO tmqdb.ctb0 VALUES(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00'); -INSERT INTO tmqdb.ctb1 VALUES(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11'); -``` - -## 创建 *topic* - -TDengine 使用 SQL 创建一个 topic: - -```sql -CREATE TOPIC topic_name AS SELECT ts, c1, c2, c3 FROM tmqdb.stb WHERE c1 > 1; -``` - -TMQ 支持多种订阅类型: - -### 列订阅 - -语法: - -```sql -CREATE TOPIC topic_name as subquery -``` - -通过 `SELECT` 语句订阅(包括 `SELECT *`,或 `SELECT ts, c1` 等指定列订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合)。需要注意的是: - -- 该类型 TOPIC 一旦创建则订阅数据的结构确定。 -- 被订阅或用于计算的列或标签不可被删除(`ALTER table DROP`)、修改(`ALTER table MODIFY`)。 -- 若发生表结构变更,新增的列不出现在结果中,若发生列删除则会报错。 - -### 超级表订阅 - -语法: - -```sql -CREATE TOPIC topic_name AS STABLE stb_name -``` - -与 `SELECT * from stbName` 订阅的区别是: - -- 不会限制用户的表结构变更。 -- 返回的是非结构化的数据:返回数据的结构会随之超级表的表结构变化而变化。 -- 用户对于要处理的每一个数据块都可能有不同的表结构。 -- 返回数据不包含标签。 - -### 数据库订阅 - -语法: - -```sql -CREATE TOPIC topic_name [WITH META] AS DATABASE db_name; -``` - -通过该语句可创建一个包含数据库所有表数据的订阅,`WITH META` 可选择将数据库结构变动信息加入到订阅消息流,TMQ 将消费当前数据库下所有表结构的变动,包括超级表的创建与删除,列添加、删除或修改,子表的创建、删除及 TAG 变动信息等等。消费者可通过 API 来判断具体的消息类型。这一点也是与 Kafka 不同的地方。 - -## 创建消费者 *consumer* - -消费者需要通过一系列配置选项创建,基础配置项如下表所示: - -| 参数名称 | 类型 | 参数说明 | 备注 | -| :----------------------------: | :-----: | -------------------------------------------------------- | ------------------------------------------- | -| `td.connect.ip` | string | 用于创建连接,同 `taos_connect` | | -| `td.connect.user` | string | 用于创建连接,同 `taos_connect` | | -| `td.connect.pass` | string | 用于创建连接,同 `taos_connect` | -| `td.connect.port` | integer | 用于创建连接,同 `taos_connect` | -| `group.id` | string | 消费组 ID,同一消费组共享消费进度 | **必填项**。最大长度:192。 | -| `client.id` | string | 客户端 ID | 最大长度:192。 | -| `auto.offset.reset` | enum | 消费组订阅的初始位置 | 可选:`earliest`, `latest`, `none`(default) | -| `enable.auto.commit` | boolean | 启用自动提交 | 合法值:`true`, `false`。 | -| `auto.commit.interval.ms` | integer | 以毫秒为单位的自动提交时间间隔 | -| `enable.heartbeat.background` | boolean | 启用后台心跳,启用后即使长时间不 poll 消息也不会造成离线 | | -| `experimental.snapshot.enable` | boolean | 从 wal 开始消费,还是从 tsbs 开始消费 | | -| `msg.with.table.name` | boolean | 从消息中能否解析表名 | - -对于不同编程语言,其设置方式如下: - - - - -```c -/* 根据需要,设置消费组 (group.id)、自动提交 (enable.auto.commit)、 - 自动提交时间间隔 (auto.commit.interval.ms)、用户名 (td.connect.user)、密码 (td.connect.pass) 等参数 */ -tmq_conf_t* conf = tmq_conf_new(); -tmq_conf_set(conf, "enable.auto.commit", "true"); -tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); -tmq_conf_set(conf, "group.id", "cgrpName"); -tmq_conf_set(conf, "td.connect.user", "root"); -tmq_conf_set(conf, "td.connect.pass", "taosdata"); -tmq_conf_set(conf, "auto.offset.reset", "earliest"); -tmq_conf_set(conf, "experimental.snapshot.enable", "true"); -tmq_conf_set(conf, "msg.with.table.name", "true"); -tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); - -tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); -tmq_conf_destroy(conf); -``` - - - - -对于 Java 程序,额外支持以下配置项: - -| 参数名称 | 类型 | 参数说明 | -| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | -| value.deserializer | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | -| value.deserializer.encoding | string | 值解析所使用的反序列化方式 | | - -```java - import com.taosdata.jdbc.tmq.ReferenceDeserializer; - - public class MetersDeserializer extends ReferenceDeserializer { - } -``` - -```java -Properties properties = new Properties(); -properties.setProperty("enable.auto.commit", "true"); -properties.setProperty("auto.commit.interval.ms", "1000"); -properties.setProperty("group.id", "cgrpName"); -properties.setProperty("bootstrap.servers", "127.0.0.1:6030"); -properties.setProperty("td.connect.user", "root"); -properties.setProperty("td.connect.pass", "taosdata"); -properties.setProperty("auto.offset.reset", "earliest"); -properties.setProperty("msg.with.table.name", "true"); -properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); - -TaosConsumer consumer = new TaosConsumer<>(properties); -``` - - - - -上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 - -## 订阅 *topics* - -一个 consumer 支持同时订阅多个 topic。 - -```c -// 创建订阅 topics 列表 -tmq_list_t* topicList = tmq_list_new(); -tmq_list_append(topicList, "topicName"); -// 启动订阅 -tmq_subscribe(tmq, topicList); -tmq_list_destroy(topicList); - -``` - -## 消费 - - - - -```c -// 消费数据 -while (running) { - TAOS_RES* msg = tmq_consumer_poll(tmq, timeOut); - msg_process(msg); -} -``` - -这里是一个 **while** 循环,每调用一次 tmq_consumer_poll(),获取一个消息,该消息与普通查询返回的结果集完全相同,可以使用相同的解析 API 完成消息内容的解析。 - - - - -```java -List topics = new ArrayList<>(); -topics.add("tmq_topic"); -consumer.subscribe(topics); - -while(running){ - ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); - for (Meters meter : meters) { - processMsg(meter); - } -} -``` - - - - -## 结束消费 - - - - -```c -/* 取消订阅 */ -tmq_unsubscribe(tmq); - -/* 关闭消费者对象 */ -tmq_consumer_close(tmq); -``` - - - - -```java -/* 取消订阅 */ -consumer.unsubscribe(); - -/* 关闭消费 */ -consumer.close(); -``` - - - - -## 删除 *topic* - -如果不再需要订阅数据,可以删除 topic,需要注意:只有当前未在订阅中的 TOPIC 才能被删除。 - -```sql -/* 删除 topic */ -DROP TOPIC topic_name; -``` - -## 状态查看 - -1、*topics*:查询已经创建的 topic - -```sql -SHOW TOPICS; -``` - -2、consumers:查询 consumer 的状态及其订阅的 topic - -```sql -SHOW CONSUMERS; -``` - -3、subscriptions:查询 consumer 与 vgroup 之间的分配关系 - -```sql -SHOW SUBSCRIPTIONS; -``` - -## 示例代码 - -以下是各语言的完整示例代码。 - - - - -```c -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include -#include -#include "taos.h" - -static int running = 1; -static char dbName[64] = "tmqdb"; -static char stbName[64] = "stb"; -static char topicName[64] = "topicname"; - -static int32_t msg_process(TAOS_RES* msg) { - char buf[1024]; - int32_t rows = 0; - - const char* topicName = tmq_get_topic_name(msg); - const char* dbName = tmq_get_db_name(msg); - int32_t vgroupId = tmq_get_vgroup_id(msg); - - printf("topic: %s\n", topicName); - printf("db: %s\n", dbName); - printf("vgroup id: %d\n", vgroupId); - - while (1) { - TAOS_ROW row = taos_fetch_row(msg); - if (row == NULL) break; - - TAOS_FIELD* fields = taos_fetch_fields(msg); - int32_t numOfFields = taos_field_count(msg); - int32_t* length = taos_fetch_lengths(msg); - int32_t precision = taos_result_precision(msg); - const char* tbName = tmq_get_table_name(msg); - rows++; - taos_print_row(buf, row, fields, numOfFields); - printf("row content from %s: %s\n", (tbName != NULL ? tbName : "table null"), buf); - } - - return rows; -} - -static int32_t init_env() { - TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); - if (pConn == NULL) { - return -1; - } - - TAOS_RES* pRes; - // drop database if exists - printf("create database\n"); - pRes = taos_query(pConn, "drop database if exists tmqdb"); - if (taos_errno(pRes) != 0) { - printf("error in drop tmqdb, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - // create database - pRes = taos_query(pConn, "create database tmqdb"); - if (taos_errno(pRes) != 0) { - printf("error in create tmqdb, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - // create super table - printf("create super table\n"); - pRes = taos_query( - pConn, "create table tmqdb.stb (ts timestamp, c1 int, c2 float, c3 varchar(16)) tags(t1 int, t3 varchar(16))"); - if (taos_errno(pRes) != 0) { - printf("failed to create super table stb, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - // create sub tables - printf("create sub tables\n"); - pRes = taos_query(pConn, "create table tmqdb.ctb0 using tmqdb.stb tags(0, 'subtable0')"); - if (taos_errno(pRes) != 0) { - printf("failed to create super table ctb0, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "create table tmqdb.ctb1 using tmqdb.stb tags(1, 'subtable1')"); - if (taos_errno(pRes) != 0) { - printf("failed to create super table ctb1, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "create table tmqdb.ctb2 using tmqdb.stb tags(2, 'subtable2')"); - if (taos_errno(pRes) != 0) { - printf("failed to create super table ctb2, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "create table tmqdb.ctb3 using tmqdb.stb tags(3, 'subtable3')"); - if (taos_errno(pRes) != 0) { - printf("failed to create super table ctb3, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - // insert data - printf("insert data into sub tables\n"); - pRes = taos_query(pConn, "insert into tmqdb.ctb0 values(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00')"); - if (taos_errno(pRes) != 0) { - printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "insert into tmqdb.ctb1 values(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11')"); - if (taos_errno(pRes) != 0) { - printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "insert into tmqdb.ctb2 values(now, 2, 2, 'a1')(now+1s, 22, 22, 'a22')"); - if (taos_errno(pRes) != 0) { - printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "insert into tmqdb.ctb3 values(now, 3, 3, 'a1')(now+1s, 33, 33, 'a33')"); - if (taos_errno(pRes) != 0) { - printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - taos_close(pConn); - return 0; -} - -int32_t create_topic() { - printf("create topic\n"); - TAOS_RES* pRes; - TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); - if (pConn == NULL) { - return -1; - } - - pRes = taos_query(pConn, "use tmqdb"); - if (taos_errno(pRes) != 0) { - printf("error in use tmqdb, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - pRes = taos_query(pConn, "create topic topicname as select ts, c1, c2, c3 from tmqdb.stb where c1 > 1"); - if (taos_errno(pRes) != 0) { - printf("failed to create topic topicname, reason:%s\n", taos_errstr(pRes)); - return -1; - } - taos_free_result(pRes); - - taos_close(pConn); - return 0; -} - -void tmq_commit_cb_print(tmq_t* tmq, int32_t code, void* param) { - printf("tmq_commit_cb_print() code: %d, tmq: %p, param: %p\n", code, tmq, param); -} - -tmq_t* build_consumer() { - tmq_conf_res_t code; - tmq_conf_t* conf = tmq_conf_new(); - code = tmq_conf_set(conf, "enable.auto.commit", "true"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "group.id", "cgrpName"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "client.id", "user defined name"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "td.connect.user", "root"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "td.connect.pass", "taosdata"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "auto.offset.reset", "earliest"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "experimental.snapshot.enable", "true"); - if (TMQ_CONF_OK != code) return NULL; - code = tmq_conf_set(conf, "msg.with.table.name", "true"); - if (TMQ_CONF_OK != code) return NULL; - - tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); - - tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); - tmq_conf_destroy(conf); - return tmq; -} - -tmq_list_t* build_topic_list() { - tmq_list_t* topicList = tmq_list_new(); - int32_t code = tmq_list_append(topicList, "topicname"); - if (code) { - return NULL; - } - return topicList; -} - -void basic_consume_loop(tmq_t* tmq, tmq_list_t* topicList) { - int32_t code; - - if ((code = tmq_subscribe(tmq, topicList))) { - fprintf(stderr, "%% Failed to tmq_subscribe(): %s\n", tmq_err2str(code)); - return; - } - - int32_t totalRows = 0; - int32_t msgCnt = 0; - int32_t timeout = 5000; - while (running) { - TAOS_RES* tmqmsg = tmq_consumer_poll(tmq, timeout); - if (tmqmsg) { - msgCnt++; - totalRows += msg_process(tmqmsg); - taos_free_result(tmqmsg); - /*} else {*/ - /*break;*/ - } - } - - fprintf(stderr, "%d msg consumed, include %d rows\n", msgCnt, totalRows); -} - -int main(int argc, char* argv[]) { - int32_t code; - - if (init_env() < 0) { - return -1; - } - - if (create_topic() < 0) { - return -1; - } - - tmq_t* tmq = build_consumer(); - if (NULL == tmq) { - fprintf(stderr, "%% build_consumer() fail!\n"); - return -1; - } - - tmq_list_t* topic_list = build_topic_list(); - if (NULL == topic_list) { - return -1; - } - - basic_consume_loop(tmq, topic_list); - - code = tmq_unsubscribe(tmq); - if (code) { - fprintf(stderr, "%% Failed to unsubscribe: %s\n", tmq_err2str(code)); - } else { - fprintf(stderr, "%% unsubscribe\n"); - } - - code = tmq_consumer_close(tmq); - if (code) { - fprintf(stderr, "%% Failed to close consumer: %s\n", tmq_err2str(code)); - } else { - fprintf(stderr, "%% Consumer closed\n"); - } - - return 0; -} - -``` - -[查看源码](https://github.com/taosdata/TDengine/blob/develop/examples/c/tmq.c) - - - - - - - - - - - - - - - - -```python -import taos -from taos.tmq import * - -conn = taos.connect() - -# create database -conn.execute("drop database if exists py_tmq") -conn.execute("create database if not exists py_tmq vgroups 2") - -# create table and stables -conn.select_db("py_tmq") -conn.execute("create stable if not exists stb1 (ts timestamp, c1 int, c2 float, c3 binary(10)) tags(t1 int)") -conn.execute("create table if not exists tb1 using stb1 tags(1)") -conn.execute("create table if not exists tb2 using stb1 tags(2)") -conn.execute("create table if not exists tb3 using stb1 tags(3)") - -# create topic -conn.execute("drop topic if exists topic_ctb_column") -conn.execute("create topic if not exists topic_ctb_column as select ts, c1, c2, c3 from stb1") - -# set consumer configure options -conf = TaosTmqConf() -conf.set("group.id", "tg2") -conf.set("td.connect.user", "root") -conf.set("td.connect.pass", "taosdata") -conf.set("enable.auto.commit", "true") -conf.set("msg.with.table.name", "true") - -def tmq_commit_cb_print(tmq, resp, offset, param=None): - print(f"commit: {resp}, tmq: {tmq}, offset: {offset}, param: {param}") - -conf.set_auto_commit_cb(tmq_commit_cb_print, None) - -# build consumer -tmq = conf.new_consumer() - -# build topic list -topic_list = TaosTmqList() -topic_list.append("topic_ctb_column") - -# subscribe consumer -tmq.subscribe(topic_list) - -# check subscriptions -sub_list = tmq.subscription() -print("subscribed topics: ",sub_list) - -# start subscribe -while 1: - res = tmq.poll(1000) - if res: - topic = res.get_topic_name() - vg = res.get_vgroup_id() - db = res.get_db_name() - print(f"topic: {topic}\nvgroup id: {vg}\ndb: {db}") - for row in res: - print(row) - tb = res.get_table_name() - print(f"from table: {tb}") - -``` - -[查看源码](https://github.com/taosdata/TDengine/blob/develop/docs/examples/python/tmq_example.py) - - - - - - - - - - - - +--- +sidebar_label: 数据订阅 +description: "数据订阅与推送服务。写入到 TDengine 中的时序数据能够被自动推送到订阅客户端。" +title: 数据订阅 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import Java from "./_sub_java.mdx"; +import Python from "./_sub_python.mdx"; +import Go from "./_sub_go.mdx"; +import Rust from "./_sub_rust.mdx"; +import Node from "./_sub_node.mdx"; +import CSharp from "./_sub_cs.mdx"; +import CDemo from "./_sub_c.mdx"; + +为了帮助应用实时获取写入 TDengine 的数据,或者以事件到达顺序处理数据,TDengine 提供了类似消息队列产品的数据订阅、消费接口。这样在很多场景下,采用 TDengine 的时序数据处理系统不再需要集成消息队列产品,比如 kafka, 从而简化系统设计的复杂度,降低运营维护成本。 + +与 kafka 一样,你需要定义 *topic*, 但 TDengine 的 *topic* 是基于一个已经存在的超级表、子表或普通表的查询条件,即一个 `SELECT` 语句。你可以使用 SQL 对标签、表名、列、表达式等条件进行过滤,以及对数据进行标量函数与 UDF 计算(不包括数据聚合)。与其他消息队列软件相比,这是 TDengine 数据订阅功能的最大的优势,它提供了更大的灵活性,数据的颗粒度可以由应用随时调整,而且数据的过滤与预处理交给 TDengine,而不是应用完成,有效的减少传输的数据量与应用的复杂度。 + +消费者订阅 *topic* 后,可以实时获得最新的数据。多个消费者可以组成一个消费者组 (consumer group), 一个消费者组里的多个消费者共享消费进度,便于多线程、分布式地消费数据,提高消费速度。但不同消费者组中的消费者即使消费同一个 topic, 并不共享消费进度。一个消费者可以订阅多个 topic。如果订阅的是超级表,数据可能会分布在多个不同的 vnode 上,也就是多个 shard 上,这样一个消费组里有多个消费者可以提高消费效率。TDengine 的消息队列提供了消息的 ACK 机制,在宕机、重启等复杂环境下确保 at least once 消费。 + +为了实现上述功能,TDengine 会为 WAL (Write-Ahead-Log) 文件自动创建索引以支持快速随机访问,并提供了灵活可配置的文件切换与保留机制:用户可以按需指定 WAL 文件保留的时间以及大小(详见 create database 语句)。通过以上方式将 WAL 改造成了一个保留事件到达顺序的、可持久化的存储引擎(但由于 TSDB 具有远比 WAL 更高的压缩率,我们不推荐保留太长时间,一般来说,不超过几天)。 对于以 topic 形式创建的查询,TDengine 将对接 WAL 而不是 TSDB 作为其存储引擎。在消费时,TDengine 根据当前消费进度从 WAL 直接读取数据,并使用统一的查询引擎实现过滤、变换等操作,将数据推送给消费者。 + +本文档不对消息队列本身的基础知识做介绍,如果需要了解,请自行搜索。 + +## 主要数据结构和 API + +不同语言下, TMQ 订阅相关的 API 及数据结构如下: + + + + +```c +typedef struct tmq_t tmq_t; +typedef struct tmq_conf_t tmq_conf_t; +typedef struct tmq_list_t tmq_list_t; + +typedef void(tmq_commit_cb(tmq_t *, int32_t code, void *param)); + +DLL_EXPORT tmq_list_t *tmq_list_new(); +DLL_EXPORT int32_t tmq_list_append(tmq_list_t *, const char *); +DLL_EXPORT void tmq_list_destroy(tmq_list_t *); +DLL_EXPORT tmq_t *tmq_consumer_new(tmq_conf_t *conf, char *errstr, int32_t errstrLen); +DLL_EXPORT const char *tmq_err2str(int32_t code); + +DLL_EXPORT int32_t tmq_subscribe(tmq_t *tmq, const tmq_list_t *topic_list); +DLL_EXPORT int32_t tmq_unsubscribe(tmq_t *tmq); +DLL_EXPORT TAOS_RES *tmq_consumer_poll(tmq_t *tmq, int64_t timeout); +DLL_EXPORT int32_t tmq_consumer_close(tmq_t *tmq); +DLL_EXPORT int32_t tmq_commit_sync(tmq_t *tmq, const TAOS_RES *msg); +DLL_EXPORT void tmq_commit_async(tmq_t *tmq, const TAOS_RES *msg, tmq_commit_cb *cb, void *param); + +enum tmq_conf_res_t { + TMQ_CONF_UNKNOWN = -2, + TMQ_CONF_INVALID = -1, + TMQ_CONF_OK = 0, +}; +typedef enum tmq_conf_res_t tmq_conf_res_t; + +DLL_EXPORT tmq_conf_t *tmq_conf_new(); +DLL_EXPORT tmq_conf_res_t tmq_conf_set(tmq_conf_t *conf, const char *key, const char *value); +DLL_EXPORT void tmq_conf_destroy(tmq_conf_t *conf); +DLL_EXPORT void tmq_conf_set_auto_commit_cb(tmq_conf_t *conf, tmq_commit_cb *cb, void *param); +``` + +这些 API 的文档请见 [C/C++ Connector](/reference/connector/cpp),下面介绍一下它们的具体用法(超级表和子表结构请参考“数据建模”一节),完整的示例代码请见下面 C 语言的示例代码。 + + + + +```java +void subscribe(Collection topics) throws SQLException; + +void unsubscribe() throws SQLException; + +Set subscription() throws SQLException; + +ConsumerRecords poll(Duration timeout) throws SQLException; + +void commitAsync(); + +void commitAsync(OffsetCommitCallback callback); + +void commitSync() throws SQLException; + +void close() throws SQLException; +``` + + + + +## 写入数据 + +首先完成建库、建一张超级表和多张子表操作,然后就可以写入数据了,比如: + +```sql +DROP DATABASE IF EXISTS tmqdb; +CREATE DATABASE tmqdb; +CREATE TABLE tmqdb.stb (ts TIMESTAMP, c1 INT, c2 FLOAT, c3 VARCHAR(16) TAGS(t1 INT, t3 VARCHAR(16)); +CREATE TABLE tmqdb.ctb0 USING tmqdb.stb TAGS(0, "subtable0"); +CREATE TABLE tmqdb.ctb1 USING tmqdb.stb TAGS(1, "subtable1"); +INSERT INTO tmqdb.ctb0 VALUES(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00'); +INSERT INTO tmqdb.ctb1 VALUES(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11'); +``` + +## 创建 *topic* + +TDengine 使用 SQL 创建一个 topic: + +```sql +CREATE TOPIC topic_name AS SELECT ts, c1, c2, c3 FROM tmqdb.stb WHERE c1 > 1; +``` + +TMQ 支持多种订阅类型: + +### 列订阅 + +语法: + +```sql +CREATE TOPIC topic_name as subquery +``` + +通过 `SELECT` 语句订阅(包括 `SELECT *`,或 `SELECT ts, c1` 等指定列订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合)。需要注意的是: + +- 该类型 TOPIC 一旦创建则订阅数据的结构确定。 +- 被订阅或用于计算的列或标签不可被删除(`ALTER table DROP`)、修改(`ALTER table MODIFY`)。 +- 若发生表结构变更,新增的列不出现在结果中,若发生列删除则会报错。 + +### 超级表订阅 + +语法: + +```sql +CREATE TOPIC topic_name AS STABLE stb_name +``` + +与 `SELECT * from stbName` 订阅的区别是: + +- 不会限制用户的表结构变更。 +- 返回的是非结构化的数据:返回数据的结构会随之超级表的表结构变化而变化。 +- 用户对于要处理的每一个数据块都可能有不同的表结构。 +- 返回数据不包含标签。 + +### 数据库订阅 + +语法: + +```sql +CREATE TOPIC topic_name [WITH META] AS DATABASE db_name; +``` + +通过该语句可创建一个包含数据库所有表数据的订阅,`WITH META` 可选择将数据库结构变动信息加入到订阅消息流,TMQ 将消费当前数据库下所有表结构的变动,包括超级表的创建与删除,列添加、删除或修改,子表的创建、删除及 TAG 变动信息等等。消费者可通过 API 来判断具体的消息类型。这一点也是与 Kafka 不同的地方。 + +## 创建消费者 *consumer* + +消费者需要通过一系列配置选项创建,基础配置项如下表所示: + +| 参数名称 | 类型 | 参数说明 | 备注 | +| :----------------------------: | :-----: | -------------------------------------------------------- | ------------------------------------------- | +| `td.connect.ip` | string | 用于创建连接,同 `taos_connect` | | +| `td.connect.user` | string | 用于创建连接,同 `taos_connect` | | +| `td.connect.pass` | string | 用于创建连接,同 `taos_connect` | +| `td.connect.port` | integer | 用于创建连接,同 `taos_connect` | +| `group.id` | string | 消费组 ID,同一消费组共享消费进度 | **必填项**。最大长度:192。 | +| `client.id` | string | 客户端 ID | 最大长度:192。 | +| `auto.offset.reset` | enum | 消费组订阅的初始位置 | 可选:`earliest`, `latest`, `none`(default) | +| `enable.auto.commit` | boolean | 启用自动提交 | 合法值:`true`, `false`。 | +| `auto.commit.interval.ms` | integer | 以毫秒为单位的自动提交时间间隔 | +| `enable.heartbeat.background` | boolean | 启用后台心跳,启用后即使长时间不 poll 消息也不会造成离线 | | +| `experimental.snapshot.enable` | boolean | 从 WAL 开始消费,还是从 TSBS 开始消费 | | +| `msg.with.table.name` | boolean | 是否允许从消息中解析表名 | + +对于不同编程语言,其设置方式如下: + + + + +```c +/* 根据需要,设置消费组 (group.id)、自动提交 (enable.auto.commit)、 + 自动提交时间间隔 (auto.commit.interval.ms)、用户名 (td.connect.user)、密码 (td.connect.pass) 等参数 */ +tmq_conf_t* conf = tmq_conf_new(); +tmq_conf_set(conf, "enable.auto.commit", "true"); +tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); +tmq_conf_set(conf, "group.id", "cgrpName"); +tmq_conf_set(conf, "td.connect.user", "root"); +tmq_conf_set(conf, "td.connect.pass", "taosdata"); +tmq_conf_set(conf, "auto.offset.reset", "earliest"); +tmq_conf_set(conf, "experimental.snapshot.enable", "true"); +tmq_conf_set(conf, "msg.with.table.name", "true"); +tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); + +tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); +tmq_conf_destroy(conf); +``` + + + + +对于 Java 程序,额外支持以下配置项: + +| 参数名称 | 类型 | 参数说明 | +| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | +| value.deserializer | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | +| value.deserializer.encoding | string | 值解析所使用的反序列化方式 | | + +```java + import com.taosdata.jdbc.tmq.ReferenceDeserializer; + + public class MetersDeserializer extends ReferenceDeserializer { + } +``` + +```java +Properties properties = new Properties(); +properties.setProperty("enable.auto.commit", "true"); +properties.setProperty("auto.commit.interval.ms", "1000"); +properties.setProperty("group.id", "cgrpName"); +properties.setProperty("bootstrap.servers", "127.0.0.1:6030"); +properties.setProperty("td.connect.user", "root"); +properties.setProperty("td.connect.pass", "taosdata"); +properties.setProperty("auto.offset.reset", "earliest"); +properties.setProperty("msg.with.table.name", "true"); +properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); + +TaosConsumer consumer = new TaosConsumer<>(properties); +``` + + + + +上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 + +## 订阅 *topics* + +一个 consumer 支持同时订阅多个 topic。 + +```c +// 创建订阅 topics 列表 +tmq_list_t* topicList = tmq_list_new(); +tmq_list_append(topicList, "topicName"); +// 启动订阅 +tmq_subscribe(tmq, topicList); +tmq_list_destroy(topicList); + +``` + +## 消费 + + + + +```c +// 消费数据 +while (running) { + TAOS_RES* msg = tmq_consumer_poll(tmq, timeOut); + msg_process(msg); +} +``` + +这里是一个 **while** 循环,每调用一次 tmq_consumer_poll(),获取一个消息,该消息与普通查询返回的结果集完全相同,可以使用相同的解析 API 完成消息内容的解析。 + + + + +```java +List topics = new ArrayList<>(); +topics.add("tmq_topic"); +consumer.subscribe(topics); + +while(running){ + ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); + for (Meters meter : meters) { + processMsg(meter); + } +} +``` + + + + +## 结束消费 + + + + +```c +/* 取消订阅 */ +tmq_unsubscribe(tmq); + +/* 关闭消费者对象 */ +tmq_consumer_close(tmq); +``` + + + + +```java +/* 取消订阅 */ +consumer.unsubscribe(); + +/* 关闭消费 */ +consumer.close(); +``` + + + + +## 删除 *topic* + +如果不再需要订阅数据,可以删除 topic,需要注意:只有当前未在订阅中的 TOPIC 才能被删除。 + +```sql +/* 删除 topic */ +DROP TOPIC topic_name; +``` + +## 状态查看 + +1、*topics*:查询已经创建的 topic + +```sql +SHOW TOPICS; +``` + +2、consumers:查询 consumer 的状态及其订阅的 topic + +```sql +SHOW CONSUMERS; +``` + +3、subscriptions:查询 consumer 与 vgroup 之间的分配关系 + +```sql +SHOW SUBSCRIPTIONS; +``` + +## 示例代码 + +以下是各语言的完整示例代码。 + + + + +```c +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include "taos.h" + +static int running = 1; +static char dbName[64] = "tmqdb"; +static char stbName[64] = "stb"; +static char topicName[64] = "topicname"; + +static int32_t msg_process(TAOS_RES* msg) { + char buf[1024]; + int32_t rows = 0; + + const char* topicName = tmq_get_topic_name(msg); + const char* dbName = tmq_get_db_name(msg); + int32_t vgroupId = tmq_get_vgroup_id(msg); + + printf("topic: %s\n", topicName); + printf("db: %s\n", dbName); + printf("vgroup id: %d\n", vgroupId); + + while (1) { + TAOS_ROW row = taos_fetch_row(msg); + if (row == NULL) break; + + TAOS_FIELD* fields = taos_fetch_fields(msg); + int32_t numOfFields = taos_field_count(msg); + int32_t* length = taos_fetch_lengths(msg); + int32_t precision = taos_result_precision(msg); + const char* tbName = tmq_get_table_name(msg); + rows++; + taos_print_row(buf, row, fields, numOfFields); + printf("row content from %s: %s\n", (tbName != NULL ? tbName : "table null"), buf); + } + + return rows; +} + +static int32_t init_env() { + TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); + if (pConn == NULL) { + return -1; + } + + TAOS_RES* pRes; + // drop database if exists + printf("create database\n"); + pRes = taos_query(pConn, "drop database if exists tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in drop tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create database + pRes = taos_query(pConn, "create database tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in create tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create super table + printf("create super table\n"); + pRes = taos_query( + pConn, "create table tmqdb.stb (ts timestamp, c1 int, c2 float, c3 varchar(16)) tags(t1 int, t3 varchar(16))"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table stb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // create sub tables + printf("create sub tables\n"); + pRes = taos_query(pConn, "create table tmqdb.ctb0 using tmqdb.stb tags(0, 'subtable0')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb1 using tmqdb.stb tags(1, 'subtable1')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb1, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb2 using tmqdb.stb tags(2, 'subtable2')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb2, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create table tmqdb.ctb3 using tmqdb.stb tags(3, 'subtable3')"); + if (taos_errno(pRes) != 0) { + printf("failed to create super table ctb3, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + // insert data + printf("insert data into sub tables\n"); + pRes = taos_query(pConn, "insert into tmqdb.ctb0 values(now, 0, 0, 'a0')(now+1s, 0, 0, 'a00')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb1 values(now, 1, 1, 'a1')(now+1s, 11, 11, 'a11')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb2 values(now, 2, 2, 'a1')(now+1s, 22, 22, 'a22')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "insert into tmqdb.ctb3 values(now, 3, 3, 'a1')(now+1s, 33, 33, 'a33')"); + if (taos_errno(pRes) != 0) { + printf("failed to insert into ctb0, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + taos_close(pConn); + return 0; +} + +int32_t create_topic() { + printf("create topic\n"); + TAOS_RES* pRes; + TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0); + if (pConn == NULL) { + return -1; + } + + pRes = taos_query(pConn, "use tmqdb"); + if (taos_errno(pRes) != 0) { + printf("error in use tmqdb, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + pRes = taos_query(pConn, "create topic topicname as select ts, c1, c2, c3 from tmqdb.stb where c1 > 1"); + if (taos_errno(pRes) != 0) { + printf("failed to create topic topicname, reason:%s\n", taos_errstr(pRes)); + return -1; + } + taos_free_result(pRes); + + taos_close(pConn); + return 0; +} + +void tmq_commit_cb_print(tmq_t* tmq, int32_t code, void* param) { + printf("tmq_commit_cb_print() code: %d, tmq: %p, param: %p\n", code, tmq, param); +} + +tmq_t* build_consumer() { + tmq_conf_res_t code; + tmq_conf_t* conf = tmq_conf_new(); + code = tmq_conf_set(conf, "enable.auto.commit", "true"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "auto.commit.interval.ms", "1000"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "group.id", "cgrpName"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "client.id", "user defined name"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "td.connect.user", "root"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "td.connect.pass", "taosdata"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "auto.offset.reset", "earliest"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "experimental.snapshot.enable", "true"); + if (TMQ_CONF_OK != code) return NULL; + code = tmq_conf_set(conf, "msg.with.table.name", "true"); + if (TMQ_CONF_OK != code) return NULL; + + tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); + + tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); + tmq_conf_destroy(conf); + return tmq; +} + +tmq_list_t* build_topic_list() { + tmq_list_t* topicList = tmq_list_new(); + int32_t code = tmq_list_append(topicList, "topicname"); + if (code) { + return NULL; + } + return topicList; +} + +void basic_consume_loop(tmq_t* tmq, tmq_list_t* topicList) { + int32_t code; + + if ((code = tmq_subscribe(tmq, topicList))) { + fprintf(stderr, "%% Failed to tmq_subscribe(): %s\n", tmq_err2str(code)); + return; + } + + int32_t totalRows = 0; + int32_t msgCnt = 0; + int32_t timeout = 5000; + while (running) { + TAOS_RES* tmqmsg = tmq_consumer_poll(tmq, timeout); + if (tmqmsg) { + msgCnt++; + totalRows += msg_process(tmqmsg); + taos_free_result(tmqmsg); + /*} else {*/ + /*break;*/ + } + } + + fprintf(stderr, "%d msg consumed, include %d rows\n", msgCnt, totalRows); +} + +int main(int argc, char* argv[]) { + int32_t code; + + if (init_env() < 0) { + return -1; + } + + if (create_topic() < 0) { + return -1; + } + + tmq_t* tmq = build_consumer(); + if (NULL == tmq) { + fprintf(stderr, "%% build_consumer() fail!\n"); + return -1; + } + + tmq_list_t* topic_list = build_topic_list(); + if (NULL == topic_list) { + return -1; + } + + basic_consume_loop(tmq, topic_list); + + code = tmq_unsubscribe(tmq); + if (code) { + fprintf(stderr, "%% Failed to unsubscribe: %s\n", tmq_err2str(code)); + } else { + fprintf(stderr, "%% unsubscribe\n"); + } + + code = tmq_consumer_close(tmq); + if (code) { + fprintf(stderr, "%% Failed to close consumer: %s\n", tmq_err2str(code)); + } else { + fprintf(stderr, "%% Consumer closed\n"); + } + + return 0; +} + +``` + +[查看源码](https://github.com/taosdata/TDengine/blob/develop/examples/c/tmq.c) + + + + + + + + + + + + + + + + +```python +import taos +from taos.tmq import * + +conn = taos.connect() + +# create database +conn.execute("drop database if exists py_tmq") +conn.execute("create database if not exists py_tmq vgroups 2") + +# create table and stables +conn.select_db("py_tmq") +conn.execute("create stable if not exists stb1 (ts timestamp, c1 int, c2 float, c3 binary(10)) tags(t1 int)") +conn.execute("create table if not exists tb1 using stb1 tags(1)") +conn.execute("create table if not exists tb2 using stb1 tags(2)") +conn.execute("create table if not exists tb3 using stb1 tags(3)") + +# create topic +conn.execute("drop topic if exists topic_ctb_column") +conn.execute("create topic if not exists topic_ctb_column as select ts, c1, c2, c3 from stb1") + +# set consumer configure options +conf = TaosTmqConf() +conf.set("group.id", "tg2") +conf.set("td.connect.user", "root") +conf.set("td.connect.pass", "taosdata") +conf.set("enable.auto.commit", "true") +conf.set("msg.with.table.name", "true") + +def tmq_commit_cb_print(tmq, resp, offset, param=None): + print(f"commit: {resp}, tmq: {tmq}, offset: {offset}, param: {param}") + +conf.set_auto_commit_cb(tmq_commit_cb_print, None) + +# build consumer +tmq = conf.new_consumer() + +# build topic list +topic_list = TaosTmqList() +topic_list.append("topic_ctb_column") + +# subscribe consumer +tmq.subscribe(topic_list) + +# check subscriptions +sub_list = tmq.subscription() +print("subscribed topics: ",sub_list) + +# start subscribe +while 1: + res = tmq.poll(1000) + if res: + topic = res.get_topic_name() + vg = res.get_vgroup_id() + db = res.get_db_name() + print(f"topic: {topic}\nvgroup id: {vg}\ndb: {db}") + for row in res: + print(row) + tb = res.get_table_name() + print(f"from table: {tb}") + +``` + +[查看源码](https://github.com/taosdata/TDengine/blob/develop/docs/examples/python/tmq_example.py) + + + + + + + + + + + + From 94a56556de88be394b031b184a02d5892516a1f7 Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 17:50:42 +0800 Subject: [PATCH 048/108] chore: fix bootstrap.servers lost --- docs/zh/07-develop/07-tmq.mdx | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 46dab395c0..1e6610a1c2 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -198,19 +198,15 @@ tmq_conf_destroy(conf); -对于 Java 程序,额外支持以下配置项: +对于 Java 程序,使用如下配置项: -| 参数名称 | 类型 | 参数说明 | -| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | -| value.deserializer | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | -| value.deserializer.encoding | string | 值解析所使用的反序列化方式 | | +| 参数名称 | 类型 | 参数说明 | +| ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `bootstrap.servers` | string | 连接地址,如 `localhost:6030` | +| `value.deserializer` | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | +| `value.deserializer.encoding` | string | 值解析所使用的反序列化方式 | | -```java - import com.taosdata.jdbc.tmq.ReferenceDeserializer; - - public class MetersDeserializer extends ReferenceDeserializer { - } -``` +需要注意:此处使用 `bootstrap.servers` 替代 `td.connect.ip` 和 `td.connect.port`,以提供与 Kafka 一致的接口。 ```java Properties properties = new Properties(); @@ -225,6 +221,12 @@ properties.setProperty("msg.with.table.name", "true"); properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); TaosConsumer consumer = new TaosConsumer<>(properties); + +/* value deserializer definition. */ +import com.taosdata.jdbc.tmq.ReferenceDeserializer; + +public class MetersDeserializer extends ReferenceDeserializer { +} ``` From 6ad1ff24c2948146ba531f17920b0ab0c0197ca7 Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 15 Aug 2022 17:54:47 +0800 Subject: [PATCH 049/108] docs: fix param --- docs/zh/07-develop/07-tmq.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 1e6610a1c2..8df1bf287e 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -218,7 +218,7 @@ properties.setProperty("td.connect.user", "root"); properties.setProperty("td.connect.pass", "taosdata"); properties.setProperty("auto.offset.reset", "earliest"); properties.setProperty("msg.with.table.name", "true"); -properties.setProperty("value.deserializer.encoding", "com.taos.example.MetersDeserializer"); +properties.setProperty("value.deserializer", "com.taos.example.MetersDeserializer"); TaosConsumer consumer = new TaosConsumer<>(properties); From 496c6219b512c34e6097fd354ccaf9f283b5cfce Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 17:57:24 +0800 Subject: [PATCH 050/108] chore: fix value.deserializer property type error --- docs/zh/07-develop/07-tmq.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 8df1bf287e..bd3e7bbaeb 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -200,11 +200,11 @@ tmq_conf_destroy(conf); 对于 Java 程序,使用如下配置项: -| 参数名称 | 类型 | 参数说明 | -| ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `bootstrap.servers` | string | 连接地址,如 `localhost:6030` | -| `value.deserializer` | boolean | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | -| `value.deserializer.encoding` | string | 值解析所使用的反序列化方式 | | +| 参数名称 | 类型 | 参数说明 | +| ----------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | +| `bootstrap.servers` | string | 连接地址,如 `localhost:6030` | +| `value.deserializer` | string | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | +| `value.deserializer.encoding` | string | 字指定字符串解析的字符集,默认为 UTF-8 | | 需要注意:此处使用 `bootstrap.servers` 替代 `td.connect.ip` 和 `td.connect.port`,以提供与 Kafka 一致的接口。 From 0ffd56e1487fc3df7a94b3a8931f348e71008b62 Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 17:59:17 +0800 Subject: [PATCH 051/108] chore: fix value.deserializer.encoding charset doc --- docs/zh/07-develop/07-tmq.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index bd3e7bbaeb..8ab155948b 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -200,11 +200,11 @@ tmq_conf_destroy(conf); 对于 Java 程序,使用如下配置项: -| 参数名称 | 类型 | 参数说明 | -| ----------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | -| `bootstrap.servers` | string | 连接地址,如 `localhost:6030` | -| `value.deserializer` | string | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或是继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | -| `value.deserializer.encoding` | string | 字指定字符串解析的字符集,默认为 UTF-8 | | +| 参数名称 | 类型 | 参数说明 | +| ----------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- | +| `bootstrap.servers` | string | 连接地址,如 `localhost:6030` | +| `value.deserializer` | string | 值解析方法,使用此方法应实现 `com.taosdata.jdbc.tmq.Deserializer` 接口或继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer` 类 | +| `value.deserializer.encoding` | string | 指定字符串解析的字符集 | | 需要注意:此处使用 `bootstrap.servers` 替代 `td.connect.ip` 和 `td.connect.port`,以提供与 Kafka 一致的接口。 From 37e6bc5af67022a84b6cc36c97b22ab82960c32d Mon Sep 17 00:00:00 2001 From: huolibo Date: Mon, 15 Aug 2022 18:01:01 +0800 Subject: [PATCH 052/108] docs: add public --- docs/zh/14-reference/03-connector/java.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/14-reference/03-connector/java.mdx b/docs/zh/14-reference/03-connector/java.mdx index c9d74dcaeb..c848608db9 100644 --- a/docs/zh/14-reference/03-connector/java.mdx +++ b/docs/zh/14-reference/03-connector/java.mdx @@ -765,11 +765,11 @@ public abstract class ConsumerLoop { shutdownLatch.await(); } - static class ResultDeserializer extends ReferenceDeserializer { + public static class ResultDeserializer extends ReferenceDeserializer { } - static class ResultBean { + public static class ResultBean { private Timestamp ts; private int speed; From af7ccc210c516da4b7c942368d037e691f134191 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Mon, 15 Aug 2022 18:40:53 +0800 Subject: [PATCH 053/108] docs: add sql changes chapter --- docs/zh/12-taos-sql/29-changes.md | 103 ++++++++++++++++++++++++++++++ docs/zh/12-taos-sql/index.md | 2 +- 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 docs/zh/12-taos-sql/29-changes.md diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md new file mode 100644 index 0000000000..0ebf59f624 --- /dev/null +++ b/docs/zh/12-taos-sql/29-changes.md @@ -0,0 +1,103 @@ +--- +sidebar_label: 3.0 版本语法变更 +title: 3.0 版本语法变更 +description: "TDengine 3.0 版本的语法变更说明" +--- + +## SQL 基本元素变更 + +| # | **元素** | **差异性** | **说明** | +| - | :-------: | :--------: | :------- | +| 1 | VARCHAR | 新增 | BINARY类型的别名。 +| 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 +| 3 | _ROWTS伪列 | 新增 | 表示时间戳主键。是_C0伪列的别名。 +| 4 | INFORMATION_SCHEMA | 新增 | 包含各种SCHEMA定义的系统数据库。 +| 5 | PERFORMANCE_SCHEMA | 新增 | 包含运行信息的系统数据库。 +| 6 | 连续查询 | 废除 | 不再支持连续查询。相关的各种语法和接口废除。 +| 7 | 混合运算 | 增强 | 查询中的混合运算(标量运算和矢量运算混合)全面增强,SELECT的各个子句均全面支持符合语法语义的混合运算。 +| 8 | 标签运算 | 新增 |在查询中,标签列可以像普通列一样参与各种运算,用于各种子句。 +| 9 | 时间线子句和时间函数用于超级表查询 | 增强 |没有PARTITION BY时,超级表的数据会被合并成一条时间线。 + +## SQL 语句变更 + +在 TDengine 中,普通表的数据模型中可使用以下数据类型。 + +| # | **语句** | **差异性** | **说明** | +| - | :-------: | :--------: | :------- | +| 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 +| 3 | ALTER DATABASE | 调整 | 废除
  • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
  • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
  • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
  • COMP:3.0版本暂不支持修改。
    新增
  • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
  • CACHESIZE:表示缓存子表最近数据的内存大小。
  • WAL_FSYNC_PERIOD:代替原FSYNC参数。
  • WAL_LEVEL:代替原WAL参数。
    调整
  • REPLICA:3.0.0版本暂不支持修改。
  • KEEP:3.0版本新增支持带单位的设置方式。 +| 4 | ALTER STABLE | 调整 | 废除
  • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
    新增
  • RENAME TAG:代替原CHANGE TAG子句。
  • COMMENT:修改超级表的注释。 +| 5 | ALTER TABLE | 调整 | 废除
  • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
    新增
  • RENAME TAG:代替原CHANGE TAG子句。
  • COMMENT:修改表的注释。
  • TTL:修改表的生命周期。 +| 6 | ALTER USER | 调整 | 废除
  • PRIVILEGE:修改用户权限。3.0版本使用GRANT和REVOKE来授予和回收权限。
    新增
  • ENABLE:启用或停用此用户。
  • SYSINFO:修改用户是否可查看系统信息。 +| 7 | BALANCE VGROUP | 新增 | 集群存储负载均衡。3.0.0版本暂不支持。 +| 8 | COMPACT VNODES | 暂不支持 | 整理指定VNODE的数据。3.0.0版本暂不支持。 +| 9 | CREATE ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 10 | CREATE DATABASE | 调整 | 废除
  • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • CACHE:VNODE使用的内存块的大小。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
  • DAYS:数据文件存储数据的时间跨度。3.0版本使用DURATION代替。
  • FSYNC:当 WAL 设置为 2 时,执行 fsync 的周期。3.0版本使用WAL_FSYNC_PERIOD代替。
  • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。
  • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
  • WAL:WAL 级别。3.0版本使用WAL_LEVEL代替。
    新增
  • BUFFER:一个 VNODE 写入内存池大小。
  • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
  • CACHESIZE:表示缓存子表最近数据的内存大小。
  • DURATION:代替原DAYS参数。新增支持带单位的设置方式。
  • PAGES:一个 VNODE 中元数据存储引擎的缓存页个数。
  • PAGESIZE:一个 VNODE 中元数据存储引擎的页大小。
  • RETENTIONS:表示数据的聚合周期和保存时长。
  • STRICT:表示数据同步的一致性要求。
  • SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表。
  • VGROUPS:数据库中初始VGROUP的数目。
  • WAL_FSYNC_PERIOD:代替原FSYNC参数。
  • WAL_LEVEL:代替原WAL参数。
  • WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。
  • WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。
  • WAL_ROLL_PERIOD:wal文件切换时长。
  • WAL_SEGMENT_SIZE:wal单个文件大小。
    调整
  • KEEP:3.0版本新增支持带单位的设置方式。 +| 11 | CREATE DNODE | 调整 | 新增主机名和端口号分开指定语法
  • CREATE DNODE dnode_host_name PORT port_val +| 12 | CREATE INDEX | 新增 | 创建SMA索引。 +| 13 | CREATE MNODE | 新增 | 创建管理节点。 +| 14 | CREATE QNODE | 新增 | 创建查询节点。 +| 15 | CREATE SNODE | 新增 | 创建流计算节点。3.0.0版本暂不支持。 +| 16 | CREATE STABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。 +| 17 | CREATE STREAM | 新增 | 创建流。 +| 18 | CREATE TABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。
  • WATERMARK:指定窗口的关闭时间。
  • MAX_DELAY:用于控制推送计算结果的最大延迟。
  • ROLLUP:指定的聚合函数,提供基于多层级的降采样聚合结果。
  • SMA:提供基于数据块的自定义预计算功能。
  • TTL:用来指定表的生命周期的参数。 +| 18 | CREATE TOPIC | 新增 | 创建订阅主题。 +| 19 | DROP ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 20 | DROP BNODE | 新增 | 删除backup节点。3.0.0版本暂不支持。 +| 21 | DROP CONSUMER GROUP | 新增 | 删除消费组。 +| 22 | DROP DNODE | 新增 | 删除数据节点。3.0.0版本暂不支持。 +| 23 | DROP INDEX | 新增 | 删除索引。 +| 24 | DROP MNODE | 新增 | 创建管理节点。 +| 25 | DROP QNODE | 新增 | 创建查询节点。 +| 26 | DROP SNODE | 新增 | 删除流计算节点。3.0.0版本暂不支持。 +| 27 | DROP STREAM | 新增 | 删除流。 +| 28 | DROP TABLE | 调整 | 新增批量删除语法 +| 29 | DROP TOPIC | 新增 | 删除订阅主题。 +| 30 | EXPLAIN | 新增 | 查看查询语句的执行计划。 +| 31 | GRANT | 新增 | 授予用户权限。 +| 32 | KILL TRANSACTION | 新增 | 终止管理节点的事务。 +| 33 | KILL STREAM | 废除 | 终止连续查询。3.0版本不再支持连续查询,而是用更通用的流计算来代替。 +| 34 | MERGE VGROUP | 新增 | 合并VGROUP。 +| 35 | REDISTRIBUTE VGROUP | 新增 | 调整VGROUP的数据分布。3.0.0版本暂不支持。 +| 36 | REVOKE | 新增 | 回收用户权限。 +| 37 | SELECT | 调整 |
  • SELECT关闭隐式结果列,输出列均需要由SELECT子句来指定。
  • DISTINCT功能全面支持。2.x版本只支持对标签列去重,并且不可以和JOIN、GROUP BY等子句混用。
  • JOIN功能增强。增加支持:JOIN后WHERE条件中有OR条件;JOIN后的多表运算;JOIN后的多表GROUP BY。
  • FROM后子查询功能大幅增强。不限制子查询嵌套层数;支持子查询和UNION ALL混合使用;移除其他一些之前版本的语法限制。
  • WHERE后可以使用任意的标量表达式。
  • GROUP BY功能增强。支持任意标量表达式及其组合的分组。
  • SESSION可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
  • STATE_WINDOW可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
  • ORDER BY功能大幅增强。不再必须和GROUP BY子句一起使用;不再有排序表达式个数的限制;增加支持NULLS FIRST/LAST语法功能;支持符合语法语义的任意表达式。
  • 新增PARTITION BY语法。替代原来的GROUP BY tags。 +| 38 | SHOW ACCOUNTS | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 39 | SHOW APPS |新增 | 显示接入集群的应用(客户端)信息。 +| 40 | SHOW BNODES |新增 | 显示当前系统中存在的 BNODE 的信息。3.0.0版本暂不支持。 +| 41 | SHOW CONSUMERS | 新增 | 显示当前数据库下所有活跃的消费者的信息。 +| 42 | SHOW DATABASES | 调整 | 3.0版本只显示数据库名。 +| 43 | SHOW FUNCTIONS | 调整 | 3.0版本只显示自定义函数名。 +| 44 | SHOW LICENCE | 新增 | 和SHOW GRANTS 命令等效。 +| 45 | SHOW INDEXES | 新增 | 显示已创建的索引。 +| 46 | SHOW LOCAL VARIABLES | 新增 | 显示当前客户端配置参数的运行值。 +| 47 | SHOW MODULES | 废除 | 显示当前系统中所安装的组件的信息。 +| 48 | SHOW QNODES | 新增 | 显示当前系统中QNODE的信息。 +| 49 | SHOW SNODES | 新增 | 显示当前系统中SNODE的信息。3.0.0版本暂不支持。 +| 50 | SHOW STABLES | 调整 | 3.0版本只显示超级表名。 +| 51 | SHOW STREAMS | 调整 | 2.x版本此命令显示系统中已创建的连续查询的信息。3.0版本废除了连续查询,用流代替。此命令显示已创建的流。 +| 52 | SHOW SUBSCRIPTIONS | 新增 | 显示当前数据库下的所有的订阅关系 +| 53 | SHOW TABLES | 调整 | 3.0版本只显示表名。 +| 54 | SHOW TABLE DISTRIBUTED | 新增 | 显示表的数据分布信息。代替2.x版本中的SELECT _block_dist() FROM { tb_name | stb_name }方式。 +| 55 | SHOW TOPICS | 新增 | 显示当前数据库下的所有订阅主题。 +| 56 | SHOW TRANSACTIONS | 新增 | 显示当前系统中正在执行的事务的信息。 +| 57 | SHOW DNODE VARIABLES | 新增 |显示指定DNODE的配置参数。 +| 58 | SHOW VNODES | 暂不支持 | 显示当前系统中VNODE的信息。3.0.0版本暂不支持。 +| 59 | SPLIT VGROUP | 新增 | 拆分VGROUP。 +| 60 | TRIM DATABASE | 新增 | 删除过期数据,并根据多级存储的配置归整数据。 + +## SQL 函数变更 + +| # | **函数** | **差异性** | **说明** | +| - | :-------: | :--------: | :------- | +| 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 3 | LEASTSQUARES | 增强 | 可以用于超级表了。 +| 4 | ELAPSED | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 5 | DIFF | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 6 | DERIVATIVE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 7 | CSUM | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 8 | MAVG | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 9 | SAMPLE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 10 | STATECOUNT | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 11 | STATEDURATION | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 diff --git a/docs/zh/12-taos-sql/index.md b/docs/zh/12-taos-sql/index.md index 900fff1ba2..821679551c 100644 --- a/docs/zh/12-taos-sql/index.md +++ b/docs/zh/12-taos-sql/index.md @@ -3,7 +3,7 @@ title: TAOS SQL description: "TAOS SQL 支持的语法规则、主要查询功能、支持的 SQL 查询函数,以及常用技巧等内容" --- -本文档说明 TAOS SQL 支持的语法规则、主要查询功能、支持的 SQL 查询函数,以及常用技巧等内容。阅读本文档需要读者具有基本的 SQL 语言的基础。 +本文档说明 TAOS SQL 支持的语法规则、主要查询功能、支持的 SQL 查询函数,以及常用技巧等内容。阅读本文档需要读者具有基本的 SQL 语言的基础。TDengine 3.0 版本相比 2.x 版本做了大量改进和优化,特别是查询引擎进行了彻底的重构,因此 SQL 语法相比 2.x 版本有很多变更。详细的变更内容请见 [3.0 版本语法变更](/taos-sql/changes) 章节 TAOS SQL 是用户对 TDengine 进行数据写入和查询的主要工具。TAOS SQL 提供标准的 SQL 语法,并针对时序数据和业务的特点优化和新增了许多语法和功能。TAOS SQL 语句的最大长度为 1M。TAOS SQL 不支持关键字的缩写,例如 DELETE 不能缩写为 DEL。 From 4164d1463754e4f086f1695f4794299ad551eec1 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Mon, 15 Aug 2022 18:50:14 +0800 Subject: [PATCH 054/108] refactor(sync): add syncIsReadyForRead --- source/libs/sync/src/syncMain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index 5656f19890..1991560d42 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -875,8 +875,8 @@ int32_t syncNodePropose(SSyncNode* pSyncNode, SRpcMsg* pMsg, bool isWeak) { pSyncNode->changing = true; } - // not restored - if (!pSyncNode->restoreFinish) { + // not restored, vnode enable + if (!pSyncNode->restoreFinish && pSyncNode->vgId != 1) { ret = -1; terrno = TSDB_CODE_SYN_PROPOSE_NOT_READY; sError("vgId:%d, failed to sync propose since not ready, type:%s, last:%ld, cmt:%ld", pSyncNode->vgId, From 756f3340969a9de2225d292d9518d1175047e082 Mon Sep 17 00:00:00 2001 From: Huo Linhe Date: Mon, 15 Aug 2022 18:49:15 +0800 Subject: [PATCH 055/108] docs: fix subscribe topics doc style --- docs/zh/07-develop/07-tmq.mdx | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 8ab155948b..f36f76fd85 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -238,6 +238,9 @@ public class MetersDeserializer extends ReferenceDeserializer { 一个 consumer 支持同时订阅多个 topic。 + + + ```c // 创建订阅 topics 列表 tmq_list_t* topicList = tmq_list_new(); @@ -248,8 +251,23 @@ tmq_list_destroy(topicList); ``` + + + +```java +List topics = new ArrayList<>(); +topics.add("tmq_topic"); +consumer.subscribe(topics); +``` + + + + + ## 消费 +以下代码展示了不同语言下如何对 TMQ 消息进行消费。 + @@ -267,10 +285,6 @@ while (running) { ```java -List topics = new ArrayList<>(); -topics.add("tmq_topic"); -consumer.subscribe(topics); - while(running){ ConsumerRecords meters = consumer.poll(Duration.ofMillis(100)); for (Meters meter : meters) { @@ -284,6 +298,8 @@ while(running){ ## 结束消费 +消费结束后,应当取消订阅。 + From 6fc2d8c78b7782155120eac6356698d1ad59b34d Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Mon, 15 Aug 2022 19:29:29 +0800 Subject: [PATCH 056/108] fix: syntax error --- docs/zh/12-taos-sql/29-changes.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 0ebf59f624..a3fefa59fa 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -26,22 +26,22 @@ description: "TDengine 3.0 版本的语法变更说明" | - | :-------: | :--------: | :------- | | 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 -| 3 | ALTER DATABASE | 调整 | 废除
  • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
  • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
  • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
  • COMP:3.0版本暂不支持修改。
    新增
  • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
  • CACHESIZE:表示缓存子表最近数据的内存大小。
  • WAL_FSYNC_PERIOD:代替原FSYNC参数。
  • WAL_LEVEL:代替原WAL参数。
    调整
  • REPLICA:3.0.0版本暂不支持修改。
  • KEEP:3.0版本新增支持带单位的设置方式。 -| 4 | ALTER STABLE | 调整 | 废除
  • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
    新增
  • RENAME TAG:代替原CHANGE TAG子句。
  • COMMENT:修改超级表的注释。 -| 5 | ALTER TABLE | 调整 | 废除
  • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
    新增
  • RENAME TAG:代替原CHANGE TAG子句。
  • COMMENT:修改表的注释。
  • TTL:修改表的生命周期。 -| 6 | ALTER USER | 调整 | 废除
  • PRIVILEGE:修改用户权限。3.0版本使用GRANT和REVOKE来授予和回收权限。
    新增
  • ENABLE:启用或停用此用户。
  • SYSINFO:修改用户是否可查看系统信息。 +| 3 | ALTER DATABASE | 调整 | 废除
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • COMP:3.0版本暂不支持修改。
      新增
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
      调整
    • REPLICA:3.0.0版本暂不支持修改。
    • KEEP:3.0版本新增支持带单位的设置方式。
    +| 4 | ALTER STABLE | 调整 | 废除
    • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
      新增
    • RENAME TAG:代替原CHANGE TAG子句。
    • COMMENT:修改超级表的注释。
    +| 5 | ALTER TABLE | 调整 | 废除
    • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
      新增
    • RENAME TAG:代替原CHANGE TAG子句。
    • COMMENT:修改表的注释。
    • TTL:修改表的生命周期。
    +| 6 | ALTER USER | 调整 | 废除
    • PRIVILEGE:修改用户权限。3.0版本使用GRANT和REVOKE来授予和回收权限。
      新增
    • ENABLE:启用或停用此用户。
    • SYSINFO:修改用户是否可查看系统信息。
    | 7 | BALANCE VGROUP | 新增 | 集群存储负载均衡。3.0.0版本暂不支持。 | 8 | COMPACT VNODES | 暂不支持 | 整理指定VNODE的数据。3.0.0版本暂不支持。 | 9 | CREATE ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 -| 10 | CREATE DATABASE | 调整 | 废除
  • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • CACHE:VNODE使用的内存块的大小。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
  • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
  • DAYS:数据文件存储数据的时间跨度。3.0版本使用DURATION代替。
  • FSYNC:当 WAL 设置为 2 时,执行 fsync 的周期。3.0版本使用WAL_FSYNC_PERIOD代替。
  • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。
  • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
  • WAL:WAL 级别。3.0版本使用WAL_LEVEL代替。
    新增
  • BUFFER:一个 VNODE 写入内存池大小。
  • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
  • CACHESIZE:表示缓存子表最近数据的内存大小。
  • DURATION:代替原DAYS参数。新增支持带单位的设置方式。
  • PAGES:一个 VNODE 中元数据存储引擎的缓存页个数。
  • PAGESIZE:一个 VNODE 中元数据存储引擎的页大小。
  • RETENTIONS:表示数据的聚合周期和保存时长。
  • STRICT:表示数据同步的一致性要求。
  • SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表。
  • VGROUPS:数据库中初始VGROUP的数目。
  • WAL_FSYNC_PERIOD:代替原FSYNC参数。
  • WAL_LEVEL:代替原WAL参数。
  • WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。
  • WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。
  • WAL_ROLL_PERIOD:wal文件切换时长。
  • WAL_SEGMENT_SIZE:wal单个文件大小。
    调整
  • KEEP:3.0版本新增支持带单位的设置方式。 -| 11 | CREATE DNODE | 调整 | 新增主机名和端口号分开指定语法
  • CREATE DNODE dnode_host_name PORT port_val +| 10 | CREATE DATABASE | 调整 | 废除
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHE:VNODE使用的内存块的大小。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • DAYS:数据文件存储数据的时间跨度。3.0版本使用DURATION代替。
    • FSYNC:当 WAL 设置为 2 时,执行 fsync 的周期。3.0版本使用WAL_FSYNC_PERIOD代替。
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • WAL:WAL 级别。3.0版本使用WAL_LEVEL代替。
      新增
    • BUFFER:一个 VNODE 写入内存池大小。
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • DURATION:代替原DAYS参数。新增支持带单位的设置方式。
    • PAGES:一个 VNODE 中元数据存储引擎的缓存页个数。
    • PAGESIZE:一个 VNODE 中元数据存储引擎的页大小。
    • RETENTIONS:表示数据的聚合周期和保存时长。
    • STRICT:表示数据同步的一致性要求。
    • SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表。
    • VGROUPS:数据库中初始VGROUP的数目。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
    • WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。
    • WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。
    • WAL_ROLL_PERIOD:wal文件切换时长。
    • WAL_SEGMENT_SIZE:wal单个文件大小。
      调整
    • KEEP:3.0版本新增支持带单位的设置方式。
    +| 11 | CREATE DNODE | 调整 | 新增主机名和端口号分开指定语法
    • CREATE DNODE dnode_host_name PORT port_val
    | 12 | CREATE INDEX | 新增 | 创建SMA索引。 | 13 | CREATE MNODE | 新增 | 创建管理节点。 | 14 | CREATE QNODE | 新增 | 创建查询节点。 | 15 | CREATE SNODE | 新增 | 创建流计算节点。3.0.0版本暂不支持。 -| 16 | CREATE STABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。 +| 16 | CREATE STABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。
  • | 17 | CREATE STREAM | 新增 | 创建流。 -| 18 | CREATE TABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。
  • WATERMARK:指定窗口的关闭时间。
  • MAX_DELAY:用于控制推送计算结果的最大延迟。
  • ROLLUP:指定的聚合函数,提供基于多层级的降采样聚合结果。
  • SMA:提供基于数据块的自定义预计算功能。
  • TTL:用来指定表的生命周期的参数。 +| 18 | CREATE TABLE | 调整 | 新增表参数语法
    • COMMENT:表注释。
    • WATERMARK:指定窗口的关闭时间。
    • MAX_DELAY:用于控制推送计算结果的最大延迟。
    • ROLLUP:指定的聚合函数,提供基于多层级的降采样聚合结果。
    • SMA:提供基于数据块的自定义预计算功能。
    • TTL:用来指定表的生命周期的参数。
    | 18 | CREATE TOPIC | 新增 | 创建订阅主题。 | 19 | DROP ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 20 | DROP BNODE | 新增 | 删除backup节点。3.0.0版本暂不支持。 @@ -61,7 +61,7 @@ description: "TDengine 3.0 版本的语法变更说明" | 34 | MERGE VGROUP | 新增 | 合并VGROUP。 | 35 | REDISTRIBUTE VGROUP | 新增 | 调整VGROUP的数据分布。3.0.0版本暂不支持。 | 36 | REVOKE | 新增 | 回收用户权限。 -| 37 | SELECT | 调整 |
  • SELECT关闭隐式结果列,输出列均需要由SELECT子句来指定。
  • DISTINCT功能全面支持。2.x版本只支持对标签列去重,并且不可以和JOIN、GROUP BY等子句混用。
  • JOIN功能增强。增加支持:JOIN后WHERE条件中有OR条件;JOIN后的多表运算;JOIN后的多表GROUP BY。
  • FROM后子查询功能大幅增强。不限制子查询嵌套层数;支持子查询和UNION ALL混合使用;移除其他一些之前版本的语法限制。
  • WHERE后可以使用任意的标量表达式。
  • GROUP BY功能增强。支持任意标量表达式及其组合的分组。
  • SESSION可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
  • STATE_WINDOW可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
  • ORDER BY功能大幅增强。不再必须和GROUP BY子句一起使用;不再有排序表达式个数的限制;增加支持NULLS FIRST/LAST语法功能;支持符合语法语义的任意表达式。
  • 新增PARTITION BY语法。替代原来的GROUP BY tags。 +| 37 | SELECT | 调整 |
    • SELECT关闭隐式结果列,输出列均需要由SELECT子句来指定。
    • DISTINCT功能全面支持。2.x版本只支持对标签列去重,并且不可以和JOIN、GROUP BY等子句混用。
    • JOIN功能增强。增加支持:JOIN后WHERE条件中有OR条件;JOIN后的多表运算;JOIN后的多表GROUP BY。
    • FROM后子查询功能大幅增强。不限制子查询嵌套层数;支持子查询和UNION ALL混合使用;移除其他一些之前版本的语法限制。
    • WHERE后可以使用任意的标量表达式。
    • GROUP BY功能增强。支持任意标量表达式及其组合的分组。
    • SESSION可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • STATE_WINDOW可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • ORDER BY功能大幅增强。不再必须和GROUP BY子句一起使用;不再有排序表达式个数的限制;增加支持NULLS FIRST/LAST语法功能;支持符合语法语义的任意表达式。
    • 新增PARTITION BY语法。替代原来的GROUP BY tags。
    | 38 | SHOW ACCOUNTS | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 39 | SHOW APPS |新增 | 显示接入集群的应用(客户端)信息。 | 40 | SHOW BNODES |新增 | 显示当前系统中存在的 BNODE 的信息。3.0.0版本暂不支持。 From 391189b650e6797ba3a8cb51fbf4771f949e78df Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Mon, 15 Aug 2022 22:22:50 +0800 Subject: [PATCH 057/108] Update 28-releases.md --- docs/zh/28-releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/28-releases.md b/docs/zh/28-releases.md index 5f30325829..311d69ac1b 100644 --- a/docs/zh/28-releases.md +++ b/docs/zh/28-releases.md @@ -3,7 +3,7 @@ sidebar_label: 发布历史 title: 发布历史 --- -import Release from "/components/Release"; +import Release from "/components/ReleaseV3"; From 2909e053d44b26c9ca516115c0e51e519c1a1b3f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Mon, 15 Aug 2022 23:37:17 +0800 Subject: [PATCH 058/108] docs: update config parameters --- docs/zh/14-reference/12-config/index.md | 170 ++++++++++++++++++++++++ 1 file changed, 170 insertions(+) diff --git a/docs/zh/14-reference/12-config/index.md b/docs/zh/14-reference/12-config/index.md index 845693a98e..ad49927e6e 100644 --- a/docs/zh/14-reference/12-config/index.md +++ b/docs/zh/14-reference/12-config/index.md @@ -647,3 +647,173 @@ charset 的有效值是 UTF-8。 | 含义 | 是否启动 udf 服务 | | 取值范围 | 0: 不启动;1:启动 | | 缺省值 | 1 | + +## 2.X 与 3.0 配置参数对比 +| # | **参数** | **适用于 2.X 版本** | **适用于 3.0 版本** | +| --- | :-----------------: | --------------- | --------------- | +| 1 | firstEp | 是 | 是 | +| 2 | secondEp | 是 | 是 | +| 3 | fqdn | 是 | 是 | +| 4 | serverPort | 是 | 是 | +| 5 | maxShellConns | 是 | 是 | +| 5 | monitor | 是 | 是 | +| 5 | monitorFqdn | 否 | 是 | +| 5 | monitorPort | 否 | 是 | +| 5 | monitorInterval | 是 | 是 | +| 5 | monitorMaxLogs | 否 | 是 | +| 5 | monitorComp | 否 | 是 | +| 5 | telemetryReporting | 是 | 是 | +| 5 | telemetryInterval | 否 | 是 | +| 5 | telemetryServer | 否 | 是 | +| 5 | telemetryPort | 否 | 是 | +| 5 | queryPolicy | 否 | 是 | +| 5 | querySmaOptimize | 否 | 是 | +| 5 | queryBufferSize | 是 | 是 | +| 5 | maxNumOfDistinctRes | 是 | 是 | +| 5 | minSlidingTime | 是 | 是 | +| 5 | minIntervalTime | 是 | 是 | +| 5 | countAlwaysReturnValue | 是 | 是 | +| 5 | dataDir | 是 | 是 | +| 5 | minimalDataDirGB | 是 | 是 | +| 5 | supportVnodes | 否 | 是 | +| 5 | tempDir | 是 | 是 | +| 5 | minimalTmpDirGB | 是 | 是 | +| 5 | compressMsgSize | 是 | 是 | +| 5 | compressColData | 是 | 是 | +| 5 | smlChildTableName | 是 | 是 | +| 5 | smlTagName | 是 | 是 | +| 5 | smlDataFormat | 否 | 是 | +| 5 | statusInterval | 是 | 是 | +| 5 | shellActivityTimer | 是 | 是 | +| 5 | transPullupInterval | 否 | 是 | +| 5 | mqRebalanceInterval | 否 | 是 | +| 5 | ttlUnit | 否 | 是 | +| 5 | ttlPushInterval | 否 | 是 | +| 5 | numOfTaskQueueThreads | 否 | 是 | +| 5 | numOfRpcThreads | 否 | 是 | +| 5 | numOfCommitThreads | 是 | 是 | +| 5 | numOfMnodeReadThreads | 否 | 是 | +| 5 | numOfVnodeQueryThreads | 否 | 是 | +| 5 | numOfVnodeStreamThreads | 否 | 是 | +| 5 | numOfVnodeFetchThreads | 否 | 是 | +| 5 | numOfVnodeWriteThreads | 否 | 是 | +| 5 | numOfVnodeSyncThreads | 否 | 是 | +| 5 | numOfQnodeQueryThreads | 否 | 是 | +| 5 | numOfQnodeFetchThreads | 否 | 是 | +| 5 | numOfSnodeSharedThreads | 否 | 是 | +| 5 | numOfSnodeUniqueThreads | 否 | 是 | +| 5 | rpcQueueMemoryAllowed | 否 | 是 | +| 5 | logDir | 是 | 是 | +| 5 | minimalLogDirGB | 是 | 是 | +| 5 | numOfLogLines | 是 | 是 | +| 5 | asyncLog | 是 | 是 | +| 5 | logKeepDays | 是 | 是 | +| 5 | debugFlag | 是 | 是 | +| 5 | tmrDebugFlag | 是 | 是 | +| 5 | uDebugFlag | 是 | 是 | +| 5 | rpcDebugFlag | 是 | 是 | +| 5 | jniDebugFlag | 是 | 是 | +| 5 | qDebugFlag | 是 | 是 | +| 5 | cDebugFlag | 是 | 是 | +| 5 | dDebugFlag | 是 | 是 | +| 5 | vDebugFlag | 是 | 是 | +| 5 | mDebugFlag | 是 | 是 | +| 5 | wDebugFlag | 是 | 是 | +| 5 | sDebugFlag | 是 | 是 | +| 5 | tsdbDebugFlag | 是 | 是 | +| 5 | tqDebugFlag | 否 | 是 | +| 5 | fsDebugFlag | 是 | 是 | +| 5 | udfDebugFlag | 否 | 是 | +| 5 | smaDebugFlag | 否 | 是 | +| 5 | idxDebugFlag | 否 | 是 | +| 5 | tdbDebugFlag | 否 | 是 | +| 5 | metaDebugFlag | 否 | 是 | +| 5 | timezone | 是 | 是 | +| 5 | locale | 是 | 是 | +| 5 | charset | 是 | 是 | +| 5 | udf | 是 | 是 | +| 5 | enableCoreFile | 是 | 是 | +| 5 | arbitrator | 是 | 否 | +| 5 | numOfThreadsPerCore | 是 | 否 | +| 5 | numOfMnodes | 是 | 否 | +| 5 | vnodeBak | 是 | 否 | +| 5 | balance | 是 | 否 | +| 5 | balanceInterval | 是 | 否 | +| 5 | offlineThreshold | 是 | 否 | +| 5 | role | 是 | 否 | +| 5 | dnodeNopLoop | 是 | 否 | +| 5 | keepTimeOffset | 是 | 否 | +| 5 | rpcTimer | 是 | 否 | +| 5 | rpcMaxTime | 是 | 否 | +| 5 | rpcForceTcp | 是 | 否 | +| 5 | tcpConnTimeout | 是 | 否 | +| 5 | syncCheckInterval | 是 | 否 | +| 5 | maxTmrCtrl | 是 | 否 | +| 5 | monitorReplica | 是 | 否 | +| 5 | smlTagNullName | 是 | 否 | +| 5 | keepColumnName | 是 | 否 | +| 5 | ratioOfQueryCores | 是 | 否 | +| 5 | maxStreamCompDelay | 是 | 否 | +| 5 | maxFirstStreamCompDelay | 是 | 否 | +| 5 | retryStreamCompDelay | 是 | 否 | +| 5 | streamCompDelayRatio | 是 | 否 | +| 5 | maxVgroupsPerDb | 是 | 否 | +| 5 | maxTablesPerVnode | 是 | 否 | +| 5 | minTablesPerVnode | 是 | 否 | +| 5 | tableIncStepPerVnode | 是 | 否 | +| 5 | cache | 是 | 否 | +| 5 | blocks | 是 | 否 | +| 5 | days | 是 | 否 | +| 5 | keep | 是 | 否 | +| 5 | minRows | 是 | 否 | +| 5 | maxRows | 是 | 否 | +| 5 | quorum | 是 | 否 | +| 5 | comp | 是 | 否 | +| 5 | walLevel | 是 | 否 | +| 5 | fsync | 是 | 否 | +| 5 | replica | 是 | 否 | +| 5 | partitions | 是 | 否 | +| 5 | quorum | 是 | 否 | +| 5 | update | 是 | 否 | +| 5 | cachelast | 是 | 否 | +| 5 | maxSQLLength | 是 | 否 | +| 5 | maxWildCardsLength | 是 | 否 | +| 5 | maxRegexStringLen | 是 | 否 | +| 5 | maxNumOfOrderedRes | 是 | 否 | +| 5 | maxConnections | 是 | 否 | +| 5 | mnodeEqualVnodeNum | 是 | 否 | +| 5 | http | 是 | 否 | +| 5 | httpEnableRecordSql | 是 | 否 | +| 5 | httpMaxThreads | 是 | 否 | +| 5 | restfulRowLimit | 是 | 否 | +| 5 | httpDbNameMandatory | 是 | 否 | +| 5 | httpKeepAlive | 是 | 否 | +| 5 | enableRecordSql | 是 | 否 | +| 5 | maxBinaryDisplayWidth | 是 | 否 | +| 5 | stream | 是 | 否 | +| 5 | retrieveBlockingModel | 是 | 否 | +| 5 | tsdbMetaCompactRatio | 是 | 否 | +| 5 | defaultJSONStrType | 是 | 否 | +| 5 | walFlushSize | 是 | 否 | +| 5 | keepTimeOffset | 是 | 否 | +| 5 | flowctrl | 是 | 否 | +| 5 | slaveQuery | 是 | 否 | +| 5 | adjustMaster | 是 | 否 | +| 5 | topicBinaryLen | 是 | 否 | +| 5 | telegrafUseFieldNum | 是 | 否 | +| 5 | deadLockKillQuery | 是 | 否 | +| 5 | clientMerge | 是 | 否 | +| 5 | sdbDebugFlag | 是 | 否 | +| 5 | odbcDebugFlag | 是 | 否 | +| 5 | httpDebugFlag | 是 | 否 | +| 5 | monDebugFlag | 是 | 否 | +| 5 | cqDebugFlag | 是 | 否 | +| 5 | shortcutFlag | 是 | 否 | +| 5 | probeSeconds | 是 | 否 | +| 5 | probeKillSeconds | 是 | 否 | +| 5 | probeInterval | 是 | 否 | +| 5 | lossyColumns | 是 | 否 | +| 5 | fPrecision | 是 | 否 | +| 5 | dPrecision | 是 | 否 | +| 5 | maxRange | 是 | 否 | +| 5 | range | 是 | 否 | From ccfdbfac76cf86270bb2f0c1eeb991760f374842 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Mon, 15 Aug 2022 23:54:13 +0800 Subject: [PATCH 059/108] docs: update config parameters --- docs/zh/14-reference/12-config/index.md | 322 ++++++++++++------------ 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/docs/zh/14-reference/12-config/index.md b/docs/zh/14-reference/12-config/index.md index ad49927e6e..d2efc5baf3 100644 --- a/docs/zh/14-reference/12-config/index.md +++ b/docs/zh/14-reference/12-config/index.md @@ -656,164 +656,164 @@ charset 的有效值是 UTF-8。 | 3 | fqdn | 是 | 是 | | 4 | serverPort | 是 | 是 | | 5 | maxShellConns | 是 | 是 | -| 5 | monitor | 是 | 是 | -| 5 | monitorFqdn | 否 | 是 | -| 5 | monitorPort | 否 | 是 | -| 5 | monitorInterval | 是 | 是 | -| 5 | monitorMaxLogs | 否 | 是 | -| 5 | monitorComp | 否 | 是 | -| 5 | telemetryReporting | 是 | 是 | -| 5 | telemetryInterval | 否 | 是 | -| 5 | telemetryServer | 否 | 是 | -| 5 | telemetryPort | 否 | 是 | -| 5 | queryPolicy | 否 | 是 | -| 5 | querySmaOptimize | 否 | 是 | -| 5 | queryBufferSize | 是 | 是 | -| 5 | maxNumOfDistinctRes | 是 | 是 | -| 5 | minSlidingTime | 是 | 是 | -| 5 | minIntervalTime | 是 | 是 | -| 5 | countAlwaysReturnValue | 是 | 是 | -| 5 | dataDir | 是 | 是 | -| 5 | minimalDataDirGB | 是 | 是 | -| 5 | supportVnodes | 否 | 是 | -| 5 | tempDir | 是 | 是 | -| 5 | minimalTmpDirGB | 是 | 是 | -| 5 | compressMsgSize | 是 | 是 | -| 5 | compressColData | 是 | 是 | -| 5 | smlChildTableName | 是 | 是 | -| 5 | smlTagName | 是 | 是 | -| 5 | smlDataFormat | 否 | 是 | -| 5 | statusInterval | 是 | 是 | -| 5 | shellActivityTimer | 是 | 是 | -| 5 | transPullupInterval | 否 | 是 | -| 5 | mqRebalanceInterval | 否 | 是 | -| 5 | ttlUnit | 否 | 是 | -| 5 | ttlPushInterval | 否 | 是 | -| 5 | numOfTaskQueueThreads | 否 | 是 | -| 5 | numOfRpcThreads | 否 | 是 | -| 5 | numOfCommitThreads | 是 | 是 | -| 5 | numOfMnodeReadThreads | 否 | 是 | -| 5 | numOfVnodeQueryThreads | 否 | 是 | -| 5 | numOfVnodeStreamThreads | 否 | 是 | -| 5 | numOfVnodeFetchThreads | 否 | 是 | -| 5 | numOfVnodeWriteThreads | 否 | 是 | -| 5 | numOfVnodeSyncThreads | 否 | 是 | -| 5 | numOfQnodeQueryThreads | 否 | 是 | -| 5 | numOfQnodeFetchThreads | 否 | 是 | -| 5 | numOfSnodeSharedThreads | 否 | 是 | -| 5 | numOfSnodeUniqueThreads | 否 | 是 | -| 5 | rpcQueueMemoryAllowed | 否 | 是 | -| 5 | logDir | 是 | 是 | -| 5 | minimalLogDirGB | 是 | 是 | -| 5 | numOfLogLines | 是 | 是 | -| 5 | asyncLog | 是 | 是 | -| 5 | logKeepDays | 是 | 是 | -| 5 | debugFlag | 是 | 是 | -| 5 | tmrDebugFlag | 是 | 是 | -| 5 | uDebugFlag | 是 | 是 | -| 5 | rpcDebugFlag | 是 | 是 | -| 5 | jniDebugFlag | 是 | 是 | -| 5 | qDebugFlag | 是 | 是 | -| 5 | cDebugFlag | 是 | 是 | -| 5 | dDebugFlag | 是 | 是 | -| 5 | vDebugFlag | 是 | 是 | -| 5 | mDebugFlag | 是 | 是 | -| 5 | wDebugFlag | 是 | 是 | -| 5 | sDebugFlag | 是 | 是 | -| 5 | tsdbDebugFlag | 是 | 是 | -| 5 | tqDebugFlag | 否 | 是 | -| 5 | fsDebugFlag | 是 | 是 | -| 5 | udfDebugFlag | 否 | 是 | -| 5 | smaDebugFlag | 否 | 是 | -| 5 | idxDebugFlag | 否 | 是 | -| 5 | tdbDebugFlag | 否 | 是 | -| 5 | metaDebugFlag | 否 | 是 | -| 5 | timezone | 是 | 是 | -| 5 | locale | 是 | 是 | -| 5 | charset | 是 | 是 | -| 5 | udf | 是 | 是 | -| 5 | enableCoreFile | 是 | 是 | -| 5 | arbitrator | 是 | 否 | -| 5 | numOfThreadsPerCore | 是 | 否 | -| 5 | numOfMnodes | 是 | 否 | -| 5 | vnodeBak | 是 | 否 | -| 5 | balance | 是 | 否 | -| 5 | balanceInterval | 是 | 否 | -| 5 | offlineThreshold | 是 | 否 | -| 5 | role | 是 | 否 | -| 5 | dnodeNopLoop | 是 | 否 | -| 5 | keepTimeOffset | 是 | 否 | -| 5 | rpcTimer | 是 | 否 | -| 5 | rpcMaxTime | 是 | 否 | -| 5 | rpcForceTcp | 是 | 否 | -| 5 | tcpConnTimeout | 是 | 否 | -| 5 | syncCheckInterval | 是 | 否 | -| 5 | maxTmrCtrl | 是 | 否 | -| 5 | monitorReplica | 是 | 否 | -| 5 | smlTagNullName | 是 | 否 | -| 5 | keepColumnName | 是 | 否 | -| 5 | ratioOfQueryCores | 是 | 否 | -| 5 | maxStreamCompDelay | 是 | 否 | -| 5 | maxFirstStreamCompDelay | 是 | 否 | -| 5 | retryStreamCompDelay | 是 | 否 | -| 5 | streamCompDelayRatio | 是 | 否 | -| 5 | maxVgroupsPerDb | 是 | 否 | -| 5 | maxTablesPerVnode | 是 | 否 | -| 5 | minTablesPerVnode | 是 | 否 | -| 5 | tableIncStepPerVnode | 是 | 否 | -| 5 | cache | 是 | 否 | -| 5 | blocks | 是 | 否 | -| 5 | days | 是 | 否 | -| 5 | keep | 是 | 否 | -| 5 | minRows | 是 | 否 | -| 5 | maxRows | 是 | 否 | -| 5 | quorum | 是 | 否 | -| 5 | comp | 是 | 否 | -| 5 | walLevel | 是 | 否 | -| 5 | fsync | 是 | 否 | -| 5 | replica | 是 | 否 | -| 5 | partitions | 是 | 否 | -| 5 | quorum | 是 | 否 | -| 5 | update | 是 | 否 | -| 5 | cachelast | 是 | 否 | -| 5 | maxSQLLength | 是 | 否 | -| 5 | maxWildCardsLength | 是 | 否 | -| 5 | maxRegexStringLen | 是 | 否 | -| 5 | maxNumOfOrderedRes | 是 | 否 | -| 5 | maxConnections | 是 | 否 | -| 5 | mnodeEqualVnodeNum | 是 | 否 | -| 5 | http | 是 | 否 | -| 5 | httpEnableRecordSql | 是 | 否 | -| 5 | httpMaxThreads | 是 | 否 | -| 5 | restfulRowLimit | 是 | 否 | -| 5 | httpDbNameMandatory | 是 | 否 | -| 5 | httpKeepAlive | 是 | 否 | -| 5 | enableRecordSql | 是 | 否 | -| 5 | maxBinaryDisplayWidth | 是 | 否 | -| 5 | stream | 是 | 否 | -| 5 | retrieveBlockingModel | 是 | 否 | -| 5 | tsdbMetaCompactRatio | 是 | 否 | -| 5 | defaultJSONStrType | 是 | 否 | -| 5 | walFlushSize | 是 | 否 | -| 5 | keepTimeOffset | 是 | 否 | -| 5 | flowctrl | 是 | 否 | -| 5 | slaveQuery | 是 | 否 | -| 5 | adjustMaster | 是 | 否 | -| 5 | topicBinaryLen | 是 | 否 | -| 5 | telegrafUseFieldNum | 是 | 否 | -| 5 | deadLockKillQuery | 是 | 否 | -| 5 | clientMerge | 是 | 否 | -| 5 | sdbDebugFlag | 是 | 否 | -| 5 | odbcDebugFlag | 是 | 否 | -| 5 | httpDebugFlag | 是 | 否 | -| 5 | monDebugFlag | 是 | 否 | -| 5 | cqDebugFlag | 是 | 否 | -| 5 | shortcutFlag | 是 | 否 | -| 5 | probeSeconds | 是 | 否 | -| 5 | probeKillSeconds | 是 | 否 | -| 5 | probeInterval | 是 | 否 | -| 5 | lossyColumns | 是 | 否 | -| 5 | fPrecision | 是 | 否 | -| 5 | dPrecision | 是 | 否 | -| 5 | maxRange | 是 | 否 | -| 5 | range | 是 | 否 | +| 6 | monitor | 是 | 是 | +| 7 | monitorFqdn | 否 | 是 | +| 8 | monitorPort | 否 | 是 | +| 9 | monitorInterval | 是 | 是 | +| 10 | monitorMaxLogs | 否 | 是 | +| 11 | monitorComp | 否 | 是 | +| 12 | telemetryReporting | 是 | 是 | +| 13 | telemetryInterval | 否 | 是 | +| 14 | telemetryServer | 否 | 是 | +| 15 | telemetryPort | 否 | 是 | +| 16 | queryPolicy | 否 | 是 | +| 17 | querySmaOptimize | 否 | 是 | +| 18 | queryBufferSize | 是 | 是 | +| 19 | maxNumOfDistinctRes | 是 | 是 | +| 20 | minSlidingTime | 是 | 是 | +| 21 | minIntervalTime | 是 | 是 | +| 22 | countAlwaysReturnValue | 是 | 是 | +| 23 | dataDir | 是 | 是 | +| 24 | minimalDataDirGB | 是 | 是 | +| 25 | supportVnodes | 否 | 是 | +| 26 | tempDir | 是 | 是 | +| 27 | minimalTmpDirGB | 是 | 是 | +| 28 | compressMsgSize | 是 | 是 | +| 29 | compressColData | 是 | 是 | +| 30 | smlChildTableName | 是 | 是 | +| 31 | smlTagName | 是 | 是 | +| 32 | smlDataFormat | 否 | 是 | +| 33 | statusInterval | 是 | 是 | +| 34 | shellActivityTimer | 是 | 是 | +| 35 | transPullupInterval | 否 | 是 | +| 36 | mqRebalanceInterval | 否 | 是 | +| 37 | ttlUnit | 否 | 是 | +| 38 | ttlPushInterval | 否 | 是 | +| 39 | numOfTaskQueueThreads | 否 | 是 | +| 40 | numOfRpcThreads | 否 | 是 | +| 41 | numOfCommitThreads | 是 | 是 | +| 42 | numOfMnodeReadThreads | 否 | 是 | +| 43 | numOfVnodeQueryThreads | 否 | 是 | +| 44 | numOfVnodeStreamThreads | 否 | 是 | +| 45 | numOfVnodeFetchThreads | 否 | 是 | +| 46 | numOfVnodeWriteThreads | 否 | 是 | +| 47 | numOfVnodeSyncThreads | 否 | 是 | +| 48 | numOfQnodeQueryThreads | 否 | 是 | +| 49 | numOfQnodeFetchThreads | 否 | 是 | +| 50 | numOfSnodeSharedThreads | 否 | 是 | +| 51 | numOfSnodeUniqueThreads | 否 | 是 | +| 52 | rpcQueueMemoryAllowed | 否 | 是 | +| 53 | logDir | 是 | 是 | +| 54 | minimalLogDirGB | 是 | 是 | +| 55 | numOfLogLines | 是 | 是 | +| 56 | asyncLog | 是 | 是 | +| 57 | logKeepDays | 是 | 是 | +| 58 | debugFlag | 是 | 是 | +| 59 | tmrDebugFlag | 是 | 是 | +| 60 | uDebugFlag | 是 | 是 | +| 61 | rpcDebugFlag | 是 | 是 | +| 62 | jniDebugFlag | 是 | 是 | +| 63 | qDebugFlag | 是 | 是 | +| 64 | cDebugFlag | 是 | 是 | +| 65 | dDebugFlag | 是 | 是 | +| 66 | vDebugFlag | 是 | 是 | +| 67 | mDebugFlag | 是 | 是 | +| 68 | wDebugFlag | 是 | 是 | +| 69 | sDebugFlag | 是 | 是 | +| 70 | tsdbDebugFlag | 是 | 是 | +| 71 | tqDebugFlag | 否 | 是 | +| 72 | fsDebugFlag | 是 | 是 | +| 73 | udfDebugFlag | 否 | 是 | +| 74 | smaDebugFlag | 否 | 是 | +| 75 | idxDebugFlag | 否 | 是 | +| 76 | tdbDebugFlag | 否 | 是 | +| 77 | metaDebugFlag | 否 | 是 | +| 78 | timezone | 是 | 是 | +| 79 | locale | 是 | 是 | +| 80 | charset | 是 | 是 | +| 81 | udf | 是 | 是 | +| 82 | enableCoreFile | 是 | 是 | +| 83 | arbitrator | 是 | 否 | +| 84 | numOfThreadsPerCore | 是 | 否 | +| 85 | numOfMnodes | 是 | 否 | +| 86 | vnodeBak | 是 | 否 | +| 87 | balance | 是 | 否 | +| 88 | balanceInterval | 是 | 否 | +| 89 | offlineThreshold | 是 | 否 | +| 90 | role | 是 | 否 | +| 91 | dnodeNopLoop | 是 | 否 | +| 92 | keepTimeOffset | 是 | 否 | +| 93 | rpcTimer | 是 | 否 | +| 94 | rpcMaxTime | 是 | 否 | +| 95 | rpcForceTcp | 是 | 否 | +| 96 | tcpConnTimeout | 是 | 否 | +| 97 | syncCheckInterval | 是 | 否 | +| 98 | maxTmrCtrl | 是 | 否 | +| 99 | monitorReplica | 是 | 否 | +| 100 | smlTagNullName | 是 | 否 | +| 101 | keepColumnName | 是 | 否 | +| 102 | ratioOfQueryCores | 是 | 否 | +| 103 | maxStreamCompDelay | 是 | 否 | +| 104 | maxFirstStreamCompDelay | 是 | 否 | +| 105 | retryStreamCompDelay | 是 | 否 | +| 106 | streamCompDelayRatio | 是 | 否 | +| 107 | maxVgroupsPerDb | 是 | 否 | +| 108 | maxTablesPerVnode | 是 | 否 | +| 109 | minTablesPerVnode | 是 | 否 | +| 110 | tableIncStepPerVnode | 是 | 否 | +| 111 | cache | 是 | 否 | +| 112 | blocks | 是 | 否 | +| 113 | days | 是 | 否 | +| 114 | keep | 是 | 否 | +| 115 | minRows | 是 | 否 | +| 116 | maxRows | 是 | 否 | +| 117 | quorum | 是 | 否 | +| 118 | comp | 是 | 否 | +| 119 | walLevel | 是 | 否 | +| 120 | fsync | 是 | 否 | +| 121 | replica | 是 | 否 | +| 122 | partitions | 是 | 否 | +| 123 | quorum | 是 | 否 | +| 124 | update | 是 | 否 | +| 125 | cachelast | 是 | 否 | +| 126 | maxSQLLength | 是 | 否 | +| 127 | maxWildCardsLength | 是 | 否 | +| 128 | maxRegexStringLen | 是 | 否 | +| 129 | maxNumOfOrderedRes | 是 | 否 | +| 130 | maxConnections | 是 | 否 | +| 131 | mnodeEqualVnodeNum | 是 | 否 | +| 132 | http | 是 | 否 | +| 133 | httpEnableRecordSql | 是 | 否 | +| 134 | httpMaxThreads | 是 | 否 | +| 135 | restfulRowLimit | 是 | 否 | +| 136 | httpDbNameMandatory | 是 | 否 | +| 137 | httpKeepAlive | 是 | 否 | +| 138 | enableRecordSql | 是 | 否 | +| 139 | maxBinaryDisplayWidth | 是 | 否 | +| 140 | stream | 是 | 否 | +| 141 | retrieveBlockingModel | 是 | 否 | +| 142 | tsdbMetaCompactRatio | 是 | 否 | +| 143 | defaultJSONStrType | 是 | 否 | +| 144 | walFlushSize | 是 | 否 | +| 145 | keepTimeOffset | 是 | 否 | +| 146 | flowctrl | 是 | 否 | +| 147 | slaveQuery | 是 | 否 | +| 148 | adjustMaster | 是 | 否 | +| 149 | topicBinaryLen | 是 | 否 | +| 150 | telegrafUseFieldNum | 是 | 否 | +| 151 | deadLockKillQuery | 是 | 否 | +| 152 | clientMerge | 是 | 否 | +| 153 | sdbDebugFlag | 是 | 否 | +| 154 | odbcDebugFlag | 是 | 否 | +| 155 | httpDebugFlag | 是 | 否 | +| 156 | monDebugFlag | 是 | 否 | +| 157 | cqDebugFlag | 是 | 否 | +| 158 | shortcutFlag | 是 | 否 | +| 159 | probeSeconds | 是 | 否 | +| 160 | probeKillSeconds | 是 | 否 | +| 161 | probeInterval | 是 | 否 | +| 162 | lossyColumns | 是 | 否 | +| 163 | fPrecision | 是 | 否 | +| 164 | dPrecision | 是 | 否 | +| 165 | maxRange | 是 | 否 | +| 166 | range | 是 | 否 | From 6a9efd2acb87eacf2c5f649f41007cdf70e7086f Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang <59301069+xiao-yu-wang@users.noreply.github.com> Date: Tue, 16 Aug 2022 09:58:58 +0800 Subject: [PATCH 060/108] Update 29-changes.md --- docs/zh/12-taos-sql/29-changes.md | 114 ++++++++++++++---------------- 1 file changed, 53 insertions(+), 61 deletions(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index a3fefa59fa..68f3b5cc29 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -7,8 +7,8 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 基本元素变更 | # | **元素** | **差异性** | **说明** | -| - | :-------: | :--------: | :------- | -| 1 | VARCHAR | 新增 | BINARY类型的别名。 +| - | :------- | :--------: | :------- | +| 1 | VARCHAR |
    新增
    | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 | 3 | _ROWTS伪列 | 新增 | 表示时间戳主键。是_C0伪列的别名。 | 4 | INFORMATION_SCHEMA | 新增 | 包含各种SCHEMA定义的系统数据库。 @@ -23,74 +23,66 @@ description: "TDengine 3.0 版本的语法变更说明" 在 TDengine 中,普通表的数据模型中可使用以下数据类型。 | # | **语句** | **差异性** | **说明** | -| - | :-------: | :--------: | :------- | -| 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| - | :------- | :--------: | :------- | +| 1 | ALTER ACCOUNT |
    废除
    | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 | 3 | ALTER DATABASE | 调整 | 废除
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • COMP:3.0版本暂不支持修改。
      新增
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
      调整
    • REPLICA:3.0.0版本暂不支持修改。
    • KEEP:3.0版本新增支持带单位的设置方式。
    | 4 | ALTER STABLE | 调整 | 废除
    • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
      新增
    • RENAME TAG:代替原CHANGE TAG子句。
    • COMMENT:修改超级表的注释。
    | 5 | ALTER TABLE | 调整 | 废除
    • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
      新增
    • RENAME TAG:代替原CHANGE TAG子句。
    • COMMENT:修改表的注释。
    • TTL:修改表的生命周期。
    | 6 | ALTER USER | 调整 | 废除
    • PRIVILEGE:修改用户权限。3.0版本使用GRANT和REVOKE来授予和回收权限。
      新增
    • ENABLE:启用或停用此用户。
    • SYSINFO:修改用户是否可查看系统信息。
    -| 7 | BALANCE VGROUP | 新增 | 集群存储负载均衡。3.0.0版本暂不支持。 -| 8 | COMPACT VNODES | 暂不支持 | 整理指定VNODE的数据。3.0.0版本暂不支持。 -| 9 | CREATE ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 -| 10 | CREATE DATABASE | 调整 | 废除
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHE:VNODE使用的内存块的大小。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • DAYS:数据文件存储数据的时间跨度。3.0版本使用DURATION代替。
    • FSYNC:当 WAL 设置为 2 时,执行 fsync 的周期。3.0版本使用WAL_FSYNC_PERIOD代替。
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • WAL:WAL 级别。3.0版本使用WAL_LEVEL代替。
      新增
    • BUFFER:一个 VNODE 写入内存池大小。
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • DURATION:代替原DAYS参数。新增支持带单位的设置方式。
    • PAGES:一个 VNODE 中元数据存储引擎的缓存页个数。
    • PAGESIZE:一个 VNODE 中元数据存储引擎的页大小。
    • RETENTIONS:表示数据的聚合周期和保存时长。
    • STRICT:表示数据同步的一致性要求。
    • SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表。
    • VGROUPS:数据库中初始VGROUP的数目。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
    • WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。
    • WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。
    • WAL_ROLL_PERIOD:wal文件切换时长。
    • WAL_SEGMENT_SIZE:wal单个文件大小。
      调整
    • KEEP:3.0版本新增支持带单位的设置方式。
    -| 11 | CREATE DNODE | 调整 | 新增主机名和端口号分开指定语法
    • CREATE DNODE dnode_host_name PORT port_val
    -| 12 | CREATE INDEX | 新增 | 创建SMA索引。 -| 13 | CREATE MNODE | 新增 | 创建管理节点。 -| 14 | CREATE QNODE | 新增 | 创建查询节点。 -| 15 | CREATE SNODE | 新增 | 创建流计算节点。3.0.0版本暂不支持。 -| 16 | CREATE STABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。
  • -| 17 | CREATE STREAM | 新增 | 创建流。 -| 18 | CREATE TABLE | 调整 | 新增表参数语法
    • COMMENT:表注释。
    • WATERMARK:指定窗口的关闭时间。
    • MAX_DELAY:用于控制推送计算结果的最大延迟。
    • ROLLUP:指定的聚合函数,提供基于多层级的降采样聚合结果。
    • SMA:提供基于数据块的自定义预计算功能。
    • TTL:用来指定表的生命周期的参数。
    -| 18 | CREATE TOPIC | 新增 | 创建订阅主题。 -| 19 | DROP ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 -| 20 | DROP BNODE | 新增 | 删除backup节点。3.0.0版本暂不支持。 -| 21 | DROP CONSUMER GROUP | 新增 | 删除消费组。 -| 22 | DROP DNODE | 新增 | 删除数据节点。3.0.0版本暂不支持。 -| 23 | DROP INDEX | 新增 | 删除索引。 -| 24 | DROP MNODE | 新增 | 创建管理节点。 -| 25 | DROP QNODE | 新增 | 创建查询节点。 -| 26 | DROP SNODE | 新增 | 删除流计算节点。3.0.0版本暂不支持。 -| 27 | DROP STREAM | 新增 | 删除流。 -| 28 | DROP TABLE | 调整 | 新增批量删除语法 -| 29 | DROP TOPIC | 新增 | 删除订阅主题。 -| 30 | EXPLAIN | 新增 | 查看查询语句的执行计划。 -| 31 | GRANT | 新增 | 授予用户权限。 -| 32 | KILL TRANSACTION | 新增 | 终止管理节点的事务。 -| 33 | KILL STREAM | 废除 | 终止连续查询。3.0版本不再支持连续查询,而是用更通用的流计算来代替。 -| 34 | MERGE VGROUP | 新增 | 合并VGROUP。 -| 35 | REDISTRIBUTE VGROUP | 新增 | 调整VGROUP的数据分布。3.0.0版本暂不支持。 -| 36 | REVOKE | 新增 | 回收用户权限。 -| 37 | SELECT | 调整 |
    • SELECT关闭隐式结果列,输出列均需要由SELECT子句来指定。
    • DISTINCT功能全面支持。2.x版本只支持对标签列去重,并且不可以和JOIN、GROUP BY等子句混用。
    • JOIN功能增强。增加支持:JOIN后WHERE条件中有OR条件;JOIN后的多表运算;JOIN后的多表GROUP BY。
    • FROM后子查询功能大幅增强。不限制子查询嵌套层数;支持子查询和UNION ALL混合使用;移除其他一些之前版本的语法限制。
    • WHERE后可以使用任意的标量表达式。
    • GROUP BY功能增强。支持任意标量表达式及其组合的分组。
    • SESSION可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • STATE_WINDOW可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • ORDER BY功能大幅增强。不再必须和GROUP BY子句一起使用;不再有排序表达式个数的限制;增加支持NULLS FIRST/LAST语法功能;支持符合语法语义的任意表达式。
    • 新增PARTITION BY语法。替代原来的GROUP BY tags。
    -| 38 | SHOW ACCOUNTS | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 -| 39 | SHOW APPS |新增 | 显示接入集群的应用(客户端)信息。 -| 40 | SHOW BNODES |新增 | 显示当前系统中存在的 BNODE 的信息。3.0.0版本暂不支持。 -| 41 | SHOW CONSUMERS | 新增 | 显示当前数据库下所有活跃的消费者的信息。 -| 42 | SHOW DATABASES | 调整 | 3.0版本只显示数据库名。 -| 43 | SHOW FUNCTIONS | 调整 | 3.0版本只显示自定义函数名。 -| 44 | SHOW LICENCE | 新增 | 和SHOW GRANTS 命令等效。 -| 45 | SHOW INDEXES | 新增 | 显示已创建的索引。 -| 46 | SHOW LOCAL VARIABLES | 新增 | 显示当前客户端配置参数的运行值。 -| 47 | SHOW MODULES | 废除 | 显示当前系统中所安装的组件的信息。 -| 48 | SHOW QNODES | 新增 | 显示当前系统中QNODE的信息。 -| 49 | SHOW SNODES | 新增 | 显示当前系统中SNODE的信息。3.0.0版本暂不支持。 -| 50 | SHOW STABLES | 调整 | 3.0版本只显示超级表名。 -| 51 | SHOW STREAMS | 调整 | 2.x版本此命令显示系统中已创建的连续查询的信息。3.0版本废除了连续查询,用流代替。此命令显示已创建的流。 -| 52 | SHOW SUBSCRIPTIONS | 新增 | 显示当前数据库下的所有的订阅关系 -| 53 | SHOW TABLES | 调整 | 3.0版本只显示表名。 -| 54 | SHOW TABLE DISTRIBUTED | 新增 | 显示表的数据分布信息。代替2.x版本中的SELECT _block_dist() FROM { tb_name | stb_name }方式。 -| 55 | SHOW TOPICS | 新增 | 显示当前数据库下的所有订阅主题。 -| 56 | SHOW TRANSACTIONS | 新增 | 显示当前系统中正在执行的事务的信息。 -| 57 | SHOW DNODE VARIABLES | 新增 |显示指定DNODE的配置参数。 -| 58 | SHOW VNODES | 暂不支持 | 显示当前系统中VNODE的信息。3.0.0版本暂不支持。 -| 59 | SPLIT VGROUP | 新增 | 拆分VGROUP。 -| 60 | TRIM DATABASE | 新增 | 删除过期数据,并根据多级存储的配置归整数据。 +| 7 | COMPACT VNODES | 暂不支持 | 整理指定VNODE的数据。3.0.0版本暂不支持。 +| 8 | CREATE ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 9 | CREATE DATABASE | 调整 | 废除
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHE:VNODE使用的内存块的大小。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • DAYS:数据文件存储数据的时间跨度。3.0版本使用DURATION代替。
    • FSYNC:当 WAL 设置为 2 时,执行 fsync 的周期。3.0版本使用WAL_FSYNC_PERIOD代替。
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • WAL:WAL 级别。3.0版本使用WAL_LEVEL代替。
      新增
    • BUFFER:一个 VNODE 写入内存池大小。
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • DURATION:代替原DAYS参数。新增支持带单位的设置方式。
    • PAGES:一个 VNODE 中元数据存储引擎的缓存页个数。
    • PAGESIZE:一个 VNODE 中元数据存储引擎的页大小。
    • RETENTIONS:表示数据的聚合周期和保存时长。
    • STRICT:表示数据同步的一致性要求。
    • SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表。
    • VGROUPS:数据库中初始VGROUP的数目。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
    • WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。
    • WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。
    • WAL_ROLL_PERIOD:wal文件切换时长。
    • WAL_SEGMENT_SIZE:wal单个文件大小。
      调整
    • KEEP:3.0版本新增支持带单位的设置方式。
    +| 10 | CREATE DNODE | 调整 | 新增主机名和端口号分开指定语法
    • CREATE DNODE dnode_host_name PORT port_val
    +| 11 | CREATE INDEX | 新增 | 创建SMA索引。 +| 12 | CREATE MNODE | 新增 | 创建管理节点。 +| 13 | CREATE QNODE | 新增 | 创建查询节点。 +| 14 | CREATE STABLE | 调整 | 新增表参数语法
  • COMMENT:表注释。
  • +| 15 | CREATE STREAM | 新增 | 创建流。 +| 16 | CREATE TABLE | 调整 | 新增表参数语法
    • COMMENT:表注释。
    • WATERMARK:指定窗口的关闭时间。
    • MAX_DELAY:用于控制推送计算结果的最大延迟。
    • ROLLUP:指定的聚合函数,提供基于多层级的降采样聚合结果。
    • SMA:提供基于数据块的自定义预计算功能。
    • TTL:用来指定表的生命周期的参数。
    +| 17 | CREATE TOPIC | 新增 | 创建订阅主题。 +| 18 | DROP ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 19 | DROP CONSUMER GROUP | 新增 | 删除消费组。 +| 20 | DROP INDEX | 新增 | 删除索引。 +| 21 | DROP MNODE | 新增 | 创建管理节点。 +| 22 | DROP QNODE | 新增 | 创建查询节点。 +| 23 | DROP STREAM | 新增 | 删除流。 +| 24 | DROP TABLE | 调整 | 新增批量删除语法 +| 25 | DROP TOPIC | 新增 | 删除订阅主题。 +| 26 | EXPLAIN | 新增 | 查看查询语句的执行计划。 +| 27 | GRANT | 新增 | 授予用户权限。 +| 28 | KILL TRANSACTION | 新增 | 终止管理节点的事务。 +| 29 | KILL STREAM | 废除 | 终止连续查询。3.0版本不再支持连续查询,而是用更通用的流计算来代替。 +| 30 | MERGE VGROUP | 新增 | 合并VGROUP。 +| 31 | REVOKE | 新增 | 回收用户权限。 +| 32 | SELECT | 调整 |
    • SELECT关闭隐式结果列,输出列均需要由SELECT子句来指定。
    • DISTINCT功能全面支持。2.x版本只支持对标签列去重,并且不可以和JOIN、GROUP BY等子句混用。
    • JOIN功能增强。增加支持:JOIN后WHERE条件中有OR条件;JOIN后的多表运算;JOIN后的多表GROUP BY。
    • FROM后子查询功能大幅增强。不限制子查询嵌套层数;支持子查询和UNION ALL混合使用;移除其他一些之前版本的语法限制。
    • WHERE后可以使用任意的标量表达式。
    • GROUP BY功能增强。支持任意标量表达式及其组合的分组。
    • SESSION可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • STATE_WINDOW可以用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。
    • ORDER BY功能大幅增强。不再必须和GROUP BY子句一起使用;不再有排序表达式个数的限制;增加支持NULLS FIRST/LAST语法功能;支持符合语法语义的任意表达式。
    • 新增PARTITION BY语法。替代原来的GROUP BY tags。
    +| 33 | SHOW ACCOUNTS | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 34 | SHOW APPS |新增 | 显示接入集群的应用(客户端)信息。 +| 35 | SHOW CONSUMERS | 新增 | 显示当前数据库下所有活跃的消费者的信息。 +| 36 | SHOW DATABASES | 调整 | 3.0版本只显示数据库名。 +| 37 | SHOW FUNCTIONS | 调整 | 3.0版本只显示自定义函数名。 +| 38 | SHOW LICENCE | 新增 | 和SHOW GRANTS 命令等效。 +| 39 | SHOW INDEXES | 新增 | 显示已创建的索引。 +| 40 | SHOW LOCAL VARIABLES | 新增 | 显示当前客户端配置参数的运行值。 +| 41 | SHOW MODULES | 废除 | 显示当前系统中所安装的组件的信息。 +| 42 | SHOW QNODES | 新增 | 显示当前系统中QNODE的信息。 +| 43 | SHOW STABLES | 调整 | 3.0版本只显示超级表名。 +| 44 | SHOW STREAMS | 调整 | 2.x版本此命令显示系统中已创建的连续查询的信息。3.0版本废除了连续查询,用流代替。此命令显示已创建的流。 +| 45 | SHOW SUBSCRIPTIONS | 新增 | 显示当前数据库下的所有的订阅关系 +| 46 | SHOW TABLES | 调整 | 3.0版本只显示表名。 +| 47 | SHOW TABLE DISTRIBUTED | 新增 | 显示表的数据分布信息。代替2.x版本中的SELECT _block_dist() FROM { tb_name | stb_name }方式。 +| 48 | SHOW TOPICS | 新增 | 显示当前数据库下的所有订阅主题。 +| 49 | SHOW TRANSACTIONS | 新增 | 显示当前系统中正在执行的事务的信息。 +| 50 | SHOW DNODE VARIABLES | 新增 |显示指定DNODE的配置参数。 +| 51 | SHOW VNODES | 暂不支持 | 显示当前系统中VNODE的信息。3.0.0版本暂不支持。 +| 52 | SPLIT VGROUP | 新增 | 拆分VGROUP。 +| 53 | TRIM DATABASE | 新增 | 删除过期数据,并根据多级存储的配置归整数据。 ## SQL 函数变更 | # | **函数** | **差异性** | **说明** | -| - | :-------: | :--------: | :------- | -| 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| - | :------- | :--------: | :------- | +| 1 | TWA |
    增强
    | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 3 | LEASTSQUARES | 增强 | 可以用于超级表了。 | 4 | ELAPSED | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 From 39c3cde285b69b220d1a90047d743455e9bcbe33 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 16 Aug 2022 10:37:17 +0800 Subject: [PATCH 061/108] fix: select constant error --- source/libs/parser/src/parTranslater.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index ef985a3894..1c7446ad6f 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -1399,7 +1399,7 @@ static int32_t translateTimelineFunc(STranslateContext* pCxt, SFunctionNode* pFu "%s function must be used in select statements", pFunc->functionName); } SSelectStmt* pSelect = (SSelectStmt*)pCxt->pCurrStmt; - if (QUERY_NODE_TEMP_TABLE == nodeType(pSelect->pFromTable) && + if (NULL != pSelect->pFromTable && QUERY_NODE_TEMP_TABLE == nodeType(pSelect->pFromTable) && !isTimeLineQuery(((STempTableNode*)pSelect->pFromTable)->pSubquery)) { return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_NOT_ALLOWED_FUNC, "%s function requires valid time series input", pFunc->functionName); @@ -2037,16 +2037,13 @@ static int32_t setVnodeSysTableVgroupList(STranslateContext* pCxt, SName* pName, code = getDBVgInfoImpl(pCxt, pName, &vgroupList); } - if (TSDB_CODE_SUCCESS == code && - 0 == strcmp(pRealTable->table.dbName, TSDB_INFORMATION_SCHEMA_DB) && - 0 == strcmp(pRealTable->table.tableName, TSDB_INS_TABLE_TAGS) && - isSelectStmt(pCxt->pCurrStmt) && + if (TSDB_CODE_SUCCESS == code && 0 == strcmp(pRealTable->table.dbName, TSDB_INFORMATION_SCHEMA_DB) && + 0 == strcmp(pRealTable->table.tableName, TSDB_INS_TABLE_TAGS) && isSelectStmt(pCxt->pCurrStmt) && 0 == taosArrayGetSize(vgroupList)) { ((SSelectStmt*)pCxt->pCurrStmt)->isEmptyResult = true; } - if (TSDB_CODE_SUCCESS == code && - 0 == strcmp(pRealTable->table.dbName, TSDB_INFORMATION_SCHEMA_DB) && + if (TSDB_CODE_SUCCESS == code && 0 == strcmp(pRealTable->table.dbName, TSDB_INFORMATION_SCHEMA_DB) && 0 == strcmp(pRealTable->table.tableName, TSDB_INS_TABLE_TABLES)) { code = addMnodeToVgroupList(&pCxt->pParseCxt->mgmtEpSet, &vgroupList); } From 9a9afc0666548585123a7ed73058e0ff8eaad59c Mon Sep 17 00:00:00 2001 From: zhaoyanggh Date: Tue, 16 Aug 2022 12:06:35 +0800 Subject: [PATCH 062/108] docs: refine python tmq doc --- docs/examples/python/tmq_example.py | 63 +---------- docs/zh/07-develop/07-tmq.mdx | 157 ++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+), 58 deletions(-) diff --git a/docs/examples/python/tmq_example.py b/docs/examples/python/tmq_example.py index 1f6da3d1b6..cee036454e 100644 --- a/docs/examples/python/tmq_example.py +++ b/docs/examples/python/tmq_example.py @@ -1,59 +1,6 @@ import taos -from taos.tmq import * - -conn = taos.connect() - -# create database -conn.execute("drop database if exists py_tmq") -conn.execute("create database if not exists py_tmq vgroups 2") - -# create table and stables -conn.select_db("py_tmq") -conn.execute("create stable if not exists stb1 (ts timestamp, c1 int, c2 float, c3 binary(10)) tags(t1 int)") -conn.execute("create table if not exists tb1 using stb1 tags(1)") -conn.execute("create table if not exists tb2 using stb1 tags(2)") -conn.execute("create table if not exists tb3 using stb1 tags(3)") - -# create topic -conn.execute("drop topic if exists topic_ctb_column") -conn.execute("create topic if not exists topic_ctb_column as select ts, c1, c2, c3 from stb1") - -# set consumer configure options -conf = TaosTmqConf() -conf.set("group.id", "tg2") -conf.set("td.connect.user", "root") -conf.set("td.connect.pass", "taosdata") -conf.set("enable.auto.commit", "true") -conf.set("msg.with.table.name", "true") - -def tmq_commit_cb_print(tmq, resp, offset, param=None): - print(f"commit: {resp}, tmq: {tmq}, offset: {offset}, param: {param}") - -conf.set_auto_commit_cb(tmq_commit_cb_print, None) - -# build consumer -tmq = conf.new_consumer() - -# build topic list -topic_list = TaosTmqList() -topic_list.append("topic_ctb_column") - -# subscribe consumer -tmq.subscribe(topic_list) - -# check subscriptions -sub_list = tmq.subscription() -print("subscribed topics: ",sub_list) - -# start subscribe -while 1: - res = tmq.poll(1000) - if res: - topic = res.get_topic_name() - vg = res.get_vgroup_id() - db = res.get_db_name() - print(f"topic: {topic}\nvgroup id: {vg}\ndb: {db}") - for row in res: - print(row) - tb = res.get_table_name() - print(f"from table: {tb}") +from taos.tmq import TaosConsumer +consumer = TaosConsumer('topic_ctb_column', group_id='vg2') +for msg in consumer: + for row in msg: + print(row) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index f36f76fd85..23574e7478 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -88,6 +88,110 @@ void close() throws SQLException; ```
    + +
    + +```python +class TaosConsumer(): + DEFAULT_CONFIG = { + 'group.id', + 'client.id', + 'enable.auto.commit', + 'auto.commit.interval.ms', + 'auto.offset.reset', + 'msg.with.table.name', + 'experimental.snapshot.enable', + 'enable.heartbeat.background', + 'experimental.snapshot.batch.size', + 'td.connect.ip', + 'td.connect.user', + 'td.connect.pass', + 'td.connect.port', + 'td.connect.db', + 'timeout' + } + + def __init__(self, *topics, **configs): + self._closed = True + self._conf = None + self._list = None + self._tmq = None + + keys = list(configs.keys()) + for k in keys: + configs.update({k.replace('_','.'): configs.pop(k)}) + + extra_configs = set(configs).difference(self.DEFAULT_CONFIG) + if extra_configs: + raise TmqError("Unrecognized configs: %s" % (extra_configs,)) + + self._conf = tmq_conf_new() + self._list = tmq_list_new() + + # set poll timeout + if 'timeout' in configs: + self._timeout = configs['timeout'] + del configs['timeout'] + else: + self._timeout = 0 + + # check if group id is set + + if 'group.id' not in configs: + raise TmqError("missing group.id in consumer config setting") + + for key, value in configs.items(): + tmq_conf_set(self._conf, key, value) + + self._tmq = tmq_consumer_new(self._conf) + + if not topics: + raise TmqError("Unset topic for Consumer") + + for topic in topics: + tmq_list_append(self._list, topic) + + tmq_subscribe(self._tmq, self._list) + + + def __iter__(self): + return self + + def __next__(self): + if not self._tmq: + raise StopIteration('TaosConsumer closed') + return next(self.sync_next()) + + def sync_next(self): + while 1: + res = tmq_consumer_poll(self._tmq, self._timeout) + if res: + break + yield TaosResult(res) + + def subscription(self): + if self._tmq is None: + return None + return tmq_subscription(self._tmq) + + def unsubscribe(self): + tmq_unsubscribe(self._tmq) + + def close(self): + if self._tmq: + tmq_consumer_close(self._tmq) + self._tmq = None + + def __del__(self): + if self._conf: + tmq_conf_destroy(self._conf) + if self._list: + tmq_list_destroy(self._list) + if self._tmq: + tmq_consumer_close(self._tmq) +``` + +
    ## 写入数据 @@ -230,6 +334,27 @@ public class MetersDeserializer extends ReferenceDeserializer { ```
    + +
    + + +| 参数名称 | 类型 | 参数说明 | 备注 | +| :----------------------------: | :-----: | -------------------------------------------------------- | ------------------------------------------- | +| `td_connect_ip` | string | 用于创建连接,同 `taos_connect` | | +| `td_connect_user` | string | 用于创建连接,同 `taos_connect` | | +| `td_connect_pass` | string | 用于创建连接,同 `taos_connect` | | +| `td_connect_port` | string | 用于创建连接,同 `taos_connect` | | +| `group_id` | string | 消费组 ID,同一消费组共享消费进度 | **必填项**。最大长度:192。 | +| `client_id` | string | 客户端 ID | 最大长度:192。 | +| `auto_offset_reset` | string | 消费组订阅的初始位置 | 可选:`earliest`, `latest`, `none`(default) | +| `enable_auto_commit` | string | 启用自动提交 | 合法值:`true`, `false`。 | +| `auto_commit_interval_ms` | string | 以毫秒为单位的自动提交时间间隔 | | +| `enable_heartbeat_background` | string | 启用后台心跳,启用后即使长时间不 poll 消息也不会造成离线 | 合法值:`true`, `false` | +| `experimental_snapshot_enable` | string | 从 WAL 开始消费,还是从 TSBS 开始消费 | 合法值:`true`, `false` | +| `msg_with_table_name` | string | 是否允许从消息中解析表名 | 合法值:`true`, `false` | + + +
    上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 @@ -262,6 +387,14 @@ consumer.subscribe(topics);
    +
    + +```python +consumer = TaosConsumer('topic_ctb_column', group_id='vg2') +``` + + +
    ## 消费 @@ -294,6 +427,17 @@ while(running){ ```
    + + + +```python +for msg in consumer: + for row in msg: + print(row) +``` + + +
    ## 结束消费 @@ -322,6 +466,19 @@ consumer.unsubscribe(); consumer.close(); ``` + + + + + +```python +/* 取消订阅 */ +consumer.unsubscribe(); + +/* 关闭消费 */ +consumer.close(); +``` + From 316584a0b1f299bd4e9b828d407dc47493660dd4 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 16 Aug 2022 12:42:28 +0800 Subject: [PATCH 063/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 949d54f77b..5ede3c7d31 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -6,7 +6,7 @@ title: 通过 Docker 快速体验 TDengine 如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ::: -本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。 +本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉Docker, 请使用[安装包的方式快速体验](../../get-started/package/)。 ## 启动 TDengine From 97d4ebe85cc3332b11cefbbb51fc2c79d9f295ed Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:03:44 +0800 Subject: [PATCH 064/108] fix: syntax error --- docs/zh/12-taos-sql/29-changes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 68f3b5cc29..f6a78d3277 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -8,7 +8,7 @@ description: "TDengine 3.0 版本的语法变更说明" | # | **元素** | **差异性** | **说明** | | - | :------- | :--------: | :------- | -| 1 | VARCHAR |
    新增
    | BINARY类型的别名。 +| 1 | VARCHAR | 新增 | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 | 3 | _ROWTS伪列 | 新增 | 表示时间戳主键。是_C0伪列的别名。 | 4 | INFORMATION_SCHEMA | 新增 | 包含各种SCHEMA定义的系统数据库。 @@ -24,7 +24,7 @@ description: "TDengine 3.0 版本的语法变更说明" | # | **语句** | **差异性** | **说明** | | - | :------- | :--------: | :------- | -| 1 | ALTER ACCOUNT |
    废除
    | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 +| 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 | 3 | ALTER DATABASE | 调整 | 废除
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • COMP:3.0版本暂不支持修改。
      新增
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
      调整
    • REPLICA:3.0.0版本暂不支持修改。
    • KEEP:3.0版本新增支持带单位的设置方式。
    | 4 | ALTER STABLE | 调整 | 废除
    • CHANGE TAG:修改标签列的名称。3.0版本使用RENAME TAG代替。
      新增
    • RENAME TAG:代替原CHANGE TAG子句。
    • COMMENT:修改超级表的注释。
    @@ -82,7 +82,7 @@ description: "TDengine 3.0 版本的语法变更说明" | # | **函数** | **差异性** | **说明** | | - | :------- | :--------: | :------- | -| 1 | TWA |
    增强
    | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 +| 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 3 | LEASTSQUARES | 增强 | 可以用于超级表了。 | 4 | ELAPSED | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 From 291df97c8e19eb5373975ac9bee56483d041f0d7 Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 16 Aug 2022 13:04:53 +0800 Subject: [PATCH 065/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 0c178e5962..f158cf2418 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -6,12 +6,7 @@ title: 使用安装包立即开始 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -:::info -如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. - -::: - -在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。 +在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/package/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ## 安装 From 552a63236e03c4d3661f81eeb510a213c1ce851f Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:10:57 +0800 Subject: [PATCH 066/108] style: format --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 5ede3c7d31..04ecf56541 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -6,7 +6,7 @@ title: 通过 Docker 快速体验 TDengine 如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ::: -本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉Docker, 请使用[安装包的方式快速体验](../../get-started/package/)。 +本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。 ## 启动 TDengine From a3ddbd656cb9d8d6e83986a6db7151ee11a305af Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 16 Aug 2022 13:16:35 +0800 Subject: [PATCH 067/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index f158cf2418..846cd9e9cd 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -6,7 +6,7 @@ title: 使用安装包立即开始 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; -在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/package/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. +在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ## 安装 From 8b85af754c3d64d53701f92bba3b5169367b7f6c Mon Sep 17 00:00:00 2001 From: Jeff Tao Date: Tue, 16 Aug 2022 13:17:37 +0800 Subject: [PATCH 068/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 04ecf56541..4895653d8d 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -1,12 +1,8 @@ --- sidebar_label: Docker title: 通过 Docker 快速体验 TDengine ---- -:::info -如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. -::: -本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。 +本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ## 启动 TDengine From f1775126b4d6b2c8df7b5d444bf2056f25100835 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:31:47 +0800 Subject: [PATCH 069/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 4895653d8d..34ddd90e2b 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -1,6 +1,7 @@ --- sidebar_label: Docker title: 通过 Docker 快速体验 TDengine +--- 本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. From 2112887fa4c499ef288d91f8e664541e2009eb38 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:35:03 +0800 Subject: [PATCH 070/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 34ddd90e2b..f0f09d4c7e 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -3,7 +3,7 @@ sidebar_label: Docker title: 通过 Docker 快速体验 TDengine --- -本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. +本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ## 启动 TDengine From 9c7077737747f5923a89fbaba4ef9fd6a6f0890f Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:35:03 +0800 Subject: [PATCH 071/108] Update 01-docker.md --- docs/zh/05-get-started/01-docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/01-docker.md b/docs/zh/05-get-started/01-docker.md index 34ddd90e2b..f0f09d4c7e 100644 --- a/docs/zh/05-get-started/01-docker.md +++ b/docs/zh/05-get-started/01-docker.md @@ -3,7 +3,7 @@ sidebar_label: Docker title: 通过 Docker 快速体验 TDengine --- -本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考[TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. +本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用[安装包的方式快速体验](../../get-started/package/)。如果您希望为 TDengine 贡献代码或对内部技术实现感兴趣,请参考 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. ## 启动 TDengine From 6853f519580201974fdc6fed15bc678624d6f39c Mon Sep 17 00:00:00 2001 From: huolibo Date: Tue, 16 Aug 2022 13:50:39 +0800 Subject: [PATCH 072/108] docs(driver): modify 3.0 version --- docs/zh/14-reference/03-connector/java.mdx | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/docs/zh/14-reference/03-connector/java.mdx b/docs/zh/14-reference/03-connector/java.mdx index c0b83e7d4a..6a78902b1e 100644 --- a/docs/zh/14-reference/03-connector/java.mdx +++ b/docs/zh/14-reference/03-connector/java.mdx @@ -93,12 +93,12 @@ Maven 项目中,在 pom.xml 中添加以下依赖: 可以通过下载 TDengine 的源码,自己编译最新版本的 Java connector ```shell -git clone https://github.com/taosdata/taos-connector-jdbc.git --branch 2.0 +git clone https://github.com/taosdata/taos-connector-jdbc.git cd taos-connector-jdbc mvn clean install -Dmaven.test.skip=true ``` -编译后,在 target 目录下会产生 taos-jdbcdriver-2.0.XX-dist.jar 的 jar 包,并自动将编译的 jar 文件放在本地的 Maven 仓库中。 +编译后,在 target 目录下会产生 taos-jdbcdriver-3.0.*-dist.jar 的 jar 包,并自动将编译的 jar 文件放在本地的 Maven 仓库中。 @@ -198,7 +198,7 @@ url 中的配置参数如下: - user:登录 TDengine 用户名,默认值 'root'。 - password:用户登录密码,默认值 'taosdata'。 -- batchfetch: true:在执行查询时批量拉取结果集;false:逐行拉取结果集。默认值为:false。逐行拉取结果集使用 HTTP 方式进行数据传输。从 taos-jdbcdriver-2.0.38 开始,JDBC REST 连接增加批量拉取数据功能。taos-jdbcdriver 与 TDengine 之间通过 WebSocket 连接进行数据传输。相较于 HTTP,WebSocket 可以使 JDBC REST 连接支持大数据量查询,并提升查询性能。 +- batchfetch: true:在执行查询时批量拉取结果集;false:逐行拉取结果集。默认值为:false。逐行拉取结果集使用 HTTP 方式进行数据传输。JDBC REST 连接支持批量拉取数据功能。taos-jdbcdriver 与 TDengine 之间通过 WebSocket 连接进行数据传输。相较于 HTTP,WebSocket 可以使 JDBC REST 连接支持大数据量查询,并提升查询性能。 - charset: 当开启批量拉取数据时,指定解析字符串数据的字符集。 - batchErrorIgnore:true:在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 SQL 了。false:不再执行失败 SQL 后的任何语句。默认值为:false。 - httpConnectTimeout: 连接超时时间,单位 ms, 默认值为 5000。 @@ -216,7 +216,7 @@ url 中的配置参数如下: INSERT INTO test.t1 USING test.weather (ts, temperature) TAGS('California.SanFrancisco') VALUES(now, 24.6); ``` -- 从 taos-jdbcdriver-2.0.36 开始,如果在 url 中指定了 dbname,那么,JDBC REST 连接会默认使用/rest/sql/dbname 作为 restful 请求的 url,在 SQL 中不需要指定 dbname。例如:url 为 jdbc:TAOS-RS://127.0.0.1:6041/test,那么,可以执行 sql:insert into t1 using weather(ts, temperature) tags('California.SanFrancisco') values(now, 24.6); +- 如果在 url 中指定了 dbname,那么,JDBC REST 连接会默认使用/rest/sql/dbname 作为 restful 请求的 url,在 SQL 中不需要指定 dbname。例如:url 为 jdbc:TAOS-RS://127.0.0.1:6041/test,那么,可以执行 sql:insert into t1 using weather(ts, temperature) tags('California.SanFrancisco') values(now, 24.6); ::: @@ -230,7 +230,7 @@ INSERT INTO test.t1 USING test.weather (ts, temperature) TAGS('California.SanFra **注意**: - 应用中设置的 client parameter 为进程级别的,即如果要更新 client 的参数,需要重启应用。这是因为 client parameter 是全局参数,仅在应用程序的第一次设置生效。 -- 以下示例代码基于 taos-jdbcdriver-2.0.36。 +- 以下示例代码基于 taos-jdbcdriver-3.0.0。 ```java public Connection getConn() throws Exception{ @@ -367,7 +367,7 @@ TDengine 的 JDBC 原生连接实现大幅改进了参数绑定方式对数据 **注意**: - JDBC REST 连接目前不支持参数绑定 -- 以下示例代码基于 taos-jdbcdriver-2.0.36 +- 以下示例代码基于 taos-jdbcdriver-3.0.0 - binary 类型数据需要调用 setString 方法,nchar 类型数据需要调用 setNString 方法 - setString 和 setNString 都要求用户在 size 参数里声明表定义中对应列的列宽 @@ -635,7 +635,7 @@ TDengine 支持无模式写入功能。无模式写入兼容 InfluxDB 的 行协 **注意**: - JDBC REST 连接目前不支持无模式写入 -- 以下示例代码基于 taos-jdbcdriver-2.0.36 +- 以下示例代码基于 taos-jdbcdriver-3.0.0 ```java public class SchemalessInsertTest { @@ -666,7 +666,7 @@ public class SchemalessInsertTest { } ``` -### 订阅 +### 数据订阅 TDengine Java 连接器支持订阅功能,应用 API 如下: @@ -717,9 +717,14 @@ while(true) { #### 关闭订阅 ```java +// 取消订阅 +consumer.unsubscribe(); +// 关闭消费 consumer.close() ``` +详情请参考:[数据订阅](../../../develop/tmq) + ### 使用示例如下: ```java @@ -734,7 +739,7 @@ public abstract class ConsumerLoop { config.setProperty("msg.with.table.name", "true"); config.setProperty("enable.auto.commit", "true"); config.setProperty("group.id", "group1"); - config.setProperty("value.deserializer", "com.taosdata.jdbc.tmq.ConsumerTest.ResultDeserializer"); + config.setProperty("value.deserializer", "com.taosdata.jdbc.tmq.ConsumerTest.ConsumerLoop$ResultDeserializer"); this.consumer = new TaosConsumer<>(config); this.topics = Collections.singletonList("topic_speed"); @@ -754,8 +759,9 @@ public abstract class ConsumerLoop { process(record); } } + consumer.unsubscribe(); } finally { - consumer.close(); + consumer.close(); shutdownLatch.countDown(); } } @@ -875,6 +881,7 @@ public static void main(String[] args) throws Exception { | taos-jdbcdriver 版本 | 主要变化 | | :------------------: | :----------------------------: | +| 3.0.0 | 支持 TDengine 3.0 | | 2.0.39 - 2.0.40 | 增加 REST 连接/请求 超时设置 | | 2.0.38 | JDBC REST 连接增加批量拉取功能 | | 2.0.37 | 增加对 json tag 支持 | From 8d651d37fcca03922ba5c1375709ac3fd0a1ab1a Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:56:54 +0800 Subject: [PATCH 073/108] style: format docs --- docs/zh/12-taos-sql/29-changes.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index f6a78d3277..896f1ad5de 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -6,8 +6,8 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 基本元素变更 -| # | **元素** | **差异性** | **说明** | -| - | :------- | :--------: | :------- | +| # | **元素** | ****
    差异性
    **** | **说明** | +| - | :------- | :-------- | :------- | | 1 | VARCHAR | 新增 | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 | 3 | _ROWTS伪列 | 新增 | 表示时间戳主键。是_C0伪列的别名。 @@ -22,8 +22,8 @@ description: "TDengine 3.0 版本的语法变更说明" 在 TDengine 中,普通表的数据模型中可使用以下数据类型。 -| # | **语句** | **差异性** | **说明** | -| - | :------- | :--------: | :------- | +| # | **语句** | **
    差异性
    ** | **说明** | +| - | :------- | :-------- | :------- | | 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 | 3 | ALTER DATABASE | 调整 | 废除
    • QUORUM:写入需要的副本确认数。3.0版本使用STRICT来指定强一致还是弱一致。3.0.0版本STRICT暂不支持修改。
    • BLOCKS:VNODE使用的内存块数。3.0版本使用BUFFER来表示VNODE写入内存池的大小。
    • UPDATE:更新操作的支持模式。3.0版本所有数据库都支持部分列更新。
    • CACHELAST:缓存最新一行数据的模式。3.0版本用CACHEMODEL代替。
    • COMP:3.0版本暂不支持修改。
      新增
    • CACHEMODEL:表示是否在内存中缓存子表的最近数据。
    • CACHESIZE:表示缓存子表最近数据的内存大小。
    • WAL_FSYNC_PERIOD:代替原FSYNC参数。
    • WAL_LEVEL:代替原WAL参数。
      调整
    • REPLICA:3.0.0版本暂不支持修改。
    • KEEP:3.0版本新增支持带单位的设置方式。
    @@ -80,8 +80,8 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 函数变更 -| # | **函数** | **差异性** | **说明** | -| - | :------- | :--------: | :------- | +| # | **函数** | **
    差异性
    ** | **说明** | +| - | :------- | :-------- | :------- | | 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 3 | LEASTSQUARES | 增强 | 可以用于超级表了。 From 65c08530d568d91b6a279f689bf4356003f7ccff Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 13:57:37 +0800 Subject: [PATCH 074/108] Update 29-changes.md --- docs/zh/12-taos-sql/29-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 896f1ad5de..145af5cc73 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -80,7 +80,7 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 函数变更 -| # | **函数** | **
    差异性
    ** | **说明** | +| # | **函数** | **
    差异性
    ** | **说明** | | - | :------- | :-------- | :------- | | 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 From 2a8114c1726db1bee043b91240dc93c928e21a9e Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 14:01:50 +0800 Subject: [PATCH 075/108] Update 29-changes.md --- docs/zh/12-taos-sql/29-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 145af5cc73..63a998b4cd 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -6,7 +6,7 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 基本元素变更 -| # | **元素** | ****
    差异性
    **** | **说明** | +| # | **元素** | **
    差异性
    ** | **说明** | | - | :------- | :-------- | :------- | | 1 | VARCHAR | 新增 | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 From 393ee81e327c93edb7f831dc08357afb6e9b880e Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 14:02:45 +0800 Subject: [PATCH 076/108] Update 29-changes.md --- docs/zh/12-taos-sql/29-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 63a998b4cd..77544c214d 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -6,7 +6,7 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 基本元素变更 -| # | **元素** | **
    差异性
    ** | **说明** | +| # | **元素** |
    **差异性**
    | **说明** | | - | :------- | :-------- | :------- | | 1 | VARCHAR | 新增 | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 From 7f8b6fbdf623c6b9f639cf11e7ffdaefd6dfeffe Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 14:07:16 +0800 Subject: [PATCH 077/108] Update 29-changes.md --- docs/zh/12-taos-sql/29-changes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh/12-taos-sql/29-changes.md b/docs/zh/12-taos-sql/29-changes.md index 77544c214d..d653c59a5c 100644 --- a/docs/zh/12-taos-sql/29-changes.md +++ b/docs/zh/12-taos-sql/29-changes.md @@ -6,7 +6,7 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 基本元素变更 -| # | **元素** |
    **差异性**
    | **说明** | +| # | **元素** | **
    差异性
    ** | **说明** | | - | :------- | :-------- | :------- | | 1 | VARCHAR | 新增 | BINARY类型的别名。 | 2 | TIMESTAMP字面量 | 新增 | 新增支持 TIMESTAMP 'timestamp format' 语法。 @@ -22,7 +22,7 @@ description: "TDengine 3.0 版本的语法变更说明" 在 TDengine 中,普通表的数据模型中可使用以下数据类型。 -| # | **语句** | **
    差异性
    ** | **说明** | +| # | **语句** | **
    差异性
    ** | **说明** | | - | :------- | :-------- | :------- | | 1 | ALTER ACCOUNT | 废除 | 2.x中为企业版功能,3.0不再支持。语法暂时保留了,执行报“This statement is no longer supported”错误。 | 2 | ALTER ALL DNODES | 新增 | 修改所有DNODE的参数。 @@ -80,7 +80,7 @@ description: "TDengine 3.0 版本的语法变更说明" ## SQL 函数变更 -| # | **函数** | **
    差异性
    ** | **说明** | +| # | **函数** | **
    差异性
    ** | **说明** | | - | :------- | :-------- | :------- | | 1 | TWA | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 | 2 | IRATE | 增强 | 可以直接用于超级表了。没有PARTITION BY时,超级表的数据会被合并成一条时间线。 From 4b85d81d373ad91d497127b65292049175d79b10 Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Tue, 16 Aug 2022 14:31:42 +0800 Subject: [PATCH 078/108] docs(TMQ): improve tmq document --- docs/zh/07-develop/07-tmq.mdx | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index f36f76fd85..aa599c2173 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -87,6 +87,25 @@ void commitSync() throws SQLException; void close() throws SQLException; ``` + + + +```go +func NewConsumer(conf *Config) (*Consumer, error) + +func (c *Consumer) Close() error + +func (c *Consumer) Commit(ctx context.Context, message unsafe.Pointer) error + +func (c *Consumer) FreeMessage(message unsafe.Pointer) + +func (c *Consumer) Poll(timeout time.Duration) (*Result, error) + +func (c *Consumer) Subscribe(topics []string) error + +func (c *Consumer) Unsubscribe() error +``` + @@ -229,6 +248,56 @@ public class MetersDeserializer extends ReferenceDeserializer { } ``` + + + +```go +config := tmq.NewConfig() +defer config.Destroy() +err = config.SetGroupID("test") +if err != nil { + panic(err) +} +err = config.SetAutoOffsetReset("earliest") +if err != nil { + panic(err) +} +err = config.SetConnectIP("127.0.0.1") +if err != nil { + panic(err) +} +err = config.SetConnectUser("root") +if err != nil { + panic(err) +} +err = config.SetConnectPass("taosdata") +if err != nil { + panic(err) +} +err = config.SetConnectPort("6030") +if err != nil { + panic(err) +} +err = config.SetMsgWithTableName(true) +if err != nil { + panic(err) +} +err = config.EnableHeartBeat() +if err != nil { + panic(err) +} +err = config.EnableAutoCommit(func(result *wrapper.TMQCommitCallbackResult) { + if result.ErrCode != 0 { + errStr := wrapper.TMQErr2Str(result.ErrCode) + err := errors.NewError(int(result.ErrCode), errStr) + panic(err) + } +}) +if err != nil { + panic(err) +} +``` + @@ -260,6 +329,20 @@ topics.add("tmq_topic"); consumer.subscribe(topics); ``` + + + +```go +consumer, err := tmq.NewConsumer(config) +if err != nil { + panic(err) +} +err = consumer.Subscribe([]string{"example_tmq_topic"}) +if err != nil { + panic(err) +} +``` + @@ -293,6 +376,21 @@ while(running){ } ``` + + + +```go +for { + result, err := consumer.Poll(time.Second) + if err != nil { + panic(err) + } + fmt.Println(result) + consumer.Commit(context.Background(), result.Message) + consumer.FreeMessage(result.Message) +} +``` + @@ -322,6 +420,13 @@ consumer.unsubscribe(); consumer.close(); ``` + + + +```go +consumer.Close() +``` + From a325c5e7f2b5cf373cc5c265e2ca3d332b4fe568 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 14:58:37 +0800 Subject: [PATCH 079/108] feat: add download --- docs/zh/05-get-started/03-package.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 846cd9e9cd..4a5329323d 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -5,6 +5,7 @@ title: 使用安装包立即开始 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; +import PkgListV3 from "/components/PkgListV3"; 在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. @@ -64,6 +65,8 @@ sudo rpm -ivh TDengine-server-3.0.0.0-Linux-x64.rpm + + 1. 从 [发布历史页面](../../releases) 下载获得 tar.gz 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.tar.gz; 2. 进入到 TDengine-server-3.0.0.0-Linux-x64.tar.gz 安装包所在目录,先解压文件后,进入子目录,执行其中的 install.sh 安装脚本: @@ -85,6 +88,8 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 + + 1. 从 [发布历史页面](../../releases) 下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; 2. 运行 TDengine-server-3.0.0.0-Windows-x64.exe 来安装 TDengine。 From e5194f5f53cc44d45ad75c07b8627a8db427a990 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:03:17 +0800 Subject: [PATCH 080/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 4a5329323d..59991cc0c5 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -89,7 +89,7 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 - + 1. 从 [发布历史页面](../../releases) 下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; 2. 运行 TDengine-server-3.0.0.0-Windows-x64.exe 来安装 TDengine。 From e4f9a41f4d4f0d0bd0d55d61be1bf6ed031334fa Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Tue, 16 Aug 2022 15:03:20 +0800 Subject: [PATCH 081/108] fix(query): fix sample with partition by invalid pageId cause crash issue TD-17499 --- source/libs/function/src/builtinsimpl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index de72c32fa1..cbf81f1d0d 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -4918,6 +4918,16 @@ int32_t mavgFunction(SqlFunctionCtx* pCtx) { return numOfElems; } +static SSampleInfo* getSampleOutputInfo(SqlFunctionCtx* pCtx) { + SResultRowEntryInfo* pResInfo = GET_RES_INFO(pCtx); + SSampleInfo* pInfo = GET_ROWCELL_INTERBUF(pResInfo); + + pInfo->data = (char*)pInfo + sizeof(SSampleInfo); + pInfo->tuplePos = (STuplePos*)((char*)pInfo + sizeof(SSampleInfo) + pInfo->samples * pInfo->colBytes); + + return pInfo; +} + bool getSampleFuncEnv(SFunctionNode* pFunc, SFuncExecEnv* pEnv) { SColumnNode* pCol = (SColumnNode*)nodesListGetNode(pFunc->pParameterList, 0); SValueNode* pVal = (SValueNode*)nodesListGetNode(pFunc->pParameterList, 1); @@ -4972,7 +4982,7 @@ static void doReservoirSample(SqlFunctionCtx* pCtx, SSampleInfo* pInfo, char* da int32_t sampleFunction(SqlFunctionCtx* pCtx) { SResultRowEntryInfo* pResInfo = GET_RES_INFO(pCtx); - SSampleInfo* pInfo = GET_ROWCELL_INTERBUF(pResInfo); + SSampleInfo* pInfo = getSampleOutputInfo(pCtx); SInputColumnInfoData* pInput = &pCtx->input; @@ -4998,7 +5008,7 @@ int32_t sampleFunction(SqlFunctionCtx* pCtx) { int32_t sampleFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { SResultRowEntryInfo* pEntryInfo = GET_RES_INFO(pCtx); - SSampleInfo* pInfo = GET_ROWCELL_INTERBUF(pEntryInfo); + SSampleInfo* pInfo = getSampleOutputInfo(pCtx); pEntryInfo->complete = true; int32_t slotId = pCtx->pExpr->base.resSchema.slotId; From f7a2d8f63c234de88285a3d1fc562a11ed471e6d Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:05:16 +0800 Subject: [PATCH 082/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 59991cc0c5..08b23b5025 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -89,7 +89,7 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 - + 1. 从 [发布历史页面](../../releases) 下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; 2. 运行 TDengine-server-3.0.0.0-Windows-x64.exe 来安装 TDengine。 From 1b86bd111692052dec19e4c57c0af058ba4fa8d5 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:10:07 +0800 Subject: [PATCH 083/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 08b23b5025..69424a2d18 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -65,9 +65,8 @@ sudo rpm -ivh TDengine-server-3.0.0.0-Linux-x64.rpm +1. 从列表中下载获得 tar.gz 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.tar.gz; - -1. 从 [发布历史页面](../../releases) 下载获得 tar.gz 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.tar.gz; 2. 进入到 TDengine-server-3.0.0.0-Linux-x64.tar.gz 安装包所在目录,先解压文件后,进入子目录,执行其中的 install.sh 安装脚本: ```bash @@ -81,6 +80,9 @@ sudo ./install.sh ``` :::info + +下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) + install.sh 安装脚本在执行过程中,会通过命令行交互界面询问一些配置信息。如果希望采取无交互安装方式,那么可以用 -e no 参数来执行 install.sh 脚本。运行 `./install.sh -h` 指令可以查看所有参数的详细说明信息。 ::: From 5f04c27cc2761c8510d845b668d1a9434b1a2380 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:12:10 +0800 Subject: [PATCH 084/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 69424a2d18..bce7529989 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -82,7 +82,6 @@ sudo ./install.sh :::info 下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) - install.sh 安装脚本在执行过程中,会通过命令行交互界面询问一些配置信息。如果希望采取无交互安装方式,那么可以用 -e no 参数来执行 install.sh 脚本。运行 `./install.sh -h` 指令可以查看所有参数的详细说明信息。 ::: From 400ff894174a0e9e8d8b6bc4caa79b7bea59ee46 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:15:23 +0800 Subject: [PATCH 085/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 65 ++++++++++++++-------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index bce7529989..b35872e7ae 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -11,36 +11,11 @@ import PkgListV3 from "/components/PkgListV3"; ## 安装 +:::info +下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) +::: + - -可以使用 apt-get 工具从官方仓库安装。 - -**安装包仓库** - -```bash -wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add - -echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list -``` - -如果安装 Beta 版需要安装包仓库 - -```bash -wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add - -echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.list -``` - -**使用 apt-get 命令安装** - -```bash -sudo apt-get update -apt-cache policy tdengine -sudo apt-get install tdengine -``` - -:::tip -apt-get 方式只适用于 Debian 或 Ubuntu 系统 -:::: - 1. 从 [发布历史页面](../../releases) 下载获得 deb 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.deb; @@ -80,10 +55,7 @@ sudo ./install.sh ``` :::info - -下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) install.sh 安装脚本在执行过程中,会通过命令行交互界面询问一些配置信息。如果希望采取无交互安装方式,那么可以用 -e no 参数来执行 install.sh 脚本。运行 `./install.sh -h` 指令可以查看所有参数的详细说明信息。 - ::: @@ -95,6 +67,35 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 1. 从 [发布历史页面](../../releases) 下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; 2. 运行 TDengine-server-3.0.0.0-Windows-x64.exe 来安装 TDengine。 + + +可以使用 apt-get 工具从官方仓库安装。 + +**安装包仓库** + +```bash +wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add - +echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list +``` + +如果安装 Beta 版需要安装包仓库 + +```bash +wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add - +echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.list +``` + +**使用 apt-get 命令安装** + +```bash +sudo apt-get update +apt-cache policy tdengine +sudo apt-get install tdengine +``` + +:::tip +apt-get 方式只适用于 Debian 或 Ubuntu 系统 +:::: From 29f78522f8a123e40614f4ce88bbdb5f531e18ad Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:18:32 +0800 Subject: [PATCH 086/108] Update _windows_install.mdx --- docs/zh/14-reference/03-connector/_windows_install.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/14-reference/03-connector/_windows_install.mdx b/docs/zh/14-reference/03-connector/_windows_install.mdx index 755f96b2d7..10cf37a7b4 100644 --- a/docs/zh/14-reference/03-connector/_windows_install.mdx +++ b/docs/zh/14-reference/03-connector/_windows_install.mdx @@ -1,8 +1,8 @@ -import PkgList from "/components/PkgList"; +import PkgListV3 from "/components/PkgListV3"; 1. 下载客户端安装包 - + [所有下载](https://www.taosdata.com/cn/all-downloads/) From 397349156f97bd2765a67c78f50d8978e213b579 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:19:17 +0800 Subject: [PATCH 087/108] Update _linux_install.mdx --- docs/zh/14-reference/03-connector/_linux_install.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/14-reference/03-connector/_linux_install.mdx b/docs/zh/14-reference/03-connector/_linux_install.mdx index eb7f683288..a4667caec9 100644 --- a/docs/zh/14-reference/03-connector/_linux_install.mdx +++ b/docs/zh/14-reference/03-connector/_linux_install.mdx @@ -1,4 +1,4 @@ -import PkgList from "/components/PkgList"; +import PkgListV3 from "/components/PkgListV3"; 1. 下载客户端安装包 From 5b3f85ed3ba569a3cf867603d6747f991b5f5636 Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 15:22:09 +0800 Subject: [PATCH 088/108] docs(driver):update C# 3.0 tmq doc in develop/tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 90 +++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index f36f76fd85..957a8bbdda 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -87,6 +87,31 @@ void commitSync() throws SQLException; void close() throws SQLException; ``` + + + +```C# +ConsumerBuilder(IEnumerable> config) + +virtual IConsumer Build() + +Consumer(ConsumerBuilder builder) + +void Subscribe(IEnumerable topics) + +void Subscribe(string topic) + +ConsumeResult Consume(int millisecondsTimeout) + +List Subscription() + +void Unsubscribe() + +void Commit(ConsumeResult consumerResult) + +void Close() +``` + @@ -229,6 +254,30 @@ public class MetersDeserializer extends ReferenceDeserializer { } ``` + + + +```C# +using TDengineTMQ; + +// 根据需要,设置消费组 (GourpId)、自动提交 (EnableAutoCommit)、 +// 自动提交时间间隔 (AutoCommitIntervalMs)、用户名 (TDConnectUser)、密码 (TDConnectPasswd) 等参数 +var cfg = new ConsumerConfig + { + EnableAutoCommit = "true" + AutoCommitIntervalMs = "1000" + GourpId = "TDengine-TMQ-C#", + TDConnectUser = "root", + TDConnectPasswd = "taosdata", + AutoOffsetReset = "earliest" + MsgWithTableName = "true", + TDConnectIp = "127.0.0.1", + TDConnectPort = "6030" + }; + +var consumer = new ConsumerBuilder(cfg).Build(); +``` + @@ -262,6 +311,18 @@ consumer.subscribe(topics); + + +```C# +// 创建订阅 topics 列表 +List topics = new List(); +topics.add("tmq_topic"); +// 启动订阅 +consumer.Subscribe(topics); +``` + + + ## 消费 @@ -296,6 +357,23 @@ while(running){ + + +```C# +// 消费数据 +while (true) +{ + var consumerRes = consumer.Consume(100); + // process ConsumeResult + ProcessMsg(consumerRes); + consumer.Commit(consumerRes); +} +``` + + + + + ## 结束消费 消费结束后,应当取消订阅。 @@ -322,6 +400,18 @@ consumer.unsubscribe(); consumer.close(); ``` + + + + +```C# +// 取消订阅 +consumer.Unsubscribe(); + +// 关闭消费 +consumer.Close(); +``` + From 0db3fe1e1e617e03435238e327a31e98c803b72d Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 15:39:22 +0800 Subject: [PATCH 089/108] docs(driver):update markdown syntax mistake caused by merge --- docs/zh/07-develop/07-tmq.mdx | 105 ++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 49 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 985b6a6ff2..fb308c5c40 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -89,6 +89,26 @@ void close() throws SQLException; + + +```go +func NewConsumer(conf *Config) (*Consumer, error) + +func (c *Consumer) Close() error + +func (c *Consumer) Commit(ctx context.Context, message unsafe.Pointer) error + +func (c *Consumer) FreeMessage(message unsafe.Pointer) + +func (c *Consumer) Poll(timeout time.Duration) (*Result, error) + +func (c *Consumer) Subscribe(topics []string) error + +func (c *Consumer) Unsubscribe() error + +``` + + ```C# @@ -111,27 +131,10 @@ void Unsubscribe() void Commit(ConsumeResult consumerResult) void Close() - - - - -```go -func NewConsumer(conf *Config) (*Consumer, error) - -func (c *Consumer) Close() error - -func (c *Consumer) Commit(ctx context.Context, message unsafe.Pointer) error - -func (c *Consumer) FreeMessage(message unsafe.Pointer) - -func (c *Consumer) Poll(timeout time.Duration) (*Result, error) - -func (c *Consumer) Subscribe(topics []string) error - -func (c *Consumer) Unsubscribe() error ``` + ## 写入数据 @@ -275,29 +278,6 @@ public class MetersDeserializer extends ReferenceDeserializer { - - -```C# -using TDengineTMQ; - -// 根据需要,设置消费组 (GourpId)、自动提交 (EnableAutoCommit)、 -// 自动提交时间间隔 (AutoCommitIntervalMs)、用户名 (TDConnectUser)、密码 (TDConnectPasswd) 等参数 -var cfg = new ConsumerConfig - { - EnableAutoCommit = "true" - AutoCommitIntervalMs = "1000" - GourpId = "TDengine-TMQ-C#", - TDConnectUser = "root", - TDConnectPasswd = "taosdata", - AutoOffsetReset = "earliest" - MsgWithTableName = "true", - TDConnectIp = "127.0.0.1", - TDConnectPort = "6030" - }; - -var consumer = new ConsumerBuilder(cfg).Build(); - - ```go @@ -348,6 +328,32 @@ if err != nil { ``` + + + +```C# +using TDengineTMQ; + +// 根据需要,设置消费组 (GourpId)、自动提交 (EnableAutoCommit)、 +// 自动提交时间间隔 (AutoCommitIntervalMs)、用户名 (TDConnectUser)、密码 (TDConnectPasswd) 等参数 +var cfg = new ConsumerConfig + { + EnableAutoCommit = "true" + AutoCommitIntervalMs = "1000" + GourpId = "TDengine-TMQ-C#", + TDConnectUser = "root", + TDConnectPasswd = "taosdata", + AutoOffsetReset = "earliest" + MsgWithTableName = "true", + TDConnectIp = "127.0.0.1", + TDConnectPort = "6030" + }; + +var consumer = new ConsumerBuilder(cfg).Build(); + +``` + + 上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 @@ -500,6 +506,15 @@ consumer.close(); + + +```go +consumer.Close() + +``` + + + ```C# @@ -510,14 +525,6 @@ consumer.Unsubscribe(); consumer.Close(); - - -```go -consumer.Close() - -``` - - ## 删除 *topic* From e60359336d0d7ed32c5198dd9215e61708343145 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:42:01 +0800 Subject: [PATCH 090/108] Update _linux_install.mdx --- docs/zh/14-reference/03-connector/_linux_install.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh/14-reference/03-connector/_linux_install.mdx b/docs/zh/14-reference/03-connector/_linux_install.mdx index a4667caec9..c3ddff53cd 100644 --- a/docs/zh/14-reference/03-connector/_linux_install.mdx +++ b/docs/zh/14-reference/03-connector/_linux_install.mdx @@ -2,9 +2,9 @@ import PkgListV3 from "/components/PkgListV3"; 1. 下载客户端安装包 - + - [所有下载](https://www.taosdata.com/cn/all-downloads/) + [所有下载](../../releases) 2. 解压缩软件包 From 85c4994e7b0c6336e70065cb1f581b0a1866bc05 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 15:42:32 +0800 Subject: [PATCH 091/108] Update _windows_install.mdx --- docs/zh/14-reference/03-connector/_windows_install.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/zh/14-reference/03-connector/_windows_install.mdx b/docs/zh/14-reference/03-connector/_windows_install.mdx index 10cf37a7b4..9fdefa04c0 100644 --- a/docs/zh/14-reference/03-connector/_windows_install.mdx +++ b/docs/zh/14-reference/03-connector/_windows_install.mdx @@ -4,8 +4,7 @@ import PkgListV3 from "/components/PkgListV3"; - [所有下载](https://www.taosdata.com/cn/all-downloads/) - + [所有下载](../../releases) 2. 执行安装程序,按提示选择默认值,完成安装 3. 安装路径 From a0525216c0c3a6d49696b76b7f03f36f2b0e5bf5 Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 15:44:51 +0800 Subject: [PATCH 092/108] docs(driver):update C# tmq document --- docs/zh/07-develop/07-tmq.mdx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index fb308c5c40..c37a3c4737 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -88,7 +88,6 @@ void close() throws SQLException; ``` - ```go @@ -105,7 +104,6 @@ func (c *Consumer) Poll(timeout time.Duration) (*Result, error) func (c *Consumer) Subscribe(topics []string) error func (c *Consumer) Unsubscribe() error - ``` @@ -277,7 +275,6 @@ public class MetersDeserializer extends ReferenceDeserializer { ``` - ```go @@ -505,7 +502,6 @@ consumer.close(); ``` - ```go @@ -514,7 +510,6 @@ consumer.Close() ``` - ```C# From 093ff2bd54b50f41895151773872b9c1ee73069c Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 15:46:07 +0800 Subject: [PATCH 093/108] docs(driver):update TMQ markdown doc --- docs/zh/07-develop/07-tmq.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index c37a3c4737..0945f69fcf 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -506,7 +506,6 @@ consumer.close(); ```go consumer.Close() - ``` From dbf93120ab9a8e48dcef5286afc16fcc68c4ed4f Mon Sep 17 00:00:00 2001 From: Yang Zhao Date: Tue, 16 Aug 2022 15:46:51 +0800 Subject: [PATCH 094/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 100 ++++------------------------------ 1 file changed, 11 insertions(+), 89 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index d8966f7798..1ec1922c01 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -92,102 +92,21 @@ void close() throws SQLException; ```python class TaosConsumer(): - DEFAULT_CONFIG = { - 'group.id', - 'client.id', - 'enable.auto.commit', - 'auto.commit.interval.ms', - 'auto.offset.reset', - 'msg.with.table.name', - 'experimental.snapshot.enable', - 'enable.heartbeat.background', - 'experimental.snapshot.batch.size', - 'td.connect.ip', - 'td.connect.user', - 'td.connect.pass', - 'td.connect.port', - 'td.connect.db', - 'timeout' - } + def __init__(self, *topics, **configs) - def __init__(self, *topics, **configs): - self._closed = True - self._conf = None - self._list = None - self._tmq = None + def __iter__(self) - keys = list(configs.keys()) - for k in keys: - configs.update({k.replace('_','.'): configs.pop(k)}) + def __next__(self) - extra_configs = set(configs).difference(self.DEFAULT_CONFIG) - if extra_configs: - raise TmqError("Unrecognized configs: %s" % (extra_configs,)) - - self._conf = tmq_conf_new() - self._list = tmq_list_new() - - # set poll timeout - if 'timeout' in configs: - self._timeout = configs['timeout'] - del configs['timeout'] - else: - self._timeout = 0 - - # check if group id is set - - if 'group.id' not in configs: - raise TmqError("missing group.id in consumer config setting") - - for key, value in configs.items(): - tmq_conf_set(self._conf, key, value) - - self._tmq = tmq_consumer_new(self._conf) - - if not topics: - raise TmqError("Unset topic for Consumer") - - for topic in topics: - tmq_list_append(self._list, topic) - - tmq_subscribe(self._tmq, self._list) - - - def __iter__(self): - return self - - def __next__(self): - if not self._tmq: - raise StopIteration('TaosConsumer closed') - return next(self.sync_next()) - - def sync_next(self): - while 1: - res = tmq_consumer_poll(self._tmq, self._timeout) - if res: - break - yield TaosResult(res) + def sync_next(self) - def subscription(self): - if self._tmq is None: - return None - return tmq_subscription(self._tmq) + def subscription(self) - def unsubscribe(self): - tmq_unsubscribe(self._tmq) + def unsubscribe(self) - def close(self): - if self._tmq: - tmq_consumer_close(self._tmq) - self._tmq = None + def close(self) - def __del__(self): - if self._conf: - tmq_conf_destroy(self._conf) - if self._list: - tmq_list_destroy(self._list) - if self._tmq: - tmq_consumer_close(self._tmq) + def __del__(self) ``` @@ -354,6 +273,8 @@ public class MetersDeserializer extends ReferenceDeserializer { +Python 使用以下配置项创建一个 Consumer 实例。 + | 参数名称 | 类型 | 参数说明 | 备注 | | :----------------------------: | :-----: | -------------------------------------------------------- | ------------------------------------------- | | `td_connect_ip` | string | 用于创建连接,同 `taos_connect` | | @@ -368,6 +289,7 @@ public class MetersDeserializer extends ReferenceDeserializer { | `enable_heartbeat_background` | string | 启用后台心跳,启用后即使长时间不 poll 消息也不会造成离线 | 合法值:`true`, `false` | | `experimental_snapshot_enable` | string | 从 WAL 开始消费,还是从 TSBS 开始消费 | 合法值:`true`, `false` | | `msg_with_table_name` | string | 是否允许从消息中解析表名 | 合法值:`true`, `false` | +| `timeout` | int | 消费者拉去的超时时间 | | From ae954d2eda5c534cc1de94474d35888f3ea472d5 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:11:46 +0800 Subject: [PATCH 095/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index b35872e7ae..7e694a704f 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -18,7 +18,8 @@ import PkgListV3 from "/components/PkgListV3"; -1. 从 [发布历史页面](../../releases) 下载获得 deb 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.deb; +1. 从列表中下载获得 deb 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.deb; + 2. 进入到 TDengine-server-3.0.0.0-Linux-x64.deb 安装包所在目录,执行如下的安装命令: ```bash @@ -29,7 +30,8 @@ sudo dpkg -i TDengine-server-3.0.0.0-Linux-x64.deb -1. 从 [发布历史页面](../../releases) 下载获得 rpm 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.rpm; +1. 从列表中下载获得 rpm 安装包,例如 TDengine-server-3.0.0.0-Linux-x64.rpm; + 2. 进入到 TDengine-server-3.0.0.0-Linux-x64.rpm 安装包所在目录,执行如下的安装命令: ```bash @@ -60,11 +62,10 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 - - - + -1. 从 [发布历史页面](../../releases) 下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; +1. 从列表中下载获得 exe 安装程序,例如 TDengine-server-3.0.0.0-Windows-x64.exe; + 2. 运行 TDengine-server-3.0.0.0-Windows-x64.exe 来安装 TDengine。 From 3829a1c42c7885bbf00e99434d9ee628433e430b Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Tue, 16 Aug 2022 16:19:28 +0800 Subject: [PATCH 096/108] feat: remove storage from community --- source/common/CMakeLists.txt | 5 ++++ source/common/src/tglobal.c | 55 ++---------------------------------- 2 files changed, 8 insertions(+), 52 deletions(-) diff --git a/source/common/CMakeLists.txt b/source/common/CMakeLists.txt index 1c11ee7085..9c6d941172 100644 --- a/source/common/CMakeLists.txt +++ b/source/common/CMakeLists.txt @@ -9,6 +9,11 @@ IF (TD_GRANT) ADD_DEFINITIONS(-D_GRANT) ENDIF () +IF (TD_STORAGE) + ADD_DEFINITIONS(-D_STORAGE) + TARGET_LINK_LIBRARIES(common PRIVATE storage) +ENDIF () + target_include_directories( common PUBLIC "${TD_SOURCE_DIR}/include/common" diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 8823e63db4..59f7ec02f7 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -165,58 +165,9 @@ int32_t tsTtlUnit = 86400; int32_t tsTtlPushInterval = 86400; int32_t tsGrantHBInterval = 60; -void taosAddDataDir(int32_t index, char *v1, int32_t level, int32_t primary) { - tstrncpy(tsDiskCfg[index].dir, v1, TSDB_FILENAME_LEN); - tsDiskCfg[index].level = level; - tsDiskCfg[index].primary = primary; - uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary); -} - -static int32_t taosSetTfsCfg(SConfig *pCfg) { - SConfigItem *pItem = cfgGetItem(pCfg, "dataDir"); - memset(tsDataDir, 0, PATH_MAX); - - int32_t size = taosArrayGetSize(pItem->array); - if (size <= 0) { - tsDiskCfgNum = 1; - taosAddDataDir(0, pItem->str, 0, 1); - tstrncpy(tsDataDir, pItem->str, PATH_MAX); - if (taosMulMkDir(tsDataDir) != 0) { - uError("failed to create dataDir:%s since %s", tsDataDir, terrstr()); - return -1; - } - } else { - tsDiskCfgNum = size < TFS_MAX_DISKS ? size : TFS_MAX_DISKS; - for (int32_t index = 0; index < tsDiskCfgNum; ++index) { - SDiskCfg *pCfg = taosArrayGet(pItem->array, index); - memcpy(&tsDiskCfg[index], pCfg, sizeof(SDiskCfg)); - if (pCfg->level == 0 && pCfg->primary == 1) { - tstrncpy(tsDataDir, pCfg->dir, PATH_MAX); - } - if (taosMulMkDir(pCfg->dir) != 0) { - uError("failed to create tfsDir:%s since %s", tsDataDir, terrstr()); - return -1; - } - } - } - - if (tsDataDir[0] == 0) { - if (pItem->str != NULL) { - taosAddDataDir(tsDiskCfgNum, pItem->str, 0, 1); - tstrncpy(tsDataDir, pItem->str, PATH_MAX); - if (taosMulMkDir(tsDataDir) != 0) { - uError("failed to create tfsDir:%s since %s", tsDataDir, terrstr()); - return -1; - } - tsDiskCfgNum++; - } else { - uError("datadir not set"); - return -1; - } - } - - return 0; -} +#ifndef _STORAGE +int32_t taosSetTfsCfg(SConfig *pCfg) { return 0; } +#endif struct SConfig *taosGetCfg() { return tsCfg; From bd4fdca940d1a2c2548c8be98a5df3fb1b177cc2 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:32:22 +0800 Subject: [PATCH 097/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 200c1258a9..a3e6f035a0 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -520,7 +520,6 @@ for { ``` - From 90347b156951d5458d4ba007698cb803092cbe44 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:42:01 +0800 Subject: [PATCH 098/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index a3e6f035a0..1fa6469b62 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -574,6 +574,9 @@ consumer.unsubscribe(); /* 关闭消费 */ consumer.close(); + + + ```go From debc78805c9c8dce0b09df6321972d6eece98221 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:44:09 +0800 Subject: [PATCH 099/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 1fa6469b62..f22c3419cc 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -966,3 +966,5 @@ for msg in consumer: + + From a89f945e4fdebe2f90822208a88ba7db42b2a409 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:45:56 +0800 Subject: [PATCH 100/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index f22c3419cc..58d2f109ee 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -107,6 +107,7 @@ class TaosConsumer(): def close(self) def __del__(self) + ``` @@ -126,6 +127,7 @@ func (c *Consumer) Subscribe(topics []string) error func (c *Consumer) Unsubscribe() error ``` + @@ -152,6 +154,7 @@ void Commit(ConsumeResult consumerResult) void Close() ``` + @@ -393,6 +396,7 @@ var cfg = new ConsumerConfig var consumer = new ConsumerBuilder(cfg).Build(); ``` + @@ -441,7 +445,6 @@ if err != nil { - ```C# @@ -454,15 +457,12 @@ consumer.Subscribe(topics); - ```python consumer = TaosConsumer('topic_ctb_column', group_id='vg2') ``` - - ## 消费 @@ -504,7 +504,6 @@ for msg in consumer: ``` - ```go @@ -537,7 +536,6 @@ while (true) - ## 结束消费 消费结束后,应当取消订阅。 @@ -966,5 +964,3 @@ for msg in consumer: - - From 51fdbe430edf0c424247f9eb3b0bbe9ab618411d Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:49:57 +0800 Subject: [PATCH 101/108] Update 07-tmq.mdx --- docs/zh/07-develop/07-tmq.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 58d2f109ee..6ab08b97d2 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -90,6 +90,7 @@ void close() throws SQLException; + ```python class TaosConsumer(): def __init__(self, *topics, **configs) @@ -107,9 +108,10 @@ class TaosConsumer(): def close(self) def __del__(self) - ``` + + ```go @@ -152,7 +154,6 @@ void Unsubscribe() void Commit(ConsumeResult consumerResult) void Close() - ``` @@ -590,6 +591,7 @@ consumer.Unsubscribe(); // 关闭消费 consumer.Close(); +``` From 13ed3771dc4a1d08b79df8b4fbfe4c5be0c6c0fd Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 16:55:23 +0800 Subject: [PATCH 102/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 7e694a704f..b7b9d41d2d 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -11,10 +11,6 @@ import PkgListV3 from "/components/PkgListV3"; ## 安装 -:::info -下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) -::: - @@ -100,6 +96,10 @@ apt-get 方式只适用于 Debian 或 Ubuntu 系统 +:::info +下载其他组件、最新 Beta 版及之前版本的安装包,请点击[发布历史页面](../../releases) +::: + :::note 当安装第一个节点时,出现 Enter FQDN:提示的时候,不需要输入任何内容。只有当安装第二个或以后更多的节点时,才需要输入已有集群中任何一个可用节点的 FQDN,支持该新节点加入集群。当然也可以不输入,而是在新节点启动前,配置到新节点的配置文件中。 From 43f25518241ab1c8ccf449788d87855db4b3c7ba Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 17:23:25 +0800 Subject: [PATCH 103/108] docs(driver):update nodejs tmq doc --- docs/zh/07-develop/07-tmq.mdx | 88 +++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 6ab08b97d2..c9ac178081 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -134,7 +134,7 @@ func (c *Consumer) Unsubscribe() error -```C# +```csharp ConsumerBuilder(IEnumerable> config) virtual IConsumer Build() @@ -158,6 +158,26 @@ void Close() + + +```node +function TMQConsumer(config) + +function subscribe(topic) + +function consume(timeout) + +function subscription() + +function unsubscribe() + +function commit(msg) + +function close() +``` + + + ## 写入数据 @@ -376,7 +396,7 @@ if err != nil { -```C# +```csharp using TDengineTMQ; // 根据需要,设置消费组 (GourpId)、自动提交 (EnableAutoCommit)、 @@ -400,6 +420,28 @@ var consumer = new ConsumerBuilder(cfg).Build(); + + +``` node +// 根据需要,设置消费组 (group.id)、自动提交 (enable.auto.commit)、 +// 自动提交时间间隔 (auto.commit.interval.ms)、用户名 (td.connect.user)、密码 (td.connect.pass) 等参数 + +let consumer = taos.consumer({ + 'enable.auto.commit': 'true', + 'auto.commit.interval.ms','1000', + 'group.id': 'tg2', + 'td.connect.user': 'root', + 'td.connect.pass': 'taosdata', + 'auto.offset.reset','earliest', + 'msg.with.table.name': 'true', + 'td.connect.ip','127.0.0.1', + 'td.connect.port','6030' + }); + +``` + + + 上述配置中包括 consumer group ID,如果多个 consumer 指定的 consumer group ID 一样,则自动形成一个 consumer group,共享消费进度。 @@ -448,7 +490,7 @@ if err != nil { -```C# +```csharp // 创建订阅 topics 列表 List topics = new List(); topics.add("tmq_topic"); @@ -464,6 +506,18 @@ consumer = TaosConsumer('topic_ctb_column', group_id='vg2') ``` + + +```node +// 创建订阅 topics 列表 +let topics = ['topic_test'] + +// 启动订阅 +consumer.subscribe(topics); +``` + + + ## 消费 @@ -523,7 +577,7 @@ for { -```C# +```csharp // 消费数据 while (true) { @@ -535,6 +589,21 @@ while (true) ``` + + + +```node +while(true){ + msg = consumer.consume(200); + // process message(consumeResult) + console.log(msg.topicPartition); + console.log(msg.block); + console.log(msg.fields) + } +``` + + + ## 结束消费 @@ -585,7 +654,7 @@ consumer.Close() -```C# +```csharp // 取消订阅 consumer.Unsubscribe(); @@ -594,6 +663,15 @@ consumer.Close(); ``` + + +```node +consumer.unsubscribe(); +consumer.close(); +``` + + + ## 删除 *topic* From 091695c64166eba05bf982c0fc80c5e84a51ea22 Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 17:29:59 +0800 Subject: [PATCH 104/108] docs(driver):update nodejs tmq doc --- docs/zh/07-develop/07-tmq.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index c9ac178081..3ce211c608 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -160,7 +160,7 @@ void Close() -```node +```javascript function TMQConsumer(config) function subscribe(topic) From 11d4313da59260301fe47e766953325a8e814b1b Mon Sep 17 00:00:00 2001 From: xleili Date: Tue, 16 Aug 2022 17:32:24 +0800 Subject: [PATCH 105/108] docs(driver):update nodejs tmq doc --- docs/zh/07-develop/07-tmq.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/07-develop/07-tmq.mdx b/docs/zh/07-develop/07-tmq.mdx index 3ce211c608..c9ac178081 100644 --- a/docs/zh/07-develop/07-tmq.mdx +++ b/docs/zh/07-develop/07-tmq.mdx @@ -160,7 +160,7 @@ void Close() -```javascript +```node function TMQConsumer(config) function subscribe(topic) From 8867a295f69d5f8db957b7e042c1fdc78ad363b1 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 17:58:15 +0800 Subject: [PATCH 106/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index b7b9d41d2d..5d346c4420 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -7,8 +7,14 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import PkgListV3 from "/components/PkgListV3"; +TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件,目前服务端 taosd 和 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。应用驱动 taosc 与 TDengine CLI 可以在 Windows 或 Linux 上安装和运行。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../reference/taosadapter/) 提供 [RESTful 接口](../reference/rest-api/)。 + 在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. +为方便使用,标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。 + +在安装包格式上,我们提供 tar.gz, rpm 和 deb 格式,为企业客户提供 tar.gz 格式安装包,以方便在特定操作系统上使用。需要注意的是,rpm 和 deb 包不含 taosdump 和 TDinsight 安装脚本,这些工具需要通过安装 taosTool 包获得。 + ## 安装 From f9f6e6dacc3c6c5986b214c490a3a3c54dfe1224 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 18:01:22 +0800 Subject: [PATCH 107/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 5d346c4420..35f22fbe13 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -7,7 +7,7 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import PkgListV3 from "/components/PkgListV3"; -TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件,目前服务端 taosd 和 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。应用驱动 taosc 与 TDengine CLI 可以在 Windows 或 Linux 上安装和运行。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../reference/taosadapter/) 提供 [RESTful 接口](../reference/rest-api/)。 +TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件,目前服务端 taosd 和 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。应用驱动 taosc 与 TDengine CLI 可以在 Windows 或 Linux 上安装和运行。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../../reference/taosadapter/) 提供 [RESTful 接口](../../reference/rest-api/)。 在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. From 59959f7cf300af0d9e45bd79f376330a377363b6 Mon Sep 17 00:00:00 2001 From: Shuaiqiang Chang Date: Tue, 16 Aug 2022 18:01:58 +0800 Subject: [PATCH 108/108] Update 03-package.md --- docs/zh/05-get-started/03-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/05-get-started/03-package.md b/docs/zh/05-get-started/03-package.md index 35f22fbe13..f1896e9c0a 100644 --- a/docs/zh/05-get-started/03-package.md +++ b/docs/zh/05-get-started/03-package.md @@ -9,7 +9,7 @@ import PkgListV3 from "/components/PkgListV3"; TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件,目前服务端 taosd 和 taosAdapter 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。应用驱动 taosc 与 TDengine CLI 可以在 Windows 或 Linux 上安装和运行。TDengine 除了提供多种语言的连接器之外,还通过 [taosAdapter](../../reference/taosadapter/) 提供 [RESTful 接口](../../reference/rest-api/)。 -在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用Docker立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. +在 Linux 系统上,TDengine 开源版本提供 deb 和 rpm 格式安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 Debian/Ubuntu 及衍生系统,rpm 支持 CentOS/RHEL/SUSE 及衍生系统。同时我们也为企业用户提供 tar.gz 格式安装包,也支持通过 `apt-get` 工具从线上进行安装。TDengine 也提供 Windows x64 平台的安装包。您也可以[用 Docker 立即体验](../../get-started/docker/)。如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 [TDengine GitHub 主页](https://github.com/taosdata/TDengine) 下载源码构建和安装. 为方便使用,标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。