diff --git a/include/common/tdataformat.h b/include/common/tdataformat.h index 31dc7d801f..2797042f9a 100644 --- a/include/common/tdataformat.h +++ b/include/common/tdataformat.h @@ -110,8 +110,8 @@ int32_t tValueColumnClear(SValueColumn *valCol); int32_t tValueColumnAppend(SValueColumn *valCol, const SValue *value); int32_t tValueColumnGet(SValueColumn *valCol, int32_t idx, SValue *value); int32_t tValueColumnCompress(SValueColumn *valCol, SValueColumnCompressInfo *info, SBuffer *output, SBuffer *assist); -int32_t tValueColumnDecompress(void *input, int32_t inputSize, const SValueColumnCompressInfo *compressInfo, - SValueColumn *valCol, SBuffer *buffer); +int32_t tValueColumnDecompress(void *input, const SValueColumnCompressInfo *compressInfo, SValueColumn *valCol, + SBuffer *buffer); int32_t tValueColumnCompressInfoEncode(const SValueColumnCompressInfo *compressInfo, SBuffer *buffer); int32_t tValueColumnCompressInfoDecode(SBufferReader *reader, SValueColumnCompressInfo *compressInfo); int32_t tValueCompare(const SValue *tv1, const SValue *tv2); diff --git a/source/common/src/tdataformat.c b/source/common/src/tdataformat.c index c057305508..a34b420ad3 100644 --- a/source/common/src/tdataformat.c +++ b/source/common/src/tdataformat.c @@ -4072,21 +4072,11 @@ int32_t tValueColumnCompress(SValueColumn *valCol, SValueColumnCompressInfo *inf return 0; } -int32_t tValueColumnDecompress(void *input, int32_t inputSize, const SValueColumnCompressInfo *info, - SValueColumn *valCol, SBuffer *buffer) { +int32_t tValueColumnDecompress(void *input, const SValueColumnCompressInfo *info, SValueColumn *valCol, + SBuffer *assist) { int32_t code; - SBuffer local; - char *inputStart = input; - - ASSERT(inputSize == info->offsetCompressedSize + info->dataCompressedSize); tValueColumnClear(valCol); - tBufferInit(&local); - - if (buffer == NULL) { - buffer = &local; - } - valCol->type = info->type; // offset if (IS_VAR_DATA_TYPE(valCol->type)) { @@ -4099,19 +4089,10 @@ int32_t tValueColumnDecompress(void *input, int32_t inputSize, const SValueColum .compressedSize = info->offsetCompressedSize, }; - code = tBufferEnsureCapacity(&valCol->offsets, cinfo.originalSize); + code = tDecompressDataToBuffer(input, &cinfo, &valCol->offsets, assist); if (code) { - tBufferDestroy(&local); return code; } - - code = tDecompressData(inputStart, &cinfo, valCol->offsets.data, cinfo.originalSize, buffer); - if (code) { - tBufferDestroy(&local); - return code; - } - valCol->offsets.size = cinfo.originalSize; - inputStart += cinfo.compressedSize; } else { valCol->numOfValues = info->dataOriginalSize / tDataTypes[valCol->type].bytes; } @@ -4124,21 +4105,11 @@ int32_t tValueColumnDecompress(void *input, int32_t inputSize, const SValueColum .compressedSize = info->dataCompressedSize, }; - code = tBufferEnsureCapacity(&valCol->data, cinfo.originalSize); + code = tDecompressDataToBuffer((char *)input + info->offsetCompressedSize, &cinfo, &valCol->data, assist); if (code) { - tBufferDestroy(&local); return code; } - code = tDecompressData(inputStart, &cinfo, valCol->data.data, cinfo.originalSize, buffer); - if (code) { - tBufferDestroy(&local); - return code; - } - valCol->data.size = cinfo.originalSize; - inputStart += cinfo.compressedSize; - - tBufferDestroy(&local); return 0; } diff --git a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c index 9bdbfae968..d0bf0587af 100644 --- a/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbDataFileRW.c @@ -244,8 +244,8 @@ int32_t tsdbDataFileReadBrinBlock(SDataFileReader *reader, const SBrinBlk *brinB SValueColumnCompressInfo *info = firstInfos + i; int32_t totalCompressedSize = info->offsetCompressedSize + info->dataCompressedSize; - code = tValueColumnDecompress(tBufferGetDataAt(br.buffer, br.offset), totalCompressedSize, info, - brinBlock->firstKeyPKs + i, reader->buffers + 1); + code = tValueColumnDecompress(tBufferGetDataAt(br.buffer, br.offset), info, brinBlock->firstKeyPKs + i, + reader->buffers + 1); TSDB_CHECK_CODE(code, lino, _exit); br.offset += totalCompressedSize; } @@ -254,8 +254,8 @@ int32_t tsdbDataFileReadBrinBlock(SDataFileReader *reader, const SBrinBlk *brinB SValueColumnCompressInfo *info = lastInfos + i; int32_t totalCompressedSize = info->offsetCompressedSize + info->dataCompressedSize; - code = tValueColumnDecompress(tBufferGetDataAt(br.buffer, br.offset), totalCompressedSize, info, - brinBlock->lastKeyPKs + i, reader->buffers + 1); + code = tValueColumnDecompress(tBufferGetDataAt(br.buffer, br.offset), info, brinBlock->lastKeyPKs + i, + reader->buffers + 1); TSDB_CHECK_CODE(code, lino, _exit); br.offset += totalCompressedSize; } diff --git a/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c b/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c index 2e29911683..2c2b3c8f82 100644 --- a/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c +++ b/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c @@ -373,15 +373,15 @@ int32_t tsdbSttFileReadStatisBlock(SSttFileReader *reader, const SStatisBlk *sta // decode value columns for (int32_t i = 0; i < statisBlk->numOfPKs; i++) { - code = tValueColumnDecompress(tBufferGetDataAt(&reader->buffers[0], size), firstKeyInfos[i].dataCompressedSize, - &firstKeyInfos[i], &statisBlock->firstKeyPKs[i], &reader->buffers[1]); + code = tValueColumnDecompress(tBufferGetDataAt(&reader->buffers[0], size), &firstKeyInfos[i], + &statisBlock->firstKeyPKs[i], &reader->buffers[1]); TSDB_CHECK_CODE(code, lino, _exit); size += firstKeyInfos[i].dataCompressedSize; } for (int32_t i = 0; i < statisBlk->numOfPKs; i++) { - code = tValueColumnDecompress(tBufferGetDataAt(&reader->buffers[0], size), lastKeyInfos[i].dataCompressedSize, - &lastKeyInfos[i], &statisBlock->lastKeyPKs[i], &reader->buffers[1]); + code = tValueColumnDecompress(tBufferGetDataAt(&reader->buffers[0], size), &lastKeyInfos[i], + &statisBlock->lastKeyPKs[i], &reader->buffers[1]); TSDB_CHECK_CODE(code, lino, _exit); size += lastKeyInfos[i].dataCompressedSize; }