Merge branch 'feat/tsdb_refact' of https://github.com/taosdata/TDengine into feat/tsdb_refact
This commit is contained in:
commit
0d77d034e5
|
@ -102,8 +102,11 @@ int32_t tsdbCacheInsertLastrow(SLRUCache *pCache, tb_uid_t uid, STSRow *row) {
|
||||||
if (row->ts >= cacheRow->ts) {
|
if (row->ts >= cacheRow->ts) {
|
||||||
if (TD_ROW_LEN(row) <= TD_ROW_LEN(cacheRow)) {
|
if (TD_ROW_LEN(row) <= TD_ROW_LEN(cacheRow)) {
|
||||||
tdRowCpy(cacheRow, row);
|
tdRowCpy(cacheRow, row);
|
||||||
|
|
||||||
|
taosLRUCacheRelease(pCache, h, false);
|
||||||
} else {
|
} else {
|
||||||
tsdbCacheDeleteLastrow(pCache, uid, TSKEY_MAX);
|
taosLRUCacheRelease(pCache, h, true);
|
||||||
|
// tsdbCacheDeleteLastrow(pCache, uid, TSKEY_MAX);
|
||||||
tsdbCacheInsertLastrow(pCache, uid, row);
|
tsdbCacheInsertLastrow(pCache, uid, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,8 +137,11 @@ int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, STSRow *row) {
|
||||||
if (row->ts >= cacheRow->ts) {
|
if (row->ts >= cacheRow->ts) {
|
||||||
if (TD_ROW_LEN(row) <= TD_ROW_LEN(cacheRow)) {
|
if (TD_ROW_LEN(row) <= TD_ROW_LEN(cacheRow)) {
|
||||||
tdRowCpy(cacheRow, row);
|
tdRowCpy(cacheRow, row);
|
||||||
|
|
||||||
|
taosLRUCacheRelease(pCache, h, false);
|
||||||
} else {
|
} else {
|
||||||
tsdbCacheDeleteLast(pCache, uid, TSKEY_MAX);
|
taosLRUCacheRelease(pCache, h, true);
|
||||||
|
/* tsdbCacheDeleteLast(pCache, uid, TSKEY_MAX); */
|
||||||
tsdbCacheInsertLastrow(pCache, uid, row);
|
tsdbCacheInsertLastrow(pCache, uid, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,99 +303,6 @@ static int32_t getTableDelIdx(SDelFReader *pDelFReader, tb_uid_t suid, tb_uid_t
|
||||||
_err:
|
_err:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
static int32_t mergeLastRowFileSet(STbDataIter *iter, STbDataIter *iiter, SDFileSet *pFileSet, SArray *pSkyline,
|
|
||||||
STsdb *pTsdb, STSRow **ppLastRow) {
|
|
||||||
int32_t code = 0;
|
|
||||||
|
|
||||||
TSDBROW *pMemRow = NULL;
|
|
||||||
TSDBROW *pIMemRow = NULL;
|
|
||||||
TSDBKEY memKey = TSDBKEY_MIN;
|
|
||||||
TSDBKEY imemKey = TSDBKEY_MIN;
|
|
||||||
|
|
||||||
if (iter != NULL) {
|
|
||||||
pMemRow = tsdbTbDataIterGet(iter);
|
|
||||||
if (pMemRow) {
|
|
||||||
memKey = tsdbRowKey(pMemRow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iter != NULL) {
|
|
||||||
pIMemRow = tsdbTbDataIterGet(iiter);
|
|
||||||
if (pIMemRow) {
|
|
||||||
imemKey = tsdbRowKey(pIMemRow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDataFReader *pDataFReader;
|
|
||||||
code = tsdbDataFReaderOpen(&pDataFReader, pTsdb, pFileSet);
|
|
||||||
if (code) goto _err;
|
|
||||||
|
|
||||||
SMapData blockIdxMap;
|
|
||||||
tMapDataReset(&blockIdxMap);
|
|
||||||
code = tsdbReadBlockIdx(pDataFReader, &blockIdxMap, NULL);
|
|
||||||
if (code) goto _err;
|
|
||||||
|
|
||||||
SBlockIdx blockIdx = {0};
|
|
||||||
tBlockIdxReset(&blockIdx);
|
|
||||||
code = tMapDataSearch(&blockIdxMap, pBlockIdx, tGetBlockIdx, tCmprBlockIdx, &blockIdx);
|
|
||||||
if (code) goto _err;
|
|
||||||
|
|
||||||
SMapData blockMap = {0};
|
|
||||||
tMapDataReset(&blockMap);
|
|
||||||
code = tsdbReadBlock(pDataFReader, &blockIdx, &blockMap, NULL);
|
|
||||||
if (code) goto _err;
|
|
||||||
|
|
||||||
int32_t nBlock = blockMap.nItem;
|
|
||||||
for (int32_t iBlock = nBlock - 1; iBlock >= 0; --iBlock) {
|
|
||||||
SBlock block = {0};
|
|
||||||
SBlockData blockData = {0};
|
|
||||||
|
|
||||||
tBlockReset(&block);
|
|
||||||
tBlockDataReset(&blockData);
|
|
||||||
|
|
||||||
tMapDataGetItemByIdx(&blockMap, iBlock, &block, tGetBlock);
|
|
||||||
|
|
||||||
code = tsdbReadBlockData(pDataFReader, &blockIdx, &block, &blockData, NULL, NULL);
|
|
||||||
if (code) goto _err;
|
|
||||||
|
|
||||||
int32_t nRow = blockData.nRow;
|
|
||||||
for (int32_t iRow = nRow - 1; iRow >= 0; --iRow) {
|
|
||||||
TSDBROW row = tsdbRowFromBlockData(&blockData, iRow);
|
|
||||||
|
|
||||||
TSDBKEY key = tsdbRowKey(&row);
|
|
||||||
if (pMemRow != NULL && pIMemRow != NULL) {
|
|
||||||
int32_t c = tsdbKeyCmprFn(memKey, imemKey);
|
|
||||||
if (c < 0) {
|
|
||||||
} else if (c > 0) {
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
} else if (pMemRow != NULL) {
|
|
||||||
pMemRow = tsdbTbDataIterGet(iter);
|
|
||||||
|
|
||||||
} else if (pIMemRow != NULL) {
|
|
||||||
} else {
|
|
||||||
if (!tsdbKeyDeleted(key, pSkyline)) {
|
|
||||||
code = buildTsrowFromTsdbrow(&row, ppLastRow);
|
|
||||||
goto _done;
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// select current row if outside delete area
|
|
||||||
STSchema *pTSchema = metaGetTbTSchema(pTsdb->pVnode->pMeta, uid, -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_done:
|
|
||||||
tsdbDataFReaderClose(&pDataFReader);
|
|
||||||
|
|
||||||
return code;
|
|
||||||
|
|
||||||
_err:
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum SFSNEXTROWSTATES {
|
typedef enum SFSNEXTROWSTATES {
|
||||||
SFSNEXTROW_FS,
|
SFSNEXTROW_FS,
|
||||||
|
@ -1070,34 +983,7 @@ int32_t tsdbCacheGetLastrow(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, STSRo
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
int32_t tsdbCacheGetLast(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, STSRow **ppRow) {
|
|
||||||
int32_t code = 0;
|
|
||||||
char key[32] = {0};
|
|
||||||
int keyLen = 0;
|
|
||||||
|
|
||||||
getTableCacheKey(uid, "l", key, &keyLen);
|
|
||||||
LRUHandle *h = taosLRUCacheLookup(pCache, key, keyLen);
|
|
||||||
if (h) {
|
|
||||||
*ppRow = (STSRow *)taosLRUCacheValue(pCache, h);
|
|
||||||
} else {
|
|
||||||
STSRow *pRow = NULL;
|
|
||||||
code = mergeLast(uid, pTsdb, &pRow);
|
|
||||||
// if table's empty or error, return code of -1
|
|
||||||
if (code < 0 || pRow == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
tsdbCacheInsertLast(pCache, uid, pRow);
|
|
||||||
LRUHandle *h = taosLRUCacheLookup(pCache, key, keyLen);
|
|
||||||
*ppRow = (STSRow *)taosLRUCacheValue(pCache, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
// taosLRUCacheRelease(pCache, h, true);
|
|
||||||
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
int32_t tsdbCacheGetLastrowH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHandle **handle) {
|
int32_t tsdbCacheGetLastrowH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHandle **handle) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
char key[32] = {0};
|
char key[32] = {0};
|
||||||
|
@ -1122,7 +1008,6 @@ int32_t tsdbCacheGetLastrowH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUH
|
||||||
}
|
}
|
||||||
|
|
||||||
*handle = h;
|
*handle = h;
|
||||||
// taosLRUCacheRelease(pCache, h, true);
|
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -1152,7 +1037,6 @@ int32_t tsdbCacheGetLastH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHand
|
||||||
}
|
}
|
||||||
|
|
||||||
*handle = h;
|
*handle = h;
|
||||||
// taosLRUCacheRelease(pCache, h, true);
|
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue