提交 b0cfcbcd 编写于 作者: H Hongze Cheng

more work

上级 0b05c880
......@@ -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 ======================================================
\ No newline at end of file
// 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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册