fix(tsdb):add placeholder if no rowkeys exist.

This commit is contained in:
Haojun Liao 2024-04-12 22:16:48 +08:00
parent 528497944c
commit 27af9de628
1 changed files with 16 additions and 33 deletions

View File

@ -392,24 +392,19 @@ static int32_t loadSttStatisticsBlockData(SSttFileReader *pSttFileReader, SSttBl
} }
if (pStatisBlkArray->data[k].maxTbid.suid == suid) { if (pStatisBlkArray->data[k].maxTbid.suid == suid) {
int32_t size = rows - i;
int32_t offset = i * sizeof(int64_t);
tsdbInfo("-----before index:%d, uid:%" PRId64 " add record, numInUid:%d, hasPk:%d, numInPk:%d, rows:%d", i, suid, taosArrayAddBatch(pBlockLoadInfo->info.pUid, tBufferGetDataAt(&block.uids, offset), size);
(int)taosArrayGetSize(pBlockLoadInfo->info.pUid), block.numOfPKs, taosArrayAddBatch(pBlockLoadInfo->info.pFirstTs, tBufferGetDataAt(&block.firstKeyTimestamps, offset), size);
(int)taosArrayGetSize(pBlockLoadInfo->info.pFirstKey), rows-i); taosArrayAddBatch(pBlockLoadInfo->info.pLastTs, tBufferGetDataAt(&block.lastKeyTimestamps, offset), size);
taosArrayAddBatch(pBlockLoadInfo->info.pCount, tBufferGetDataAt(&block.counts, offset), size);
taosArrayAddBatch(pBlockLoadInfo->info.pUid, tBufferGetDataAt(&block.uids, i * sizeof(int64_t)), rows - i);
taosArrayAddBatch(pBlockLoadInfo->info.pFirstTs,
tBufferGetDataAt(&block.firstKeyTimestamps, i * sizeof(int64_t)), rows - i);
taosArrayAddBatch(pBlockLoadInfo->info.pLastTs, tBufferGetDataAt(&block.lastKeyTimestamps, i * sizeof(int64_t)),
rows - i);
taosArrayAddBatch(pBlockLoadInfo->info.pCount, tBufferGetDataAt(&block.counts, i * sizeof(int64_t)), rows - i);
if (block.numOfPKs > 0) { if (block.numOfPKs > 0) {
SValue vFirst = {0}, vLast = {0}; SValue vFirst = {0}, vLast = {0};
for (int32_t f = i; f < rows; ++f) { for (int32_t f = i; f < rows; ++f) {
int32_t code = tValueColumnGet(&block.firstKeyPKs[0], f, &vFirst); int32_t code = tValueColumnGet(&block.firstKeyPKs[0], f, &vFirst);
if (code) { if (code) {
ASSERT(0);
break; break;
} }
@ -419,21 +414,18 @@ static int32_t loadSttStatisticsBlockData(SSttFileReader *pSttFileReader, SSttBl
// todo add api to clone the original data // todo add api to clone the original data
code = tValueColumnGet(&block.lastKeyPKs[0], f, &vLast); code = tValueColumnGet(&block.lastKeyPKs[0], f, &vLast);
if (code) { if (code) {
ASSERT(0);
break; break;
} }
tValueDupPayload(&vLast); tValueDupPayload(&vLast);
taosArrayPush(pBlockLoadInfo->info.pLastKey, &vLast); taosArrayPush(pBlockLoadInfo->info.pLastKey, &vLast);
} }
} } else {
SValue vFirst = {0};
tsdbInfo("-----after index:%d, uid:%" PRId64 " add record, numInUid:%d, hasPk:%d, numInPk:%d", i, suid, for(int32_t j = 0; j < size; ++j) {
(int)taosArrayGetSize(pBlockLoadInfo->info.pUid), block.numOfPKs, taosArrayPush(pBlockLoadInfo->info.pFirstKey, &vFirst);
(int)taosArrayGetSize(pBlockLoadInfo->info.pFirstKey)); taosArrayPush(pBlockLoadInfo->info.pLastKey, &vFirst);
}
if (block.numOfPKs > 0) {
ASSERT(taosArrayGetSize(pBlockLoadInfo->info.pLastKey) == taosArrayGetSize(pBlockLoadInfo->info.pFirstTs));
} }
} else { } else {
STbStatisRecord record = {0}; STbStatisRecord record = {0};
@ -444,10 +436,6 @@ static int32_t loadSttStatisticsBlockData(SSttFileReader *pSttFileReader, SSttBl
break; break;
} }
tsdbInfo("before index:%d, uid:%" PRId64 " add record, numInUid:%d, hasPk:%d, numInPk:%d", i, suid,
(int)taosArrayGetSize(pBlockLoadInfo->info.pUid), record.firstKey.numOfPKs,
(int)taosArrayGetSize(pBlockLoadInfo->info.pFirstKey));
taosArrayPush(pBlockLoadInfo->info.pUid, &record.uid); taosArrayPush(pBlockLoadInfo->info.pUid, &record.uid);
taosArrayPush(pBlockLoadInfo->info.pCount, &record.count); taosArrayPush(pBlockLoadInfo->info.pCount, &record.count);
@ -457,23 +445,18 @@ static int32_t loadSttStatisticsBlockData(SSttFileReader *pSttFileReader, SSttBl
if (record.firstKey.numOfPKs > 0) { if (record.firstKey.numOfPKs > 0) {
SValue s = record.firstKey.pks[0]; SValue s = record.firstKey.pks[0];
tValueDupPayload(&s); tValueDupPayload(&s);
taosArrayPush(pBlockLoadInfo->info.pFirstKey, &s); taosArrayPush(pBlockLoadInfo->info.pFirstKey, &s);
s = record.lastKey.pks[0]; s = record.lastKey.pks[0];
tValueDupPayload(&s); tValueDupPayload(&s);
taosArrayPush(pBlockLoadInfo->info.pLastKey, &s); taosArrayPush(pBlockLoadInfo->info.pLastKey, &s);
} else {
SValue v = {0};
taosArrayPush(pBlockLoadInfo->info.pFirstKey, &v);
taosArrayPush(pBlockLoadInfo->info.pLastKey, &v);
} }
i += 1; i += 1;
tsdbInfo("after index:%d, uid:%" PRId64 " add record, numInUid:%d, hasPk:%d, numInPk:%d", i, suid,
(int)taosArrayGetSize(pBlockLoadInfo->info.pUid), record.firstKey.numOfPKs,
(int)taosArrayGetSize(pBlockLoadInfo->info.pFirstKey));
if (record.firstKey.numOfPKs > 0) {
ASSERT(taosArrayGetSize(pBlockLoadInfo->info.pLastKey) == taosArrayGetSize(pBlockLoadInfo->info.pFirstTs));
}
} }
} }
} }