From 3f5bf97c88ceca6c5e19be2ad69a3694326753f6 Mon Sep 17 00:00:00 2001 From: hzcheng Date: Sun, 22 Mar 2020 16:41:29 +0800 Subject: [PATCH 1/2] TD-34 --- src/vnode/tsdb/src/tsdbMain.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/vnode/tsdb/src/tsdbMain.c b/src/vnode/tsdb/src/tsdbMain.c index 3a4e427798..08d5022122 100644 --- a/src/vnode/tsdb/src/tsdbMain.c +++ b/src/vnode/tsdb/src/tsdbMain.c @@ -721,7 +721,7 @@ static int32_t tsdbInsertDataToTable(tsdb_repo_t *repo, SSubmitBlk *pBlock) { static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY minKey, TSKEY maxKey, int maxRowsToRead, void *dst) { int numOfRows = 0; do { - SSkipListNode *node = tSkiplistIterGet(pIter); + SSkipListNode *node = tSkipListIterGet(pIter); SDataRow row = SL_GET_NODE_DATA(node); if (dataRowKey(row) > maxKey) break; } while (tSkipListIterNext(pIter)); @@ -734,11 +734,12 @@ static void *tsdbCommitToFile(void *arg) { STsdbRepo * pRepo = (STsdbRepo *)arg; STsdbMeta * pMeta = pRepo->tsdbMeta; STsdbCache *pCache = pRepo->tsdbCache; - STsdbRepo * pCfg = &(pRepo->config); + STsdbCfg * pCfg = &(pRepo->config); if (pCache->imem == NULL) return; - int sfid = tsdbGetKeyFileId(pCache->imem->keyFirst); - int efid = tsdbGetKeyFileId(pCache->imem->keyLast); + int sfid = tsdbGetKeyFileId(pCache->imem->keyFirst, pCfg->daysPerFile, pCfg->precision); + int efid = tsdbGetKeyFileId(pCache->imem->keyLast, pCfg->daysPerFile, pCfg->precision); + SSkipListIterator **iters = (SSkipListIterator **)calloc(pCfg->maxTables, sizeof(SSkipListIterator *)); if (iters == NULL) { // TODO: deal with the error From a9cf4bd32e5fdffdda3ee840477d5618f72e34d9 Mon Sep 17 00:00:00 2001 From: hzcheng Date: Sun, 22 Mar 2020 17:05:55 +0800 Subject: [PATCH 2/2] TD-34 --- src/vnode/tsdb/src/tsdbMain.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/vnode/tsdb/src/tsdbMain.c b/src/vnode/tsdb/src/tsdbMain.c index 08d5022122..cd673d2d89 100644 --- a/src/vnode/tsdb/src/tsdbMain.c +++ b/src/vnode/tsdb/src/tsdbMain.c @@ -718,12 +718,18 @@ static int32_t tsdbInsertDataToTable(tsdb_repo_t *repo, SSubmitBlk *pBlock) { return 0; } -static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY minKey, TSKEY maxKey, int maxRowsToRead, void *dst) { +static int tsdbReadRowsFromCache(SSkipListIterator *pIter, TSKEY maxKey, int maxRowsToRead, void *dst) { int numOfRows = 0; do { SSkipListNode *node = tSkipListIterGet(pIter); - SDataRow row = SL_GET_NODE_DATA(node); + if (node == NULL) break; + + SDataRow row = SL_GET_NODE_DATA(node); if (dataRowKey(row) > maxKey) break; + // Convert row data to column data + + numOfRows++; + if (numOfRows > maxRowsToRead) break; } while (tSkipListIterNext(pIter)); return numOfRows; } @@ -746,6 +752,9 @@ static void *tsdbCommitToFile(void *arg) { return NULL; } + int maxCols = pMeta->maxCols; + int maxBytes = pMeta->maxRowBytes; + for (int fid = sfid; fid <= efid; fid++) { TSKEY minKey = 0, maxKey = 0; tsdbGetKeyRangeOfFileId(pCfg->daysPerFile, pCfg->precision, fid, &minKey, &maxKey); @@ -754,7 +763,7 @@ static void *tsdbCommitToFile(void *arg) { STable *pTable = pMeta->tables[tid]; if (pTable == NULL || pTable->imem == NULL) continue; if (iters[tid] == NULL) { // create table iterator - iters[tid] = tSkipListCreateIter(pTable->imem); + iters[tid] = tSkipListCreateIter(pTable->imem->pData); // TODO: deal with the error if (iters[tid] == NULL) break; if (!tSkipListIterNext(iters[tid])) { @@ -763,7 +772,10 @@ static void *tsdbCommitToFile(void *arg) { } // Loop the iterator - // tsdbReadRowsFromCache(); + int rowsRead = 0; + while ((rowsRead = tsdbReadRowsFromCache(iters[tid], maxKey, pCfg->maxRowsPerFileBlock, NULL)) > 0) { + int k = 0; + } } }