more code
This commit is contained in:
parent
b33074dcbb
commit
050d1bc002
|
@ -1378,218 +1378,6 @@ SColData *tBlockDataGetColData(SBlockData *pBlockData, int16_t cid) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if 0
|
||||
int32_t tCmprBlockData(SBlockData *pBlockData, int8_t cmprAlg, uint8_t **ppOut, int32_t *szOut, uint8_t *aBuf[],
|
||||
int32_t aBufSize[]) {
|
||||
int32_t code = 0;
|
||||
SBlockCol primaryKeyBlockCols[TD_MAX_PK_COLS];
|
||||
SDiskDataHdr hdr = {
|
||||
.delimiter = TSDB_FILE_DLMT,
|
||||
.fmtVer = 0,
|
||||
.suid = pBlockData->suid,
|
||||
.uid = pBlockData->uid,
|
||||
.nRow = pBlockData->nRow,
|
||||
.cmprAlg = cmprAlg,
|
||||
};
|
||||
|
||||
// encode =================
|
||||
// columns AND SBlockCol
|
||||
aBufSize[0] = 0;
|
||||
for (int32_t iColData = 0; iColData < pBlockData->nColData; iColData++) {
|
||||
SColData *pColData = tBlockDataGetColDataByIdx(pBlockData, iColData);
|
||||
|
||||
ASSERT(pColData->flag);
|
||||
|
||||
if (pColData->flag == HAS_NONE) continue;
|
||||
if (pColData->cflag & COL_IS_KEY) {
|
||||
ASSERT(pColData->flag == HAS_VALUE);
|
||||
hdr.fmtVer = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
SBlockCol blockCol = {.cid = pColData->cid,
|
||||
.type = pColData->type,
|
||||
.cflag = pColData->cflag,
|
||||
.flag = pColData->flag,
|
||||
.szOrigin = pColData->nData};
|
||||
|
||||
if (pColData->flag != HAS_NULL) {
|
||||
code = tsdbCmprColData(pColData, cmprAlg, &blockCol, &aBuf[0], aBufSize[0], &aBuf[2]);
|
||||
if (code) goto _exit;
|
||||
|
||||
blockCol.offset = aBufSize[0];
|
||||
aBufSize[0] = aBufSize[0] + blockCol.szBitmap + blockCol.szOffset + blockCol.szValue;
|
||||
}
|
||||
|
||||
code = tRealloc(&aBuf[1], hdr.szBlkCol + tPutBlockCol(NULL, &blockCol));
|
||||
if (code) goto _exit;
|
||||
hdr.szBlkCol += tPutBlockCol(aBuf[1] + hdr.szBlkCol, &blockCol);
|
||||
}
|
||||
|
||||
// SBlockCol
|
||||
aBufSize[1] = hdr.szBlkCol;
|
||||
|
||||
aBufSize[2] = 0;
|
||||
// uid
|
||||
if (pBlockData->uid == 0) {
|
||||
code = tsdbCmprData((uint8_t *)pBlockData->aUid, sizeof(int64_t) * pBlockData->nRow, TSDB_DATA_TYPE_BIGINT, cmprAlg,
|
||||
&aBuf[2], aBufSize[2], &hdr.szUid, &aBuf[3]);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
aBufSize[2] += hdr.szUid;
|
||||
|
||||
// version
|
||||
code = tsdbCmprData((uint8_t *)pBlockData->aVersion, sizeof(int64_t) * pBlockData->nRow, TSDB_DATA_TYPE_BIGINT,
|
||||
cmprAlg, &aBuf[2], aBufSize[2], &hdr.szVer, &aBuf[3]);
|
||||
if (code) goto _exit;
|
||||
aBufSize[2] += hdr.szVer;
|
||||
|
||||
// ts
|
||||
code = tsdbCmprData((uint8_t *)pBlockData->aTSKEY, sizeof(TSKEY) * pBlockData->nRow, TSDB_DATA_TYPE_TIMESTAMP,
|
||||
cmprAlg, &aBuf[2], aBufSize[2], &hdr.szKey, &aBuf[3]);
|
||||
if (code) goto _exit;
|
||||
aBufSize[2] += hdr.szKey;
|
||||
|
||||
// primary key columns
|
||||
if (hdr.fmtVer == 1) {
|
||||
for (int32_t iColData = 0; iColData < pBlockData->nColData; iColData++) {
|
||||
SColData *pColData = tBlockDataGetColDataByIdx(pBlockData, iColData);
|
||||
if ((pColData->cflag & COL_IS_KEY) == 0) break;
|
||||
|
||||
SBlockCol *pBlockCol = &primaryKeyBlockCols[hdr.numOfPKs];
|
||||
pBlockCol->cid = pColData->cid;
|
||||
pBlockCol->type = pColData->type;
|
||||
pBlockCol->cflag = pColData->cflag;
|
||||
pBlockCol->flag = pColData->flag;
|
||||
pBlockCol->szOrigin = pColData->nData;
|
||||
|
||||
code = tsdbCmprColData(pColData, cmprAlg, pBlockCol, &aBuf[2], aBufSize[2], &aBuf[3]);
|
||||
if (code) goto _exit;
|
||||
aBufSize[2] = aBufSize[2] + pBlockCol->szBitmap + pBlockCol->szOffset + pBlockCol->szValue;
|
||||
|
||||
hdr.numOfPKs++;
|
||||
}
|
||||
}
|
||||
|
||||
// hdr
|
||||
aBufSize[3] = tPutDiskDataHdr(NULL, &hdr);
|
||||
code = tRealloc(&aBuf[3], aBufSize[3]);
|
||||
if (code) goto _exit;
|
||||
tPutDiskDataHdr(aBuf[3], &hdr);
|
||||
for (int32_t i = 0; i < hdr.numOfPKs; i++) {
|
||||
code = tRealloc(&aBuf[3], aBufSize[3] + tPutBlockCol(NULL, &primaryKeyBlockCols[i]));
|
||||
if (code) goto _exit;
|
||||
aBufSize[3] += tPutBlockCol(aBuf[3] + aBufSize[3], &primaryKeyBlockCols[i]);
|
||||
}
|
||||
|
||||
// aggragate
|
||||
if (ppOut) {
|
||||
*szOut = aBufSize[0] + aBufSize[1] + aBufSize[2] + aBufSize[3];
|
||||
code = tRealloc(ppOut, *szOut);
|
||||
if (code) goto _exit;
|
||||
|
||||
memcpy(*ppOut, aBuf[3], aBufSize[3]);
|
||||
memcpy(*ppOut + aBufSize[3], aBuf[2], aBufSize[2]);
|
||||
if (aBufSize[1]) {
|
||||
memcpy(*ppOut + aBufSize[3] + aBufSize[2], aBuf[1], aBufSize[1]);
|
||||
}
|
||||
if (aBufSize[0]) {
|
||||
memcpy(*ppOut + aBufSize[3] + aBufSize[2] + aBufSize[1], aBuf[0], aBufSize[0]);
|
||||
}
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tDecmprBlockData(uint8_t *pIn, int32_t szIn, SBlockData *pBlockData, uint8_t *aBuf[]) {
|
||||
int32_t code = 0;
|
||||
|
||||
tBlockDataReset(pBlockData);
|
||||
|
||||
int32_t n = 0;
|
||||
SDiskDataHdr hdr = {0};
|
||||
SBlockCol primaryKeyBlockCols[TD_MAX_PK_COLS];
|
||||
|
||||
// SDiskDataHdr
|
||||
n += tGetDiskDataHdr(pIn + n, &hdr);
|
||||
ASSERT(hdr.delimiter == TSDB_FILE_DLMT);
|
||||
|
||||
pBlockData->suid = hdr.suid;
|
||||
pBlockData->uid = hdr.uid;
|
||||
pBlockData->nRow = hdr.nRow;
|
||||
|
||||
// primary SBlockCol
|
||||
for (int32_t i = 0; i < hdr.numOfPKs; i++) {
|
||||
n += tGetBlockCol(pIn + n, &primaryKeyBlockCols[i]);
|
||||
}
|
||||
|
||||
// uid
|
||||
if (hdr.uid == 0) {
|
||||
ASSERT(hdr.szUid);
|
||||
code = tsdbDecmprData(pIn + n, hdr.szUid, TSDB_DATA_TYPE_BIGINT, hdr.cmprAlg, (uint8_t **)&pBlockData->aUid,
|
||||
sizeof(int64_t) * hdr.nRow, &aBuf[0]);
|
||||
if (code) goto _exit;
|
||||
} else {
|
||||
ASSERT(!hdr.szUid);
|
||||
}
|
||||
n += hdr.szUid;
|
||||
|
||||
// version
|
||||
code = tsdbDecmprData(pIn + n, hdr.szVer, TSDB_DATA_TYPE_BIGINT, hdr.cmprAlg, (uint8_t **)&pBlockData->aVersion,
|
||||
sizeof(int64_t) * hdr.nRow, &aBuf[0]);
|
||||
if (code) goto _exit;
|
||||
n += hdr.szVer;
|
||||
|
||||
// TSKEY
|
||||
code = tsdbDecmprData(pIn + n, hdr.szKey, TSDB_DATA_TYPE_TIMESTAMP, hdr.cmprAlg, (uint8_t **)&pBlockData->aTSKEY,
|
||||
sizeof(TSKEY) * hdr.nRow, &aBuf[0]);
|
||||
if (code) goto _exit;
|
||||
n += hdr.szKey;
|
||||
|
||||
// Primary key columns
|
||||
for (int32_t i = 0; i < hdr.numOfPKs; i++) {
|
||||
SColData *pColData;
|
||||
|
||||
code = tBlockDataAddColData(pBlockData, primaryKeyBlockCols[i].cid, primaryKeyBlockCols[i].type,
|
||||
primaryKeyBlockCols[i].cflag, &pColData);
|
||||
if (code) goto _exit;
|
||||
|
||||
code = tsdbDecmprColData(pIn + n, &primaryKeyBlockCols[i], hdr.cmprAlg, hdr.nRow, pColData, &aBuf[0]);
|
||||
if (code) goto _exit;
|
||||
|
||||
n = n + primaryKeyBlockCols[i].szBitmap + primaryKeyBlockCols[i].szOffset + primaryKeyBlockCols[i].szValue;
|
||||
}
|
||||
|
||||
// regular key columns
|
||||
if (hdr.szBlkCol > 0) {
|
||||
int32_t nt = 0;
|
||||
while (nt < hdr.szBlkCol) {
|
||||
SColData *pColData;
|
||||
SBlockCol blockCol = {0};
|
||||
nt += tGetBlockCol(pIn + n + nt, &blockCol);
|
||||
|
||||
code = tBlockDataAddColData(pBlockData, blockCol.cid, blockCol.type, blockCol.cflag, &pColData);
|
||||
if (code) goto _exit;
|
||||
|
||||
if (blockCol.flag == HAS_NULL) {
|
||||
for (int32_t iRow = 0; iRow < hdr.nRow; iRow++) {
|
||||
code = tColDataAppendValue(pColData, &COL_VAL_NULL(blockCol.cid, blockCol.type));
|
||||
if (code) goto _exit;
|
||||
}
|
||||
} else {
|
||||
code = tsdbDecmprColData(pIn + n + hdr.szBlkCol + blockCol.offset, &blockCol, hdr.cmprAlg, hdr.nRow, pColData,
|
||||
&aBuf[0]);
|
||||
if (code) goto _exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int32_t tBlockDataCompressKeyPart(SBlockData *bData, SDiskDataHdr *hdr, SBuffer *buffer, SBuffer *assist) {
|
||||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
|
Loading…
Reference in New Issue