From 6c19e886df8b44f97cdc95f13adb3f270cad3388 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Fri, 28 Oct 2022 17:58:59 +0800 Subject: [PATCH 1/2] fix(query): move the init function for different reader. --- source/dnode/vnode/src/tsdb/tsdbRead.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index f83755fc4f..5e5e287cf9 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -3601,16 +3601,6 @@ int32_t tsdbReaderOpen(SVnode* pVnode, SQueryTableDataCond* pCond, SArray* pTabl if (code != TSDB_CODE_SUCCESS) { return code; } - - code = doOpenReaderImpl(pNextReader); - if (code != TSDB_CODE_SUCCESS) { - return code; - } - - code = doOpenReaderImpl(pReader); - if (code != TSDB_CODE_SUCCESS) { - return code; - } } } @@ -3741,9 +3731,14 @@ bool tsdbNextDataBlock(STsdbReader* pReader) { if (pReader->innerReader[0] != NULL && pReader->step == 0) { bool ret = doTsdbNextDataBlock(pReader->innerReader[0]); - resetDataBlockScanInfo(pReader->innerReader[0]->status.pTableMap, pReader->innerReader[0]->window.ekey); - pReader->step = EXTERNAL_ROWS_PREV; + // prepare for the main scan + int32_t code = doOpenReaderImpl(pReader); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + + pReader->step = EXTERNAL_ROWS_PREV; if (ret) { return ret; } @@ -3759,7 +3754,12 @@ bool tsdbNextDataBlock(STsdbReader* pReader) { } if (pReader->innerReader[1] != NULL && pReader->step == EXTERNAL_ROWS_MAIN) { - resetDataBlockScanInfo(pReader->innerReader[1]->status.pTableMap, pReader->window.ekey); + // prepare for the next row scan + int32_t code = doOpenReaderImpl(pReader->innerReader[1]); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + bool ret1 = doTsdbNextDataBlock(pReader->innerReader[1]); pReader->step = EXTERNAL_ROWS_NEXT; if (ret1) { From bae6d824c2576e9fcc84ebade3992b6f93adb8f8 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sat, 29 Oct 2022 12:54:39 +0800 Subject: [PATCH 2/2] fix(query): init blockscanInfo correctly. --- source/dnode/vnode/src/tsdb/tsdbRead.c | 17 ++++++++++------- tests/system-test/2-query/interp.py | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index 5e5e287cf9..9add18a4dc 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -3478,6 +3478,7 @@ static int32_t doOpenReaderImpl(STsdbReader* pReader) { initFilesetIterator(&pReader->status.fileIter, pReader->pReadSnap->fs.aDFileSet, pReader); resetDataBlockIterator(&pReader->status.blockIter, pReader->order); +// resetDataBlockScanInfo(pReader->status.pTableMap, pReader->window.skey); // no data in files, let's try buffer in memory if (pReader->status.fileIter.numOfFiles == 0) { @@ -3731,13 +3732,6 @@ bool tsdbNextDataBlock(STsdbReader* pReader) { if (pReader->innerReader[0] != NULL && pReader->step == 0) { bool ret = doTsdbNextDataBlock(pReader->innerReader[0]); - - // prepare for the main scan - int32_t code = doOpenReaderImpl(pReader); - if (code != TSDB_CODE_SUCCESS) { - return code; - } - pReader->step = EXTERNAL_ROWS_PREV; if (ret) { return ret; @@ -3745,6 +3739,14 @@ bool tsdbNextDataBlock(STsdbReader* pReader) { } if (pReader->step == EXTERNAL_ROWS_PREV) { + // prepare for the main scan + int32_t code = doOpenReaderImpl(pReader); + resetDataBlockScanInfo(pReader->status.pTableMap, pReader->innerReader[0]->window.ekey); + + if (code != TSDB_CODE_SUCCESS) { + return code; + } + pReader->step = EXTERNAL_ROWS_MAIN; } @@ -3756,6 +3758,7 @@ bool tsdbNextDataBlock(STsdbReader* pReader) { if (pReader->innerReader[1] != NULL && pReader->step == EXTERNAL_ROWS_MAIN) { // prepare for the next row scan int32_t code = doOpenReaderImpl(pReader->innerReader[1]); + resetDataBlockScanInfo(pReader->innerReader[1]->status.pTableMap, pReader->window.ekey); if (code != TSDB_CODE_SUCCESS) { return code; } diff --git a/tests/system-test/2-query/interp.py b/tests/system-test/2-query/interp.py index bee20710b5..71501d5967 100644 --- a/tests/system-test/2-query/interp.py +++ b/tests/system-test/2-query/interp.py @@ -11,7 +11,7 @@ class TDTestCase: def init(self, conn, logSql): tdLog.debug(f"start to excute {__file__}") - tdSql.init(conn.cursor()) + tdSql.init(conn.cursor(), True) def run(self): dbname = "db"