more refact
This commit is contained in:
parent
0633c25a22
commit
40a396563b
|
@ -64,6 +64,7 @@ typedef struct SDFInfo SDFInfo;
|
||||||
typedef struct SDFile SDFile;
|
typedef struct SDFile SDFile;
|
||||||
typedef struct SDFileSet SDFileSet;
|
typedef struct SDFileSet SDFileSet;
|
||||||
|
|
||||||
|
// SDFile
|
||||||
void tsdbInitDFile(STsdb *pRepo, SDFile *pDFile, SDiskID did, int fid, uint32_t ver, TSDB_FILE_T ftype);
|
void tsdbInitDFile(STsdb *pRepo, SDFile *pDFile, SDiskID did, int fid, uint32_t ver, TSDB_FILE_T ftype);
|
||||||
void tsdbInitDFileEx(SDFile *pDFile, SDFile *pODFile);
|
void tsdbInitDFileEx(SDFile *pDFile, SDFile *pODFile);
|
||||||
int tsdbOpenDFile(SDFile *pDFile, int flags);
|
int tsdbOpenDFile(SDFile *pDFile, int flags);
|
||||||
|
@ -82,6 +83,26 @@ int tsdbUpdateDFileHeader(SDFile *pDFile);
|
||||||
int tsdbLoadDFileHeader(SDFile *pDFile, SDFInfo *pInfo);
|
int tsdbLoadDFileHeader(SDFile *pDFile, SDFInfo *pInfo);
|
||||||
int tsdbParseDFilename(const char *fname, int *vid, int *fid, TSDB_FILE_T *ftype, uint32_t *version);
|
int tsdbParseDFilename(const char *fname, int *vid, int *fid, TSDB_FILE_T *ftype, uint32_t *version);
|
||||||
|
|
||||||
|
// SDFileSet
|
||||||
|
void tsdbInitDFileSet(STsdb *pRepo, SDFileSet *pSet, SDiskID did, int fid, uint32_t ver);
|
||||||
|
void tsdbInitDFileSetEx(SDFileSet *pSet, SDFileSet *pOSet);
|
||||||
|
int tsdbEncodeDFileSet(void **buf, SDFileSet *pSet);
|
||||||
|
void *tsdbDecodeDFileSet(STsdb *pRepo, void *buf, SDFileSet *pSet);
|
||||||
|
int tsdbEncodeDFileSetEx(void **buf, SDFileSet *pSet);
|
||||||
|
void *tsdbDecodeDFileSetEx(void *buf, SDFileSet *pSet);
|
||||||
|
int tsdbApplyDFileSetChange(SDFileSet *from, SDFileSet *to);
|
||||||
|
int tsdbCreateDFileSet(STsdb *pRepo, SDFileSet *pSet, bool updateHeader);
|
||||||
|
int tsdbUpdateDFileSetHeader(SDFileSet *pSet);
|
||||||
|
int tsdbScanAndTryFixDFileSet(STsdb *pRepo, SDFileSet *pSet);
|
||||||
|
void tsdbCloseDFileSet(SDFileSet *pSet);
|
||||||
|
int tsdbOpenDFileSet(SDFileSet *pSet, int flags);
|
||||||
|
void tsdbRemoveDFileSet(SDFileSet *pSet);
|
||||||
|
int tsdbCopyDFileSet(SDFileSet *pSrc, SDFileSet *pDest);
|
||||||
|
void tsdbGetFidKeyRange(int days, int8_t precision, int fid, TSKEY *minKey, TSKEY *maxKey);
|
||||||
|
|
||||||
|
// tsdbFS.c ==============================================================================================
|
||||||
|
typedef struct STsdbFS STsdbFS;
|
||||||
|
|
||||||
// tsdbMemTable ================
|
// tsdbMemTable ================
|
||||||
typedef struct STbData STbData;
|
typedef struct STbData STbData;
|
||||||
typedef struct STsdbMemTable STsdbMemTable;
|
typedef struct STsdbMemTable STsdbMemTable;
|
||||||
|
@ -93,11 +114,6 @@ void tsdbMemTableDestroy(STsdbMemTable *pMemTable);
|
||||||
int tsdbLoadDataFromCache(STsdb *pTsdb, STable *pTable, SSkipListIterator *pIter, TSKEY maxKey, int maxRowsToRead,
|
int tsdbLoadDataFromCache(STsdb *pTsdb, STable *pTable, SSkipListIterator *pIter, TSKEY maxKey, int maxRowsToRead,
|
||||||
SDataCols *pCols, TKEY *filterKeys, int nFilterKeys, bool keepDup, SMergeInfo *pMergeInfo);
|
SDataCols *pCols, TKEY *filterKeys, int nFilterKeys, bool keepDup, SMergeInfo *pMergeInfo);
|
||||||
|
|
||||||
// tsdbCommit ================
|
|
||||||
|
|
||||||
// tsdbFS ================
|
|
||||||
typedef struct STsdbFS STsdbFS;
|
|
||||||
|
|
||||||
// structs
|
// structs
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int minFid;
|
int minFid;
|
||||||
|
@ -313,8 +329,6 @@ typedef struct {
|
||||||
uint64_t aggrOffset : 63;
|
uint64_t aggrOffset : 63;
|
||||||
TSDBKEY minKey;
|
TSDBKEY minKey;
|
||||||
TSDBKEY maxKey;
|
TSDBKEY maxKey;
|
||||||
// TSKEY keyFirst;
|
|
||||||
// TSKEY keyLast;
|
|
||||||
} SBlock;
|
} SBlock;
|
||||||
|
|
||||||
static FORCE_INLINE bool tsdbIsSupBlock(SBlock *pBlock) { return pBlock->numOfSubBlocks == 1; }
|
static FORCE_INLINE bool tsdbIsSupBlock(SBlock *pBlock) { return pBlock->numOfSubBlocks == 1; }
|
||||||
|
@ -345,26 +359,6 @@ typedef struct {
|
||||||
int64_t min;
|
int64_t min;
|
||||||
} SAggrBlkCol;
|
} SAggrBlkCol;
|
||||||
|
|
||||||
// Code here just for back-ward compatibility
|
|
||||||
static FORCE_INLINE void tsdbSetBlockColOffset(SBlockCol *pBlockCol, uint32_t offset) {
|
|
||||||
#ifdef TD_REFACTOR_3
|
|
||||||
pBlockCol->offset = offset & ((((uint32_t)1) << 24) - 1);
|
|
||||||
pBlockCol->offsetH = (uint8_t)(offset >> 24);
|
|
||||||
#else
|
|
||||||
pBlockCol->offset = offset;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE uint32_t tsdbGetBlockColOffset(SBlockCol *pBlockCol) {
|
|
||||||
#ifdef TD_REFACTOR_3
|
|
||||||
uint32_t offset1 = pBlockCol->offset;
|
|
||||||
uint32_t offset2 = pBlockCol->offsetH;
|
|
||||||
return (offset1 | (offset2 << 24));
|
|
||||||
#else
|
|
||||||
return pBlockCol->offset;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t delimiter; // For recovery usage
|
int32_t delimiter; // For recovery usage
|
||||||
int32_t numOfCols; // For recovery usage
|
int32_t numOfCols; // For recovery usage
|
||||||
|
@ -613,55 +607,6 @@ typedef struct {
|
||||||
} \
|
} \
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
void tsdbInitDFileSet(STsdb *pRepo, SDFileSet *pSet, SDiskID did, int fid, uint32_t ver);
|
|
||||||
void tsdbInitDFileSetEx(SDFileSet *pSet, SDFileSet *pOSet);
|
|
||||||
int tsdbEncodeDFileSet(void **buf, SDFileSet *pSet);
|
|
||||||
void *tsdbDecodeDFileSet(STsdb *pRepo, void *buf, SDFileSet *pSet);
|
|
||||||
int tsdbEncodeDFileSetEx(void **buf, SDFileSet *pSet);
|
|
||||||
void *tsdbDecodeDFileSetEx(void *buf, SDFileSet *pSet);
|
|
||||||
int tsdbApplyDFileSetChange(SDFileSet *from, SDFileSet *to);
|
|
||||||
int tsdbCreateDFileSet(STsdb *pRepo, SDFileSet *pSet, bool updateHeader);
|
|
||||||
int tsdbUpdateDFileSetHeader(SDFileSet *pSet);
|
|
||||||
int tsdbScanAndTryFixDFileSet(STsdb *pRepo, SDFileSet *pSet);
|
|
||||||
|
|
||||||
static FORCE_INLINE void tsdbCloseDFileSet(SDFileSet *pSet) {
|
|
||||||
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
|
||||||
tsdbCloseDFile(TSDB_DFILE_IN_SET(pSet, ftype));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE int tsdbOpenDFileSet(SDFileSet *pSet, int flags) {
|
|
||||||
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
|
||||||
if (tsdbOpenDFile(TSDB_DFILE_IN_SET(pSet, ftype), flags) < 0) {
|
|
||||||
tsdbCloseDFileSet(pSet);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE void tsdbRemoveDFileSet(SDFileSet *pSet) {
|
|
||||||
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
|
||||||
(void)tsdbRemoveDFile(TSDB_DFILE_IN_SET(pSet, ftype));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE int tsdbCopyDFileSet(SDFileSet *pSrc, SDFileSet *pDest) {
|
|
||||||
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
|
||||||
if (tsdbCopyDFile(TSDB_DFILE_IN_SET(pSrc, ftype), TSDB_DFILE_IN_SET(pDest, ftype)) < 0) {
|
|
||||||
tsdbRemoveDFileSet(pDest);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE void tsdbGetFidKeyRange(int days, int8_t precision, int fid, TSKEY *minKey, TSKEY *maxKey) {
|
|
||||||
*minKey = fid * days * tsTickPerMin[precision];
|
|
||||||
*maxKey = *minKey + days * tsTickPerMin[precision] - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE bool tsdbFSetIsOk(SDFileSet *pSet) {
|
static FORCE_INLINE bool tsdbFSetIsOk(SDFileSet *pSet) {
|
||||||
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
||||||
if (TSDB_FILE_IS_BAD(TSDB_DFILE_IN_SET(pSet, ftype))) {
|
if (TSDB_FILE_IS_BAD(TSDB_DFILE_IN_SET(pSet, ftype))) {
|
||||||
|
|
|
@ -1175,7 +1175,7 @@ static int tsdbWriteBlockImpl(STsdb *pRepo, STable *pTable, SDFile *pDFile, SDFi
|
||||||
tsdbUpdateDFileMagic(pDFile, POINTER_SHIFT(tptr, flen - sizeof(TSCKSUM)));
|
tsdbUpdateDFileMagic(pDFile, POINTER_SHIFT(tptr, flen - sizeof(TSCKSUM)));
|
||||||
|
|
||||||
if (ncol != 0) {
|
if (ncol != 0) {
|
||||||
tsdbSetBlockColOffset(pBlockCol, toffset);
|
pBlockCol->offset = toffset;
|
||||||
pBlockCol->len = flen; // data + bitmaps
|
pBlockCol->len = flen; // data + bitmaps
|
||||||
pBlockCol->blen = tBitmapsLen;
|
pBlockCol->blen = tBitmapsLen;
|
||||||
++tcol;
|
++tcol;
|
||||||
|
|
|
@ -542,4 +542,42 @@ int tsdbCopyDFile(SDFile *pSrc, SDFile *pDest) {
|
||||||
|
|
||||||
pDest->info = pSrc->info;
|
pDest->info = pSrc->info;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tsdbCloseDFileSet(SDFileSet *pSet) {
|
||||||
|
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
||||||
|
tsdbCloseDFile(TSDB_DFILE_IN_SET(pSet, ftype));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int tsdbOpenDFileSet(SDFileSet *pSet, int flags) {
|
||||||
|
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
||||||
|
if (tsdbOpenDFile(TSDB_DFILE_IN_SET(pSet, ftype), flags) < 0) {
|
||||||
|
tsdbCloseDFileSet(pSet);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tsdbRemoveDFileSet(SDFileSet *pSet) {
|
||||||
|
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
||||||
|
(void)tsdbRemoveDFile(TSDB_DFILE_IN_SET(pSet, ftype));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int tsdbCopyDFileSet(SDFileSet *pSrc, SDFileSet *pDest) {
|
||||||
|
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
|
||||||
|
if (tsdbCopyDFile(TSDB_DFILE_IN_SET(pSrc, ftype), TSDB_DFILE_IN_SET(pDest, ftype)) < 0) {
|
||||||
|
tsdbRemoveDFileSet(pDest);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tsdbGetFidKeyRange(int days, int8_t precision, int fid, TSKEY *minKey, TSKEY *maxKey) {
|
||||||
|
*minKey = fid * days * tsTickPerMin[precision];
|
||||||
|
*maxKey = *minKey + days * tsTickPerMin[precision] - 1;
|
||||||
}
|
}
|
|
@ -726,7 +726,7 @@ static int tsdbLoadBlockDataImpl(SReadH *pReadh, SBlock *pBlock, SDataCols *pDat
|
||||||
if (dcol != 0) {
|
if (dcol != 0) {
|
||||||
pBlockCol = &(pBlockData->cols[ccol]);
|
pBlockCol = &(pBlockData->cols[ccol]);
|
||||||
tcolId = pBlockCol->colId;
|
tcolId = pBlockCol->colId;
|
||||||
toffset = tsdbGetBlockColOffset(pBlockCol);
|
toffset = pBlockCol->offset;
|
||||||
tlen = pBlockCol->len;
|
tlen = pBlockCol->len;
|
||||||
pDataCol->bitmap = pBlockCol->blen > 0 ? 1 : 0;
|
pDataCol->bitmap = pBlockCol->blen > 0 ? 1 : 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -942,8 +942,8 @@ static int tsdbLoadColData(SReadH *pReadh, SDFile *pDFile, SBlock *pBlock, SBloc
|
||||||
if (tsdbMakeRoom((void **)(&TSDB_READ_BUF(pReadh)), pBlockCol->len) < 0) return -1;
|
if (tsdbMakeRoom((void **)(&TSDB_READ_BUF(pReadh)), pBlockCol->len) < 0) return -1;
|
||||||
if (tsdbMakeRoom((void **)(&TSDB_READ_COMP_BUF(pReadh)), tsize) < 0) return -1;
|
if (tsdbMakeRoom((void **)(&TSDB_READ_COMP_BUF(pReadh)), tsize) < 0) return -1;
|
||||||
|
|
||||||
int64_t offset = pBlock->offset + tsdbBlockStatisSize(pBlock->numOfCols, (uint32_t)pBlock->blkVer) +
|
int64_t offset =
|
||||||
tsdbGetBlockColOffset(pBlockCol);
|
pBlock->offset + tsdbBlockStatisSize(pBlock->numOfCols, (uint32_t)pBlock->blkVer) + pBlockCol->offset;
|
||||||
if (tsdbSeekDFile(pDFile, offset, SEEK_SET) < 0) {
|
if (tsdbSeekDFile(pDFile, offset, SEEK_SET) < 0) {
|
||||||
tsdbError("vgId:%d, failed to load block column data while seek file %s to offset %" PRId64 " since %s",
|
tsdbError("vgId:%d, failed to load block column data while seek file %s to offset %" PRId64 " since %s",
|
||||||
TSDB_READ_REPO_ID(pReadh), TSDB_FILE_FULL_NAME(pDFile), offset, tstrerror(terrno));
|
TSDB_READ_REPO_ID(pReadh), TSDB_FILE_FULL_NAME(pDFile), offset, tstrerror(terrno));
|
||||||
|
|
Loading…
Reference in New Issue