more code
This commit is contained in:
parent
b33074dcbb
commit
050d1bc002
|
@ -1378,218 +1378,6 @@ SColData *tBlockDataGetColData(SBlockData *pBlockData, int16_t cid) {
|
||||||
return NULL;
|
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) {
|
static int32_t tBlockDataCompressKeyPart(SBlockData *bData, SDiskDataHdr *hdr, SBuffer *buffer, SBuffer *assist) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
|
Loading…
Reference in New Issue