diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 465d45413ad3cc3ed8407ce314de29c554dc1722..7c175595fa1d8c2665a4794fe7c2f0911519faaf 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -7278,14 +7278,16 @@ int32_t doDumpQueryResult(SQInfo *pQInfo, char *data) { assert(0); } - // dump error info - if (s <= (sizeof(STSBufFileHeader) + sizeof(STSGroupBlockInfo) + 6 * sizeof(int32_t))) { - qDump(data, s); - assert(0); - } - fclose(f); *(FILE **)pColInfoData->pData = NULL; + + // pBlock->tag.nType numOfElem compLen payload compLen tag.nLen about 6 int32 length + if (s <= (sizeof(STSBufFileHeader) + sizeof(STSGroupBlockInfo) + 6 * sizeof(int32_t))) { + // file size is less than above, maybe no data in this file, set query over + qError("STSBuf file is small maybe no data, so set query over. file size=%d", (int32_t)s); + setQueryStatus(pRuntimeEnv, QUERY_OVER); + return TSDB_CODE_SUCCESS; + } } // all data returned, set query over diff --git a/src/query/src/qTsbuf.c b/src/query/src/qTsbuf.c index 19c23bb937152d0098e5db2c51cc510d29f06bb5..098e6268cdadc8eb734d03674d788409652cc0ac 100644 --- a/src/query/src/qTsbuf.c +++ b/src/query/src/qTsbuf.c @@ -447,6 +447,12 @@ void tsBufAppend(STSBuf* pTSBuf, int32_t id, tVariant* tag, const char* pData, i STSGroupBlockInfoEx* pBlockInfo = NULL; STSList* ptsData = &pTSBuf->tsData; + // check reach max number + if(pTSBuf->numOfGroups >= TS_COMP_FILE_GROUP_MAX) { + qError("STSBUF tsBufAppend numOfGroups is over max. numOfGroups=%d id=%d pData=%p len=%d", pTSBuf->numOfGroups, id, pData, len); + return ; + } + if (pTSBuf->numOfGroups == 0 || tsBufGetLastGroupInfo(pTSBuf)->info.id != id) { writeDataToDisk(pTSBuf); shrinkBuffer(ptsData);