more work
This commit is contained in:
parent
0b05c8802e
commit
b0cfcbcd1a
|
@ -131,6 +131,9 @@ int32_t tsdbReadDelData(SDelFReader *pReader, SDelIdx *pDelIdx, SMapData *pDelDa
|
|||
int32_t tsdbReadDelIdx(SDelFReader *pReader, SMapData *pDelIdxMap, uint8_t **ppBuf);
|
||||
|
||||
// tsdbUtil.c ==============================================================================================
|
||||
// TSDBROW
|
||||
TSDBKEY tsdbRowKey(TSDBROW *pRow);
|
||||
|
||||
int32_t tsdbKeyFid(TSKEY key, int32_t minutes, int8_t precision);
|
||||
void tsdbFidKeyRange(int32_t fid, int32_t minutes, int8_t precision, TSKEY *minKey, TSKEY *maxKey);
|
||||
|
||||
|
@ -174,8 +177,10 @@ int32_t tGetBlock(uint8_t *p, void *ph);
|
|||
int32_t tBlockCmprFn(const void *p1, const void *p2);
|
||||
|
||||
// SBlockData
|
||||
void tsdbBlockDataReset(SBlockData *pBlockData);
|
||||
#define tsdbBlockDataCreate() ((SBlockData){0})
|
||||
void tsdbBlockDataClear(SBlockData *pBlockData);
|
||||
int32_t tsdbBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTSchema);
|
||||
void tsdbBlockDataDestroy(SBlockData *pBlockData);
|
||||
|
||||
// SDelIdx
|
||||
int32_t tPutDelIdx(uint8_t *p, void *ph);
|
||||
|
@ -326,8 +331,12 @@ struct SColData {
|
|||
};
|
||||
|
||||
struct SBlockData {
|
||||
int32_t nRow;
|
||||
SArray *aColData;
|
||||
int32_t maxRow;
|
||||
int32_t nRow;
|
||||
TSDBKEY *aKey;
|
||||
int32_t maxCol;
|
||||
int32_t nCol;
|
||||
SColData *aColData;
|
||||
};
|
||||
|
||||
// ================== TSDB global config
|
||||
|
|
|
@ -388,7 +388,7 @@ static int32_t tsdbCommitMemoryData(SCommitter *pCommitter, SBlockIdx *pBlockIdx
|
|||
if (code) goto _err;
|
||||
|
||||
block = BLOCK_INIT_VAL;
|
||||
tsdbBlockDataReset(&pCommitter->bDataN);
|
||||
tsdbBlockDataClear(&pCommitter->bDataN);
|
||||
}
|
||||
|
||||
return code;
|
||||
|
|
|
@ -405,6 +405,11 @@ void tsdbFidKeyRange(int32_t fid, int32_t minutes, int8_t precision, TSKEY *minK
|
|||
// }
|
||||
|
||||
// TSDBROW ======================================================
|
||||
TSDBKEY tsdbRowKey(TSDBROW *pRow) {
|
||||
// TODO: support SBlockData version
|
||||
return (TSDBKEY){.version = pRow->version, .ts = pRow->pTSRow->ts};
|
||||
}
|
||||
|
||||
void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *pColVal) {
|
||||
// TODO
|
||||
}
|
||||
|
@ -515,13 +520,6 @@ int32_t tsdbBuildDeleteSkyline(SArray *aDelData, int32_t sidx, int32_t eidx, SAr
|
|||
return code;
|
||||
}
|
||||
|
||||
// SBlockData ======================================================
|
||||
int32_t tsdbBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTSchema) {
|
||||
int32_t code = 0;
|
||||
// TODO
|
||||
return code;
|
||||
}
|
||||
|
||||
// KEYINFO ======================================================
|
||||
int32_t tPutKEYINFO(uint8_t *p, KEYINFO *pKeyInfo) {
|
||||
int32_t n = 0;
|
||||
|
@ -545,4 +543,81 @@ int32_t tGetKEYINFO(uint8_t *p, KEYINFO *pKeyInfo) {
|
|||
return n;
|
||||
}
|
||||
|
||||
// SBlockData ======================================================
|
||||
// SBlockData ======================================================
|
||||
void tsdbBlockDataClear(SBlockData *pBlockData) {
|
||||
pBlockData->nRow = 0;
|
||||
for (int32_t iCol = 0; iCol < pBlockData->nCol; iCol++) {
|
||||
pBlockData->aColData[iCol] = (SColData){.cid = 0, .type = 0, .bytes = 0, .flags = 0, .nData = 0};
|
||||
}
|
||||
}
|
||||
|
||||
int32_t tsdbBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTSchema) {
|
||||
int32_t code = 0;
|
||||
TSDBKEY key = tsdbRowKey(pRow);
|
||||
int32_t nRow = pBlockData->nRow;
|
||||
SColVal colVal;
|
||||
SColVal *pColVal = &colVal;
|
||||
STColumn *pTColumn;
|
||||
SColData *pColData;
|
||||
|
||||
pBlockData->nRow++;
|
||||
|
||||
// aKey
|
||||
if (nRow >= pBlockData->maxRow) {
|
||||
if (pBlockData->maxRow == 0) {
|
||||
pBlockData->maxRow = 1024;
|
||||
} else {
|
||||
pBlockData->maxRow = pBlockData->maxRow * 2;
|
||||
}
|
||||
ASSERT(pBlockData->maxRow > pBlockData->nRow);
|
||||
|
||||
code = tsdbRealloc((uint8_t **)&pBlockData->aKey, sizeof(TSDBKEY) * pBlockData->maxRow);
|
||||
if (code) goto _err;
|
||||
}
|
||||
pBlockData->aKey[nRow] = key;
|
||||
|
||||
// other cols
|
||||
int16_t iColData = 0;
|
||||
int16_t iCol = 1;
|
||||
while (iCol < pTSchema->numOfCols) {
|
||||
pTColumn = &pTSchema->columns[iCol];
|
||||
|
||||
if (iColData < pBlockData->nCol) {
|
||||
pColData = &pBlockData->aColData[iColData];
|
||||
if (pColData->cid < pTColumn->colId) {
|
||||
iColData++;
|
||||
} else if (pColData->cid > pTColumn->colId) {
|
||||
// add a new SColData
|
||||
iCol++;
|
||||
} else {
|
||||
iCol++;
|
||||
iColData++;
|
||||
}
|
||||
} else {
|
||||
// add a new column data
|
||||
}
|
||||
|
||||
if (pColVal->isNone) {
|
||||
// set bit
|
||||
} else if (pColVal->isNull) {
|
||||
// set bit
|
||||
} else {
|
||||
// set bit
|
||||
// put data
|
||||
}
|
||||
}
|
||||
|
||||
return code;
|
||||
|
||||
_err:
|
||||
tsdbError("block data append row failed since %s", tstrerror(code));
|
||||
return code;
|
||||
}
|
||||
|
||||
void tsdbBlockDataDestroy(SBlockData *pBlockData) {
|
||||
tsdbFree((uint8_t *)pBlockData->aKey);
|
||||
for (int32_t iCol = 0; iCol < pBlockData->nCol; iCol++) {
|
||||
tsdbFree(pBlockData->aColData[iCol].pBitMap);
|
||||
tsdbFree(pBlockData->aColData[iCol].pData);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue