diff --git a/source/libs/executor/src/cachescanoperator.c b/source/libs/executor/src/cachescanoperator.c index 8559a44348..c153012817 100644 --- a/source/libs/executor/src/cachescanoperator.c +++ b/source/libs/executor/src/cachescanoperator.c @@ -132,9 +132,15 @@ SOperatorInfo* createCacherowsScanOperator(SLastRowScanPhysiNode* pScanNode, SRe } SArray* pCidList = taosArrayInit(numOfCols, sizeof(int16_t)); + QUERY_CHECK_NULL(pCidList, code, lino, _error, TSDB_CODE_OUT_OF_MEMORY); + pInfo->pFuncTypeList = taosArrayInit(taosArrayGetSize(pScanNode->pFuncTypes), sizeof(int32_t)); + QUERY_CHECK_NULL(pInfo->pFuncTypeList, code, lino, _error, TSDB_CODE_OUT_OF_MEMORY); + void* tmp = taosArrayAddAll(pInfo->pFuncTypeList, pScanNode->pFuncTypes); - QUERY_CHECK_NULL(tmp, code, lino, _error, TSDB_CODE_OUT_OF_MEMORY); + if (!tmp && taosArrayGetSize(pScanNode->pFuncTypes) > 0) { + QUERY_CHECK_NULL(tmp, code, lino, _error, TSDB_CODE_OUT_OF_MEMORY); + } for (int i = 0; i < TARRAY_SIZE(pInfo->matchInfo.pList); ++i) { SColMatchItem* pColInfo = taosArrayGet(pInfo->matchInfo.pList, i); @@ -206,7 +212,7 @@ SOperatorInfo* createCacherowsScanOperator(SLastRowScanPhysiNode* pScanNode, SRe _error: pTaskInfo->code = code; if (code != TSDB_CODE_SUCCESS) { - qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + qError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); } destroyCacheScanOperator(pInfo); taosMemoryFree(pOperator); diff --git a/source/libs/executor/src/eventwindowoperator.c b/source/libs/executor/src/eventwindowoperator.c index 75153e3a08..1988dff44f 100644 --- a/source/libs/executor/src/eventwindowoperator.c +++ b/source/libs/executor/src/eventwindowoperator.c @@ -350,7 +350,7 @@ int32_t eventWindowAggImpl(SOperatorInfo* pOperator, SEventWindowOperatorInfo* p _return: if (code != TSDB_CODE_SUCCESS) { - qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + qError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); } colDataDestroy(ps); taosMemoryFree(ps); diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 2c1d3983cd..f2de61f625 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -428,7 +428,7 @@ static EDealRes getColumn(SNode** pNode, void* pContext) { if (!data) { int32_t code = taosHashPut(pData->colHash, &pSColumnNode->colId, sizeof(pSColumnNode->colId), pNode, sizeof((*pNode))); - if (code != TSDB_CODE_SUCCESS) { + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { return DEAL_RES_ERROR; } pSColumnNode->slotId = pData->index++; @@ -440,7 +440,7 @@ static EDealRes getColumn(SNode** pNode, void* pContext) { qDebug("tagfilter build column info, slotId:%d, colId:%d, type:%d", pSColumnNode->slotId, cInfo.colId, cInfo.type); #endif void* tmp = taosArrayPush(pData->cInfoList, &cInfo); - if(!tmp) { + if (!tmp) { return DEAL_RES_ERROR; } } else { @@ -741,7 +741,10 @@ int32_t getColInfoResultForGroupby(void* pVnode, SNodeList* group, STableListInf // groupId ~ table uid code = taosHashPut(pTableListInfo->remainGroups, &(info->groupId), sizeof(info->groupId), &(info->uid), sizeof(info->uid)); - QUERY_CHECK_CODE(code, lino, end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto end; + } } } @@ -942,7 +945,7 @@ static int32_t optimizeTbnameInCondImpl(void* pVnode, SArray* pExistedUidList, S for (int i = 0; i < numOfExisted; i++) { STUidTagInfo* pTInfo = taosArrayGet(pExistedUidList, i); int32_t code = taosHashPut(uHash, &pTInfo->uid, sizeof(uint64_t), &i, sizeof(i)); - if (code != TSDB_CODE_SUCCESS) { + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); return code; } @@ -1793,8 +1796,8 @@ static int32_t setSelectValueColumnInfo(SqlFunctionCtx* pCtx, int32_t numOfOutpu SHashObj* pSelectFuncs = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); for (int32_t i = 0; i < numOfOutput; ++i) { const char* pName = pCtx[i].pExpr->pExpr->_function.functionName; - if ((strcmp(pName, "_select_value") == 0) || (strcmp(pName, "_group_key") == 0) - || (strcmp(pName, "_group_const_value") == 0)) { + if ((strcmp(pName, "_select_value") == 0) || (strcmp(pName, "_group_key") == 0) || + (strcmp(pName, "_group_const_value") == 0)) { pValCtx[num++] = &pCtx[i]; } else if (fmIsSelectFunc(pCtx[i].functionId)) { void* data = taosHashGet(pSelectFuncs, pName, strlen(pName)); @@ -1803,7 +1806,7 @@ static int32_t setSelectValueColumnInfo(SqlFunctionCtx* pCtx, int32_t numOfOutpu break; } else { int32_t code = taosHashPut(pSelectFuncs, pName, strlen(pName), &num, sizeof(num)); - if (code != TSDB_CODE_SUCCESS) { + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); return code; } @@ -2239,7 +2242,10 @@ int32_t tableListAddTableInfo(STableListInfo* pTableList, uint64_t uid, uint64_t int32_t slot = (int32_t)taosArrayGetSize(pTableList->pTableList) - 1; code = taosHashPut(pTableList->map, &uid, sizeof(uid), &slot, sizeof(slot)); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } _end: if (code != TSDB_CODE_SUCCESS) { @@ -2416,7 +2422,7 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle* code = taosHashPut(pTableListInfo->remainGroups, &(info->groupId), sizeof(info->groupId), &(info->uid), sizeof(info->uid)); - if (code != TSDB_CODE_SUCCESS) { + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); return code; } @@ -2468,7 +2474,7 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle* for (int32_t i = 0; i < size; ++i) { STableKeyInfo* p = taosArrayGet(pTableListInfo->pTableList, i); code = taosHashPut(pTableListInfo->map, &p->uid, sizeof(uint64_t), &i, sizeof(int32_t)); - if (code != TSDB_CODE_SUCCESS) { + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); return code; } diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index 8cf44602f9..960269d18e 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -97,7 +97,7 @@ static int32_t doSetSMABlock(SOperatorInfo* pOperator, void* input, size_t numOf _end: if (code != TSDB_CODE_SUCCESS) { - qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + qError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); } return code; } diff --git a/source/libs/executor/src/groupoperator.c b/source/libs/executor/src/groupoperator.c index 2e660ef1bc..1d39f20757 100644 --- a/source/libs/executor/src/groupoperator.c +++ b/source/libs/executor/src/groupoperator.c @@ -774,7 +774,10 @@ void* getCurrentDataGroupInfo(const SPartitionOperatorInfo* pInfo, SDataGroupInf QUERY_CHECK_NULL(gi.pPageList, code, lino, _end, TSDB_CODE_OUT_OF_MEMORY); code = taosHashPut(pInfo->pGroupSet, pInfo->keyBuf, len, &gi, sizeof(SDataGroupInfo)); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } p = taosHashGet(pInfo->pGroupSet, pInfo->keyBuf, len); @@ -1397,7 +1400,10 @@ static void doStreamHashPartitionImpl(SStreamPartitionOperatorInfo* pInfo, SSDat code = taosHashPut(pInfo->pPartitions, pInfo->partitionSup.keyBuf, keyLen, &newParData, sizeof(SPartitionDataInfo)); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } } } diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 103378c3ef..3260be63ed 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -175,8 +175,13 @@ static int32_t insertTableToScanIgnoreList(STableScanInfo* pTableScanInfo, uint6 } } - return taosHashPut(pTableScanInfo->pIgnoreTables, &uid, sizeof(uid), &pTableScanInfo->scanTimes, - sizeof(pTableScanInfo->scanTimes)); + int32_t code = taosHashPut(pTableScanInfo->pIgnoreTables, &uid, sizeof(uid), &pTableScanInfo->scanTimes, + sizeof(pTableScanInfo->scanTimes)); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); + return code; + } + return TSDB_CODE_SUCCESS; } static int32_t doDynamicPruneDataBlock(SOperatorInfo* pOperator, SDataBlockInfo* pBlockInfo, uint32_t* status) { @@ -357,10 +362,9 @@ static int32_t loadDataBlock(SOperatorInfo* pOperator, STableScanBase* pTableSca if (pOperator->exprSupp.pFilterInfo != NULL && (!loadSMA)) { bool success = doLoadBlockSMA(pTableScanInfo, pBlock, pTaskInfo); if (success) { - size_t size = taosArrayGetSize(pBlock->pDataBlock); - bool keep = false; - code = - doFilterByBlockSMA(pOperator->exprSupp.pFilterInfo, pBlock->pBlockAgg, size, pBlockInfo->rows, &keep); + size_t size = taosArrayGetSize(pBlock->pDataBlock); + bool keep = false; + code = doFilterByBlockSMA(pOperator->exprSupp.pFilterInfo, pBlock->pBlockAgg, size, pBlockInfo->rows, &keep); QUERY_CHECK_CODE(code, lino, _end); if (!keep) { @@ -3618,7 +3622,10 @@ void streamScanReloadState(SOperatorInfo* pOperator) { size_t keySize = 0; int64_t* pUid = taosHashGetKey(pIte, &keySize); code = taosHashPut(pUpInfo->pMap, pUid, sizeof(int64_t), pIte, sizeof(TSKEY)); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } pIte = taosHashIterate(curMap, pIte); } @@ -4005,7 +4012,10 @@ static EDealRes tagScanRewriteTagColumn(SNode** pNode, void* pContext) { void* data = taosHashGet(pCtx->colHash, &pSColumnNode->colId, sizeof(pSColumnNode->colId)); if (!data) { code = taosHashPut(pCtx->colHash, &pSColumnNode->colId, sizeof(pSColumnNode->colId), pNode, sizeof((*pNode))); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } pSColumnNode->slotId = pCtx->index++; SColumnInfo cInfo = {.colId = pSColumnNode->colId, .type = pSColumnNode->node.resType.type, @@ -4912,7 +4922,10 @@ static void tableMergeScanDoSkipTable(uint64_t uid, void* pTableMergeOpInfo) { int bSkip = 1; if (pInfo->mSkipTables != NULL) { code = taosHashPut(pInfo->mSkipTables, &uid, sizeof(uid), &bSkip, sizeof(bSkip)); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } } _end: diff --git a/source/libs/executor/src/streamtimewindowoperator.c b/source/libs/executor/src/streamtimewindowoperator.c index c47f99cca3..85cbe8f519 100644 --- a/source/libs/executor/src/streamtimewindowoperator.c +++ b/source/libs/executor/src/streamtimewindowoperator.c @@ -1600,7 +1600,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) { if (pBlock->info.type != STREAM_CLEAR) { void* tmp = taosArrayAddAll(pInfo->pDelWins, delWins); - if (!tmp) { + if (!tmp && taosArrayGetSize(delWins) > 0) { code = TSDB_CODE_OUT_OF_MEMORY; QUERY_CHECK_CODE(code, lino, _end); } @@ -1610,7 +1610,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) { } removeResults(delWins, pInfo->pUpdatedMap); void* tmp = taosArrayAddAll(pInfo->pDelWins, delWins); - if (!tmp) { + if (!tmp && taosArrayGetSize(delWins) > 0) { code = TSDB_CODE_OUT_OF_MEMORY; QUERY_CHECK_CODE(code, lino, _end); } @@ -5313,7 +5313,7 @@ static SSDataBlock* doStreamMidIntervalAgg(SOperatorInfo* pOperator) { removeResults(delWins, pInfo->pUpdatedMap); void* tmp = taosArrayAddAll(pInfo->pDelWins, delWins); - if (!tmp) { + if (!tmp && taosArrayGetSize(delWins) > 0) { code = TSDB_CODE_OUT_OF_MEMORY; QUERY_CHECK_CODE(code, lino, _end); } diff --git a/source/libs/executor/src/sysscanoperator.c b/source/libs/executor/src/sysscanoperator.c index 1b09c47f05..6528ad1b9d 100644 --- a/source/libs/executor/src/sysscanoperator.c +++ b/source/libs/executor/src/sysscanoperator.c @@ -160,8 +160,8 @@ int32_t sysFilte__DbName(void* arg, SNode* pNode, SArray* result) { const char* db = NULL; pArg->pAPI->metaFn.getBasicInfo(pVnode, &db, NULL, NULL, NULL); - SName sn = {0}; - char dbname[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; + SName sn = {0}; + char dbname[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; int32_t code = tNameFromString(&sn, db, T_NAME_ACCT | T_NAME_DB); if (code != TSDB_CODE_SUCCESS) { qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code)); @@ -596,7 +596,10 @@ static SSDataBlock* sysTableScanUserCols(SOperatorInfo* pOperator) { if (schema == NULL) { SSchemaWrapper* schemaWrapper = tCloneSSchemaWrapper(&pInfo->pCur->mr.me.stbEntry.schemaRow); code = taosHashPut(pInfo->pSchema, &pInfo->pCur->mr.me.uid, sizeof(int64_t), &schemaWrapper, POINTER_BYTES); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } } continue; } else if (pInfo->pCur->mr.me.type == TSDB_CHILD_TABLE) { @@ -624,7 +627,10 @@ static SSDataBlock* sysTableScanUserCols(SOperatorInfo* pOperator) { } SSchemaWrapper* schemaWrapper = tCloneSSchemaWrapper(&smrSuperTable.me.stbEntry.schemaRow); code = taosHashPut(pInfo->pSchema, &suid, sizeof(int64_t), &schemaWrapper, POINTER_BYTES); - QUERY_CHECK_CODE(code, lino, _end); + if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_DUP_KEY) { + lino = __LINE__; + goto _end; + } schemaRow = schemaWrapper; pAPI->metaReaderFn.clearReader(&smrSuperTable); @@ -745,7 +751,8 @@ static SSDataBlock* sysTableScanUserTags(SOperatorInfo* pOperator) { return NULL; } - code = sysTableUserTagsFillOneTableTags(pInfo, &smrSuperTable, &smrChildTable, dbname, tableName, &numOfRows, dataBlock); + code = sysTableUserTagsFillOneTableTags(pInfo, &smrSuperTable, &smrChildTable, dbname, tableName, &numOfRows, + dataBlock); QUERY_CHECK_CODE(code, lino, _end); pAPI->metaReaderFn.clearReader(&smrSuperTable); @@ -2571,8 +2578,7 @@ static SSDataBlock* doBlockInfoScan(SOperatorInfo* pOperator) { char* p = taosMemoryCalloc(1, len + VARSTR_HEADER_SIZE); QUERY_CHECK_NULL(p, code, lino, _end, TSDB_CODE_OUT_OF_MEMORY); - code = tSerializeBlockDistInfo(varDataVal(p), len, &blockDistInfo); - QUERY_CHECK_CODE(code, lino, _end); + (void)tSerializeBlockDistInfo(varDataVal(p), len, &blockDistInfo); varDataSetLen(p, len); code = colDataSetVal(pColInfo, 0, p, false);