refact more code
This commit is contained in:
parent
89e493b56b
commit
b06e1b8236
|
@ -210,14 +210,6 @@ int32_t tsdbFidLevel(int32_t fid, STsdbKeepCfg *pKeepCfg, int64_t nowSec);
|
|||
int32_t tsdbBuildDeleteSkyline(SArray *aDelData, int32_t sidx, int32_t eidx, SArray *aSkyline);
|
||||
int32_t tPutColumnDataAgg(SBuffer *buffer, SColumnDataAgg *pColAgg);
|
||||
int32_t tGetColumnDataAgg(SBufferReader *br, SColumnDataAgg *pColAgg);
|
||||
int32_t tsdbCmprData(uint8_t *pIn, int32_t szIn, int8_t type, int8_t cmprAlg, uint8_t **ppOut, int32_t nOut,
|
||||
int32_t *szOut, uint8_t **ppBuf);
|
||||
int32_t tsdbDecmprData(uint8_t *pIn, int32_t szIn, int8_t type, int8_t cmprAlg, uint8_t **ppOut, int32_t szOut,
|
||||
uint8_t **ppBuf);
|
||||
int32_t tsdbCmprColData(SColData *pColData, int8_t cmprAlg, SBlockCol *pBlockCol, uint8_t **ppOut, int32_t nOut,
|
||||
uint8_t **ppBuf);
|
||||
int32_t tsdbDecmprColData(uint8_t *pIn, SBlockCol *pBlockCol, int8_t cmprAlg, int32_t nVal, SColData *pColData,
|
||||
uint8_t **ppBuf);
|
||||
int32_t tRowInfoCmprFn(const void *p1, const void *p2);
|
||||
// tsdbMemTable ==============================================================================================
|
||||
// SMemTable
|
||||
|
|
|
@ -1741,160 +1741,3 @@ int32_t tGetColumnDataAgg(SBufferReader *br, SColumnDataAgg *pColAgg) {
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t tsdbCmprData(uint8_t *pIn, int32_t szIn, int8_t type, int8_t cmprAlg, uint8_t **ppOut, int32_t nOut,
|
||||
int32_t *szOut, uint8_t **ppBuf) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(szIn > 0 && ppOut);
|
||||
|
||||
if (cmprAlg == NO_COMPRESSION) {
|
||||
code = tRealloc(ppOut, nOut + szIn);
|
||||
if (code) goto _exit;
|
||||
|
||||
memcpy(*ppOut + nOut, pIn, szIn);
|
||||
*szOut = szIn;
|
||||
} else {
|
||||
int32_t size = szIn + COMP_OVERFLOW_BYTES;
|
||||
|
||||
code = tRealloc(ppOut, nOut + size);
|
||||
if (code) goto _exit;
|
||||
|
||||
if (cmprAlg == TWO_STAGE_COMP) {
|
||||
ASSERT(ppBuf);
|
||||
code = tRealloc(ppBuf, size);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
|
||||
*szOut =
|
||||
tDataTypes[type].compFunc(pIn, szIn, szIn / tDataTypes[type].bytes, *ppOut + nOut, size, cmprAlg, *ppBuf, size);
|
||||
if (*szOut <= 0) {
|
||||
code = TSDB_CODE_COMPRESS_ERROR;
|
||||
goto _exit;
|
||||
}
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tsdbDecmprData(uint8_t *pIn, int32_t szIn, int8_t type, int8_t cmprAlg, uint8_t **ppOut, int32_t szOut,
|
||||
uint8_t **ppBuf) {
|
||||
int32_t code = 0;
|
||||
|
||||
code = tRealloc(ppOut, szOut);
|
||||
if (code) goto _exit;
|
||||
|
||||
if (cmprAlg == NO_COMPRESSION) {
|
||||
ASSERT(szIn == szOut);
|
||||
memcpy(*ppOut, pIn, szOut);
|
||||
} else {
|
||||
if (cmprAlg == TWO_STAGE_COMP) {
|
||||
code = tRealloc(ppBuf, szOut + COMP_OVERFLOW_BYTES);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
|
||||
int32_t size = tDataTypes[type].decompFunc(pIn, szIn, szOut / tDataTypes[type].bytes, *ppOut, szOut, cmprAlg,
|
||||
*ppBuf, szOut + COMP_OVERFLOW_BYTES);
|
||||
if (size <= 0) {
|
||||
code = TSDB_CODE_COMPRESS_ERROR;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
ASSERT(size == szOut);
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tsdbCmprColData(SColData *pColData, int8_t cmprAlg, SBlockCol *pBlockCol, uint8_t **ppOut, int32_t nOut,
|
||||
uint8_t **ppBuf) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(pColData->flag && (pColData->flag != HAS_NONE) && (pColData->flag != HAS_NULL));
|
||||
|
||||
pBlockCol->szBitmap = 0;
|
||||
pBlockCol->szOffset = 0;
|
||||
pBlockCol->szValue = 0;
|
||||
|
||||
int32_t size = 0;
|
||||
// bitmap
|
||||
if (pColData->flag != HAS_VALUE) {
|
||||
int32_t szBitMap;
|
||||
if (pColData->flag == (HAS_VALUE | HAS_NULL | HAS_NONE)) {
|
||||
szBitMap = BIT2_SIZE(pColData->nVal);
|
||||
} else {
|
||||
szBitMap = BIT1_SIZE(pColData->nVal);
|
||||
}
|
||||
|
||||
code = tsdbCmprData(pColData->pBitMap, szBitMap, TSDB_DATA_TYPE_TINYINT, cmprAlg, ppOut, nOut + size,
|
||||
&pBlockCol->szBitmap, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
size += pBlockCol->szBitmap;
|
||||
|
||||
// offset
|
||||
if (IS_VAR_DATA_TYPE(pColData->type) && pColData->flag != (HAS_NULL | HAS_NONE)) {
|
||||
code = tsdbCmprData((uint8_t *)pColData->aOffset, sizeof(int32_t) * pColData->nVal, TSDB_DATA_TYPE_INT, cmprAlg,
|
||||
ppOut, nOut + size, &pBlockCol->szOffset, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
size += pBlockCol->szOffset;
|
||||
|
||||
// value
|
||||
if ((pColData->flag != (HAS_NULL | HAS_NONE)) && pColData->nData) {
|
||||
code = tsdbCmprData((uint8_t *)pColData->pData, pColData->nData, pColData->type, cmprAlg, ppOut, nOut + size,
|
||||
&pBlockCol->szValue, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
size += pBlockCol->szValue;
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tsdbDecmprColData(uint8_t *pIn, SBlockCol *pBlockCol, int8_t cmprAlg, int32_t nVal, SColData *pColData,
|
||||
uint8_t **ppBuf) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(pColData->cid == pBlockCol->cid);
|
||||
ASSERT(pColData->type == pBlockCol->type);
|
||||
pColData->cflag = pBlockCol->cflag;
|
||||
pColData->flag = pBlockCol->flag;
|
||||
pColData->nVal = nVal;
|
||||
pColData->nData = pBlockCol->szOrigin;
|
||||
|
||||
uint8_t *p = pIn;
|
||||
// bitmap
|
||||
if (pBlockCol->szBitmap) {
|
||||
int32_t szBitMap;
|
||||
if (pColData->flag == (HAS_VALUE | HAS_NULL | HAS_NONE)) {
|
||||
szBitMap = BIT2_SIZE(pColData->nVal);
|
||||
} else {
|
||||
szBitMap = BIT1_SIZE(pColData->nVal);
|
||||
}
|
||||
|
||||
code = tsdbDecmprData(p, pBlockCol->szBitmap, TSDB_DATA_TYPE_TINYINT, cmprAlg, &pColData->pBitMap, szBitMap, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
p += pBlockCol->szBitmap;
|
||||
|
||||
// offset
|
||||
if (pBlockCol->szOffset) {
|
||||
code = tsdbDecmprData(p, pBlockCol->szOffset, TSDB_DATA_TYPE_INT, cmprAlg, (uint8_t **)&pColData->aOffset,
|
||||
sizeof(int32_t) * pColData->nVal, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
p += pBlockCol->szOffset;
|
||||
|
||||
// value
|
||||
if (pBlockCol->szValue) {
|
||||
code = tsdbDecmprData(p, pBlockCol->szValue, pColData->type, cmprAlg, &pColData->pData, pColData->nData, ppBuf);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
p += pBlockCol->szValue;
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue