提交 f6a262ee 编写于 作者: H Haojun Liao

fix(query): fix invalid write.

上级 38df6316
......@@ -694,10 +694,12 @@ static int32_t doLoadBlockIndex(STsdbReader* pReader, SDataFReader* pFileReader,
continue;
}
if (pBlockIdx->uid == pList->tableUidList[j]) {
i += 1;
if (pBlockIdx->uid > pList->tableUidList[j]) {
j += 1;
continue;
}
if (pBlockIdx->uid == pList->tableUidList[j]) {
// this block belongs to a table that is not queried.
void* p = taosHashGet(pReader->status.pTableMap, &pBlockIdx->uid, sizeof(uint64_t));
if (p == NULL) {
......@@ -711,9 +713,8 @@ static int32_t doLoadBlockIndex(STsdbReader* pReader, SDataFReader* pFileReader,
}
taosArrayPush(pIndexList, pBlockIdx);
}
if (pBlockIdx->uid > pList->tableUidList[j]) {
i += 1;
j += 1;
}
}
......
......@@ -127,23 +127,29 @@ void initGroupedResultInfo(SGroupResInfo* pGroupResInfo, SSHashObj* pHashmap, in
pGroupResInfo->pRows = taosArrayInit(size, POINTER_BYTES);
size_t keyLen = 0;
int32_t num = 0, iter = 0, itemSize = 0;
int32_t iter = 0;
int32_t bufLen = 0, offset = 0;
// todo move away and record this during create window
while ((pData = tSimpleHashIterate(pHashmap, pData, &iter)) != NULL) {
void* key = tSimpleHashGetKey(pData, &keyLen);
/*void* key = */tSimpleHashGetKey(pData, &keyLen);
bufLen += keyLen + sizeof(SResultRowPosition);
}
if (pGroupResInfo->pBuf == NULL) {
itemSize = keyLen + sizeof(SResultRowPosition);
pGroupResInfo->pBuf = taosMemoryMalloc(size * itemSize);
}
pGroupResInfo->pBuf = taosMemoryMalloc(bufLen);
SResKeyPos* p = (SResKeyPos*)(pGroupResInfo->pBuf + num * itemSize);
iter = 0;
while ((pData = tSimpleHashIterate(pHashmap, pData, &iter)) != NULL) {
void* key = tSimpleHashGetKey(pData, &keyLen);
SResKeyPos* p = (SResKeyPos*) (pGroupResInfo->pBuf + offset);
p->groupId = *(uint64_t*)key;
p->pos = *(SResultRowPosition*)pData;
memcpy(p->key, (char*)key + sizeof(uint64_t), keyLen - sizeof(uint64_t));
taosArrayPush(pGroupResInfo->pRows, &p);
num += 1;
offset += keyLen + sizeof(struct SResultRowPosition);
}
if (order == TSDB_ORDER_ASC || order == TSDB_ORDER_DESC) {
......
......@@ -165,7 +165,7 @@ if $data00 != 10 then
return -1
endi
sql select last_row(*) from st1 group by a
sql select last_row(*) from st1 group by a order by a desc
if $rows != 2 then
return -1
endi
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册