more code
This commit is contained in:
parent
552ea09690
commit
ffb655bae6
|
@ -21,11 +21,6 @@ extern int32_t tsdbWriteFile(STsdbFD *pFD, int64_t offset, const uint8_t *pBuf,
|
||||||
extern int32_t tsdbReadFile(STsdbFD *pFD, int64_t offset, uint8_t *pBuf, int64_t size);
|
extern int32_t tsdbReadFile(STsdbFD *pFD, int64_t offset, uint8_t *pBuf, int64_t size);
|
||||||
extern int32_t tsdbFsyncFile(STsdbFD *pFD);
|
extern int32_t tsdbFsyncFile(STsdbFD *pFD);
|
||||||
|
|
||||||
typedef struct SFDataPtr {
|
|
||||||
int64_t offset;
|
|
||||||
int64_t size;
|
|
||||||
} SFDataPtr;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SFDataPtr dict[4]; // 0:bloom filter, 1:SSttBlk, 2:STbStatisBlk, 3:SDelBlk
|
SFDataPtr dict[4]; // 0:bloom filter, 1:SSttBlk, 2:STbStatisBlk, 3:SDelBlk
|
||||||
uint8_t reserved[32];
|
uint8_t reserved[32];
|
||||||
|
@ -106,16 +101,91 @@ _exit:
|
||||||
|
|
||||||
static int32_t write_statistics_block(struct SSttFWriter *pWriter) {
|
static int32_t write_statistics_block(struct SSttFWriter *pWriter) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
int32_t lino;
|
||||||
|
|
||||||
|
STbStatisBlk *pStatisBlk = (STbStatisBlk *)taosArrayReserve(pWriter->aStatisBlk, 1);
|
||||||
|
if (pStatisBlk == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
}
|
||||||
|
|
||||||
|
pStatisBlk->nRow = pWriter->sData.nRow;
|
||||||
|
pStatisBlk->minTid.suid = pWriter->sData.aData[0][0];
|
||||||
|
pStatisBlk->minTid.uid = pWriter->sData.aData[1][0];
|
||||||
|
pStatisBlk->maxTid.suid = pWriter->sData.aData[0][pWriter->sData.nRow - 1];
|
||||||
|
pStatisBlk->maxTid.uid = pWriter->sData.aData[1][pWriter->sData.nRow - 1];
|
||||||
|
pStatisBlk->minVer = pStatisBlk->maxVer = pStatisBlk->maxVer = pWriter->sData.aData[2][0];
|
||||||
|
for (int32_t iRow = 1; iRow < pWriter->sData.nRow; iRow++) {
|
||||||
|
if (pStatisBlk->minVer > pWriter->sData.aData[2][iRow]) pStatisBlk->minVer = pWriter->sData.aData[2][iRow];
|
||||||
|
if (pStatisBlk->maxVer < pWriter->sData.aData[2][iRow]) pStatisBlk->maxVer = pWriter->sData.aData[2][iRow];
|
||||||
|
}
|
||||||
|
|
||||||
|
pStatisBlk->dp.offset = pWriter->config.file.size;
|
||||||
|
pStatisBlk->dp.size = 0; // TODO
|
||||||
|
|
||||||
|
int64_t tsize = sizeof(int64_t) * pWriter->sData.nRow;
|
||||||
|
for (int32_t i = 0; i < ARRAY_SIZE(pWriter->sData.aData); i++) {
|
||||||
|
code = tsdbWriteFile(pWriter->pFd, pWriter->config.file.size, (const uint8_t *)pWriter->sData.aData[i], tsize);
|
||||||
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
|
||||||
|
pStatisBlk->dp.size += tsize;
|
||||||
|
pWriter->config.file.size += tsize;
|
||||||
|
}
|
||||||
|
|
||||||
tTbStatisBlockClear(&pWriter->sData);
|
tTbStatisBlockClear(&pWriter->sData);
|
||||||
// TODO
|
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
if (code) {
|
||||||
|
tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pWriter->config.pTsdb->pVnode), __func__, lino,
|
||||||
|
tstrerror(code));
|
||||||
|
} else {
|
||||||
|
// tsdbTrace();
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t write_delete_block(struct SSttFWriter *pWriter) {
|
static int32_t write_delete_block(struct SSttFWriter *pWriter) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
// TODO
|
int32_t lino;
|
||||||
|
|
||||||
|
SDelBlk *pDelBlk = taosArrayReserve(pWriter->aDelBlk, 1);
|
||||||
|
if (pDelBlk == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
}
|
||||||
|
|
||||||
|
pDelBlk->nRow = pWriter->sData.nRow;
|
||||||
|
pDelBlk->minTid.suid = pWriter->sData.aData[0][0];
|
||||||
|
pDelBlk->minTid.uid = pWriter->sData.aData[1][0];
|
||||||
|
pDelBlk->maxTid.suid = pWriter->sData.aData[0][pWriter->sData.nRow - 1];
|
||||||
|
pDelBlk->maxTid.uid = pWriter->sData.aData[1][pWriter->sData.nRow - 1];
|
||||||
|
pDelBlk->minVer = pDelBlk->maxVer = pDelBlk->maxVer = pWriter->sData.aData[2][0];
|
||||||
|
for (int32_t iRow = 1; iRow < pWriter->sData.nRow; iRow++) {
|
||||||
|
if (pDelBlk->minVer > pWriter->sData.aData[2][iRow]) pDelBlk->minVer = pWriter->sData.aData[2][iRow];
|
||||||
|
if (pDelBlk->maxVer < pWriter->sData.aData[2][iRow]) pDelBlk->maxVer = pWriter->sData.aData[2][iRow];
|
||||||
|
}
|
||||||
|
|
||||||
|
pDelBlk->dp.offset = pWriter->config.file.size;
|
||||||
|
pDelBlk->dp.size = 0; // TODO
|
||||||
|
|
||||||
|
int64_t tsize = sizeof(int64_t) * pWriter->dData.nRow;
|
||||||
|
for (int32_t i = 0; i < ARRAY_SIZE(pWriter->dData.aData); i++) {
|
||||||
|
code = tsdbWriteFile(pWriter->pFd, pWriter->config.file.size, (const uint8_t *)pWriter->dData.aData[i], tsize);
|
||||||
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
|
|
||||||
|
pDelBlk->dp.size += tsize;
|
||||||
|
pWriter->config.file.size += tsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
tDelBlockDestroy(&pWriter->dData);
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
if (code) {
|
||||||
|
tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pWriter->config.pTsdb->pVnode), __func__, lino,
|
||||||
|
tstrerror(code));
|
||||||
|
} else {
|
||||||
|
// tsdbTrace();
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,11 @@ extern "C" {
|
||||||
typedef struct SDelBlock SDelBlock;
|
typedef struct SDelBlock SDelBlock;
|
||||||
typedef struct SDelBlk SDelBlk;
|
typedef struct SDelBlk SDelBlk;
|
||||||
|
|
||||||
|
typedef struct SFDataPtr {
|
||||||
|
int64_t offset;
|
||||||
|
int64_t size;
|
||||||
|
} SFDataPtr;
|
||||||
|
|
||||||
int32_t tDelBlockCreate(SDelBlock *pDelBlock, int32_t capacity);
|
int32_t tDelBlockCreate(SDelBlock *pDelBlock, int32_t capacity);
|
||||||
int32_t tDelBlockDestroy(SDelBlock *pDelBlock);
|
int32_t tDelBlockDestroy(SDelBlock *pDelBlock);
|
||||||
int32_t tDelBlockClear(SDelBlock *pDelBlock);
|
int32_t tDelBlockClear(SDelBlock *pDelBlock);
|
||||||
|
@ -52,12 +57,12 @@ struct SDelBlock {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SDelBlk {
|
struct SDelBlk {
|
||||||
int64_t suidMax;
|
int32_t nRow;
|
||||||
int64_t suidMin;
|
TABLEID minTid;
|
||||||
int64_t uidMax;
|
TABLEID maxTid;
|
||||||
int64_t uidMin;
|
int64_t minVer;
|
||||||
int64_t verMax;
|
int64_t maxVer;
|
||||||
int64_t verMin;
|
SFDataPtr dp;
|
||||||
};
|
};
|
||||||
struct STbStatisBlock {
|
struct STbStatisBlock {
|
||||||
int32_t capacity;
|
int32_t capacity;
|
||||||
|
@ -65,12 +70,12 @@ struct STbStatisBlock {
|
||||||
int64_t *aData[7]; // [suid, uid, skey, sver, ekey, ever, count]
|
int64_t *aData[7]; // [suid, uid, skey, sver, ekey, ever, count]
|
||||||
};
|
};
|
||||||
struct STbStatisBlk {
|
struct STbStatisBlk {
|
||||||
int64_t suidMax;
|
int32_t nRow;
|
||||||
int64_t suidMin;
|
TABLEID minTid;
|
||||||
int64_t uidMax;
|
TABLEID maxTid;
|
||||||
int64_t uidMin;
|
int64_t minVer;
|
||||||
int64_t offset;
|
int64_t maxVer;
|
||||||
int64_t size;
|
SFDataPtr dp;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
Loading…
Reference in New Issue