提交 41587221 编写于 作者: A Alex Duan

[TS-754]<fix> query have no data file crash

上级 c7a4c3e1
...@@ -7278,14 +7278,16 @@ int32_t doDumpQueryResult(SQInfo *pQInfo, char *data) { ...@@ -7278,14 +7278,16 @@ int32_t doDumpQueryResult(SQInfo *pQInfo, char *data) {
assert(0); assert(0);
} }
// dump error info
if (s <= (sizeof(STSBufFileHeader) + sizeof(STSGroupBlockInfo) + 6 * sizeof(int32_t))) {
qDump(data, s);
assert(0);
}
fclose(f); fclose(f);
*(FILE **)pColInfoData->pData = NULL; *(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 // all data returned, set query over
......
...@@ -447,6 +447,12 @@ void tsBufAppend(STSBuf* pTSBuf, int32_t id, tVariant* tag, const char* pData, i ...@@ -447,6 +447,12 @@ void tsBufAppend(STSBuf* pTSBuf, int32_t id, tVariant* tag, const char* pData, i
STSGroupBlockInfoEx* pBlockInfo = NULL; STSGroupBlockInfoEx* pBlockInfo = NULL;
STSList* ptsData = &pTSBuf->tsData; 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) { if (pTSBuf->numOfGroups == 0 || tsBufGetLastGroupInfo(pTSBuf)->info.id != id) {
writeDataToDisk(pTSBuf); writeDataToDisk(pTSBuf);
shrinkBuffer(ptsData); shrinkBuffer(ptsData);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册