提交 66cf4a5b 编写于 作者: H hzcheng

TD-100

上级 d28fae1a
...@@ -760,6 +760,8 @@ static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY maxKey, int max ...@@ -760,6 +760,8 @@ static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY maxKey, int max
int numOfRows = 0; int numOfRows = 0;
do { do {
if (numOfRows >= maxRowsToRead) break;
SSkipListNode *node = tSkipListIterGet(pIter); SSkipListNode *node = tSkipListIterGet(pIter);
if (node == NULL) break; if (node == NULL) break;
...@@ -769,7 +771,6 @@ static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY maxKey, int max ...@@ -769,7 +771,6 @@ static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY maxKey, int max
tdAppendDataRowToDataCol(row, pCols); tdAppendDataRowToDataCol(row, pCols);
numOfRows++; numOfRows++;
if (numOfRows >= maxRowsToRead) break;
} while (tSkipListIterNext(pIter)); } while (tSkipListIterNext(pIter));
return numOfRows; return numOfRows;
......
...@@ -243,27 +243,11 @@ int tsdbWriteDataBlock(SRWHelper *pHelper, SDataCols *pDataCols) { ...@@ -243,27 +243,11 @@ int tsdbWriteDataBlock(SRWHelper *pHelper, SDataCols *pDataCols) {
rowsToWrite = tsdbMergeDataWithBlock(pHelper, blkIdx, pDataCols); rowsToWrite = tsdbMergeDataWithBlock(pHelper, blkIdx, pDataCols);
if (rowsToWrite < 0) goto _err; if (rowsToWrite < 0) goto _err;
} else { // Save as a super block in the middle
} else { // Either merge with the previous block or save as a super block in the middle int rowsToWrite = tsdbGetRowsInRange(pDataCols, 0, pCompBlock->keyFirst-1);
SCompBlock *prevBlock = (blkIdx == 0) ? NULL : (pCompBlock - 1); ASSERT(rowsToWrite > 0);
if (tsdbWriteBlockToFile(pHelper, &(pHelper->files.dataF), pDataCols, rowsToWrite, &compBlock, false, true) < 0) goto _err;
int rows1 = nRowsLEThan(pDataCols, pCompBlock->keyFirst); // rows write as a super block in the middle if (tsdbInsertSuperBlock(pHelper, pCompBlock, pCompBlock - pHelper->pCompInfo->blocks) < 0) goto _err;
int rows2 = (prevBlock) ? (pHelper->config.maxRowsPerFileBlock - prevBlock->numOfPoints)
: rows1; // rows can merge with the previous block
if (rows1 >= rows2) {
rowsToWrite = tsdbWriteBlockToFile(pHelper, &(pHelper->files.dataF), pDataCols, rows1, &compBlock, false, true);
if (rowsToWrite < 0) goto _err;
ASSERT(rowsToWrite == rows1);
// Add the super block to it
pIdx->len += sizeof(SCompBlock);
pIdx->numOfSuperBlocks++;
} else {
rowsToWrite = tsdbMergeDataWithBlock(pHelper, blkIdx-1, pDataCols);
if (rowsToWrite < 0) goto _err;
ASSERT(rowsToWrite == rows2);
}
} }
} }
} }
...@@ -671,7 +655,7 @@ static int nRowsLEThan(SDataCols *pDataCols, int maxKey) { ...@@ -671,7 +655,7 @@ static int nRowsLEThan(SDataCols *pDataCols, int maxKey) {
return ((TSKEY *)ptr - (TSKEY *)(pDataCols->cols[0].pData)) + 1; return ((TSKEY *)ptr - (TSKEY *)(pDataCols->cols[0].pData)) + 1;
} }
// Merge the data with a block // Merge the data with a block in file
static int tsdbMergeDataWithBlock(SRWHelper *pHelper, int blkIdx, SDataCols *pDataCols) { static int tsdbMergeDataWithBlock(SRWHelper *pHelper, int blkIdx, SDataCols *pDataCols) {
// TODO: set pHelper->hasOldBlock // TODO: set pHelper->hasOldBlock
int rowsWritten = 0; int rowsWritten = 0;
...@@ -685,6 +669,7 @@ static int tsdbMergeDataWithBlock(SRWHelper *pHelper, int blkIdx, SDataCols *pDa ...@@ -685,6 +669,7 @@ static int tsdbMergeDataWithBlock(SRWHelper *pHelper, int blkIdx, SDataCols *pDa
SCompBlock *pCompBlock = pHelper->pCompInfo->blocks + blkIdx; SCompBlock *pCompBlock = pHelper->pCompInfo->blocks + blkIdx;
ASSERT(pCompBlock->numOfSubBlocks >= 1); ASSERT(pCompBlock->numOfSubBlocks >= 1);
ASSERT(keyFirst >= pCompBlock->keyFirst); ASSERT(keyFirst >= pCompBlock->keyFirst);
ASSERT(compareKeyBlock((void *)&keyFirst, (void *)pCompBlock) == 0);
// Start here // Start here
TSKEY keyLimit = TSKEY keyLimit =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册