diff --git a/src/client/src/tscSecondaryMerge.c b/src/client/src/tscSecondaryMerge.c index 84f14abf4c68c8f561abfa2b918db7ef79ba7c30..dbf17b56c5cb7893a4272d141902bf1559349ea2 100644 --- a/src/client/src/tscSecondaryMerge.c +++ b/src/client/src/tscSecondaryMerge.c @@ -140,7 +140,13 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd // offset of cmd in SSqlObj structure char *pSqlObjAddr = (char *)pCmd - offsetof(SSqlObj, cmd); - if (pMemBuffer == NULL || pDesc->pColumnModel == NULL) { + if (pMemBuffer == NULL) { + tscError("%p pMemBuffer", pMemBuffer); + pRes->code = TSDB_CODE_APP_ERROR; + return; + } + + if (pDesc->pColumnModel == NULL) { tscLocalReducerEnvDestroy(pMemBuffer, pDesc, finalmodel, numOfBuffer); tscError("%p no local buffer or intermediate result format model", pSqlObjAddr); diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 9b44bea82d1c9927b9ef2cf1331af5bf7267d7f9..7874d0e8167aa1b3d824a6860316ceab4e5c567d 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -228,7 +228,11 @@ int tscSendMsgToServer(SSqlObj *pSql) { void tscProcessMsgFromServer(SRpcMsg *rpcMsg) { SSqlObj *pSql = (SSqlObj *)rpcMsg->handle; - if (pSql == NULL || pSql->signature != pSql) { + if (pSql == NULL) { + tscError("%p sql is already released", pSql->signature); + return; + } + if (pSql->signature != pSql) { tscError("%p sql is already released, signature:%p", pSql, pSql->signature); return; } @@ -310,7 +314,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg) { pRes->rspType = rpcMsg->msgType; pRes->rspLen = rpcMsg->contLen; - if (pRes->rspLen > 0) { + if (pRes->rspLen > 0 && rpcMsg->pCont) { char *tmp = (char *)realloc(pRes->pRsp, pRes->rspLen); if (tmp == NULL) { pRes->code = TSDB_CODE_CLI_OUT_OF_MEMORY; diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index d69068172937692ac95dd6ca64717b00e236321b..5f5af09cf8aa84712c166e12c508fbf1a3b20dc3 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -172,17 +172,17 @@ static void tscSetTimestampForRes(SSqlStream *pStream, SSqlObj *pSql) { static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOfRows) { SSqlStream * pStream = (SSqlStream *)param; SSqlObj * pSql = (SSqlObj *)res; - STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0); if (pSql == NULL || numOfRows < 0) { int64_t retryDelayTime = tscGetRetryDelayTime(pStream->slidingTime, pStream->precision); tscError("%p stream:%p, retrieve data failed, code:%d, retry in %" PRId64 "ms", pSql, pStream, numOfRows, retryDelayTime); - tscClearTableMetaInfo(pTableMetaInfo, true); tscSetRetryTimer(pStream, pStream->pSql, retryDelayTime); return; } + STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0); + if (numOfRows > 0) { // when reaching here the first execution of stream computing is successful. pStream->numOfRes += numOfRows; SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0); diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index c0cfa4d3af3fc142bb15afa3d84bff8b99ba35ad..506fa1a60560baf5da1e5f401a2ad0798651fcc3 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -757,7 +757,9 @@ void tscCloseTscObj(STscObj* pObj) { taosTmrStopA(&(pObj->pTimer)); tscFreeSqlObj(pSql); - sem_destroy(&pSql->rspSem); + if (pSql) { + sem_destroy(&pSql->rspSem); + } rpcClose(pObj->pMgmtConn); pthread_mutex_destroy(&pObj->mutex); diff --git a/src/dnode/src/dnodeMain.c b/src/dnode/src/dnodeMain.c index 6aa42f05c700d5bd21b160da344a3939e0545918..940b884927719986009d6934802e2972cab49399 100644 --- a/src/dnode/src/dnodeMain.c +++ b/src/dnode/src/dnodeMain.c @@ -213,6 +213,7 @@ static void dnodeCheckDataDirOpenned(char *dir) { int32_t ret = flock(fd, LOCK_EX | LOCK_NB); if (ret != 0) { dError("failed to lock file:%s ret:%d, database may be running, quit", filepath, ret); + close(fd); exit(0); } } diff --git a/src/kit/shell/src/shellImport.c b/src/kit/shell/src/shellImport.c index 256b251075b564727f886ea0d4da220329806a37..e5c50bb74ef3dea925729056143742fd6101ce3f 100644 --- a/src/kit/shell/src/shellImport.c +++ b/src/kit/shell/src/shellImport.c @@ -142,6 +142,7 @@ static void shellSourceFile(TAOS *con, char *fptr) { if (wordexp(fptr, &full_path, 0) != 0) { fprintf(stderr, "ERROR: illegal file name\n"); + free(cmd); return; } diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index d3453cda3639654dd4f92f4afd289f72825de0f2..22ffa78c8138dcf14ed384c88fec27e205dc6b47 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -62,7 +62,13 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { if (arg) arguments->password = arg; break; case 'P': - tsMnodeShellPort = atoi(arg); + if (arg) { + tsMnodeShellPort = atoi(arg); + } else { + fprintf(stderr, "Invalid port\n"); + return -1; + } + break; case 't': arguments->timezone = arg; @@ -101,7 +107,12 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { wordfree(&full_path); break; case 'T': - arguments->threadNum = atoi(arg); + if (arg) { + arguments->threadNum = atoi(arg); + } else { + fprintf(stderr, "Invalid number of threads\n"); + return -1; + } break; case 'd': arguments->database = arg; diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 24855ab8b51a87aed91ac10e8278941fe60bfee1..937c8d177dc73138e626f83b18657cbb8eb485a2 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -340,6 +340,9 @@ int main(int argc, char *argv[]) { int count_data_type = 0; char dataString[512]; bool do_aggreFunc = true; + + memset(dataString, 0, 512); + if (strcasecmp(data_type[0], "BINARY") == 0 || strcasecmp(data_type[0], "BOOL") == 0) { do_aggreFunc = false; } diff --git a/src/kit/taosdump/taosdump.c b/src/kit/taosdump/taosdump.c index 2e64c9bcccba8c749de3a73e6480bf056b067e56..ed98a9b92c517b4387b8144cf5a8082e91384ad2 100644 --- a/src/kit/taosdump/taosdump.c +++ b/src/kit/taosdump/taosdump.c @@ -383,14 +383,13 @@ int taosGetTableRecordInfo(char *table, STableRecordInfo *pTableRecordInfo) { TAOS_FIELD *fields = taos_fetch_fields(result); - while ((row = taos_fetch_row(result)) != NULL) { + if ((row = taos_fetch_row(result)) != NULL) { isSet = true; pTableRecordInfo->isMetric = false; strncpy(pTableRecordInfo->tableRecord.name, (char *)row[TSDB_SHOW_TABLES_NAME_INDEX], fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes); strncpy(pTableRecordInfo->tableRecord.metric, (char *)row[TSDB_SHOW_TABLES_METRIC_INDEX], fields[TSDB_SHOW_TABLES_METRIC_INDEX].bytes); - break; } taos_free_result(result); @@ -410,11 +409,10 @@ int taosGetTableRecordInfo(char *table, STableRecordInfo *pTableRecordInfo) { return -1; } - while ((row = taos_fetch_row(result)) != NULL) { + if ((row = taos_fetch_row(result)) != NULL) { isSet = true; pTableRecordInfo->isMetric = true; strcpy(pTableRecordInfo->tableRecord.metric, table); - break; } taos_free_result(result); diff --git a/src/mnode/src/mgmtShell.c b/src/mnode/src/mgmtShell.c index 193521b0260c42213f3d07578fa129a33c206f65..05cacbb95c58debddc9d225100bf98fe6411e06c 100644 --- a/src/mnode/src/mgmtShell.c +++ b/src/mnode/src/mgmtShell.c @@ -149,7 +149,9 @@ void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg) { } static void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) { - if (rpcMsg == NULL || rpcMsg->pCont == NULL) { + assert(rpcMsg); + + if (rpcMsg->pCont == NULL) { mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN); return; } diff --git a/src/mnode/src/mgmtVgroup.c b/src/mnode/src/mgmtVgroup.c index 839dce5c38a65528e1ea3c0f8c691738476bce45..b3260850ad03e8d7c111c96a9526f013988df0ee 100644 --- a/src/mnode/src/mgmtVgroup.c +++ b/src/mnode/src/mgmtVgroup.c @@ -158,7 +158,11 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { } mgmtDecVgroupRef(pVgroup); - mTrace("vgId:%d, is updated, tables:%d numOfVnode:%d", pVgroup->vgId, pDb->cfg.maxTables, pVgroup->numOfVnodes); + + mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); + if (pDb) { + mTrace("tables:%d", pDb->cfg.maxTables); + } return TSDB_CODE_SUCCESS; } diff --git a/src/query/src/qparserImpl.c b/src/query/src/qparserImpl.c index 075dbc9d14b2fda785e3730275b5e1803f1ea570..7b3a76c9d223ab12936ad348433dcfc0055e27ee 100644 --- a/src/query/src/qparserImpl.c +++ b/src/query/src/qparserImpl.c @@ -675,7 +675,7 @@ void SQLInfoDestroy(SSqlInfo *pInfo) { free(pInfo->pDCLInfo->a); } - if (pInfo->type == TSDB_SQL_CREATE_DB) { + if (pInfo->pDCLInfo != NULL && pInfo->type == TSDB_SQL_CREATE_DB) { tVariantListDestroy(pInfo->pDCLInfo->dbOpt.keep); } @@ -899,4 +899,4 @@ void setDefaultCreateDbOption(SCreateDBInfo *pDBInfo) { pDBInfo->keep = NULL; memset(&pDBInfo->precision, 0, sizeof(SSQLToken)); -} \ No newline at end of file +} diff --git a/src/query/src/qtsbuf.c b/src/query/src/qtsbuf.c index 062a8038b2699a7be77e7eca3290fedfe9321785..1d5c4f2d9df71d9fc1133e424efeabbc40215043 100644 --- a/src/query/src/qtsbuf.c +++ b/src/query/src/qtsbuf.c @@ -636,12 +636,16 @@ void tsBufResetPos(STSBuf* pTSBuf) { STSElem tsBufGetElem(STSBuf* pTSBuf) { STSElem elem1 = {.vnode = -1}; - STSCursor* pCur = &pTSBuf->cur; - if (pTSBuf == NULL || pCur->vnodeIndex < 0) { + if (pTSBuf == NULL) { return elem1; } + STSCursor* pCur = &pTSBuf->cur; + if (pCur != NULL && pCur->vnodeIndex < 0) { + return elem1; + } + STSBlock* pBlock = &pTSBuf->block; elem1.vnode = pTSBuf->pData[pCur->vnodeIndex].info.vnode; @@ -920,4 +924,4 @@ static STSBuf* allocResForTSBuf(STSBuf* pTSBuf) { pTSBuf->fileSize += getDataStartOffset(); return pTSBuf; -} \ No newline at end of file +} diff --git a/src/query/src/queryUtil.c b/src/query/src/queryUtil.c index b4d8911284723d6b40fada3e17e1edefd53d549b..9da02f9f0f9d97c5087027309bde844c09589ecd 100644 --- a/src/query/src/queryUtil.c +++ b/src/query/src/queryUtil.c @@ -62,7 +62,10 @@ void destroyTimeWindowRes(SWindowResult *pWindowRes, int32_t nOutputCols) { } void cleanupTimeWindowInfo(SWindowResInfo *pWindowResInfo, int32_t numOfCols) { - if (pWindowResInfo == NULL || pWindowResInfo->capacity == 0) { + if (pWindowResInfo == NULL) { + return; + } + if (pWindowResInfo->capacity == 0) { assert(pWindowResInfo->hashList == NULL && pWindowResInfo->pResult == NULL); return; } diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index bc9220dbc72b197785b5fa227340def9e1839dbb..46480b2b9d06070a06c878c71f17c9fff7edd3db 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -216,7 +216,7 @@ static bool hasMoreDataInCache(STsdbQueryHandle* pHandle) { return false; } - if (pCheckInfo->iter == NULL) { + if (pCheckInfo->iter == NULL && pTable->mem) { pCheckInfo->iter = tSkipListCreateIterFromVal(pTable->mem->pData, (const char*) &pCheckInfo->lastKey, TSDB_DATA_TYPE_TIMESTAMP, pHandle->order);