fix: varmeta length reset

This commit is contained in:
factosea 2024-02-29 10:44:25 +08:00
parent fc4caa23b5
commit 551a65e161
1 changed files with 10 additions and 8 deletions

View File

@ -1688,17 +1688,19 @@ int32_t blockDataTrimFirstRows(SSDataBlock* pBlock, size_t n) {
}
static void colDataKeepFirstNRows(SColumnInfoData* pColInfoData, size_t n, size_t total) {
if (n >= total || n == 0) return;
if (IS_VAR_DATA_TYPE(pColInfoData->info.type)) {
int32_t newLen = pColInfoData->varmeta.offset[n - 1];
if (newLen != -1) {
if (pColInfoData->info.type == TSDB_DATA_TYPE_JSON) {
newLen += getJsonValueLen(pColInfoData->pData + newLen);
} else {
newLen += varDataTLen(pColInfoData->pData + newLen);
int32_t newLen = -1;
for (int i = n; i >= 0; --i) {
if (pColInfoData->varmeta.offset[i] != -1) {
newLen = pColInfoData->varmeta.offset[i];
break;
}
} else {
newLen = pColInfoData->varmeta.length;
}
if(-1 == newLen) {
return;
}
pColInfoData->varmeta.length = newLen;
// pColInfoData->varmeta.length = colDataMoveVarData(pColInfoData, 0, n);
memset(&pColInfoData->varmeta.offset[n], 0, total - n);