fix: block data shrink issue

This commit is contained in:
dapan1121 2024-09-11 09:42:59 +08:00
parent dc983b9a39
commit 7d5ef92bb2
1 changed files with 17 additions and 13 deletions

View File

@ -3397,11 +3397,15 @@ int32_t blockDataGetSortedRows(SSDataBlock* pDataBlock, SArray* pOrderInfo) {
}
void blockDataCheck(const SSDataBlock* pDataBlock, bool forceChk) {
return;
if (NULL == pDataBlock || pDataBlock->info.rows == 0) {
return;
}
ASSERT(pDataBlock->info.rows > 0);
#define BLOCK_DATA_CHECK_TRESSA(o) ;
BLOCK_DATA_CHECK_TRESSA(pDataBlock->info.rows > 0);
if (!pDataBlock->info.dataLoad && !forceChk) {
return;
@ -3419,35 +3423,35 @@ void blockDataCheck(const SSDataBlock* pDataBlock, bool forceChk) {
checkRows = pDataBlock->info.rows;
if (isVarType) {
ASSERT(pCol->varmeta.offset);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.offset);
} else {
ASSERT(pCol->nullbitmap);
BLOCK_DATA_CHECK_TRESSA(pCol->nullbitmap);
}
nextPos = 0;
for (int64_t r = 0; r < checkRows; ++r) {
if (!colDataIsNull_s(pCol, r)) {
ASSERT(pCol->pData);
ASSERT(pCol->varmeta.length <= pCol->varmeta.allocLen);
BLOCK_DATA_CHECK_TRESSA(pCol->pData);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.length <= pCol->varmeta.allocLen);
if (isVarType) {
ASSERT(pCol->varmeta.allocLen > 0);
ASSERT(pCol->varmeta.offset[r] < pCol->varmeta.length);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.allocLen > 0);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.offset[r] < pCol->varmeta.length);
if (pCol->reassigned) {
ASSERT(pCol->varmeta.offset[r] >= 0);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.offset[r] >= 0);
} else {
ASSERT(pCol->varmeta.offset[r] == nextPos);
BLOCK_DATA_CHECK_TRESSA(pCol->varmeta.offset[r] == nextPos);
}
colLen = varDataTLen(pCol->pData + pCol->varmeta.offset[r]);
ASSERT(colLen >= VARSTR_HEADER_SIZE);
ASSERT(colLen <= pCol->info.bytes);
BLOCK_DATA_CHECK_TRESSA(colLen >= VARSTR_HEADER_SIZE);
BLOCK_DATA_CHECK_TRESSA(colLen <= pCol->info.bytes);
if (pCol->reassigned) {
ASSERT((pCol->varmeta.offset[r] + colLen) <= pCol->varmeta.length);
BLOCK_DATA_CHECK_TRESSA((pCol->varmeta.offset[r] + colLen) <= pCol->varmeta.length);
} else {
nextPos += colLen;
ASSERT(nextPos <= pCol->varmeta.length);
BLOCK_DATA_CHECK_TRESSA(nextPos <= pCol->varmeta.length);
}
typeValue = *(char*)(pCol->pData + pCol->varmeta.offset[r] + colLen - 1);