From 557064d1f3aae9a05844c1de911170e40a58bbfa Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Fri, 8 May 2020 15:02:55 +0800 Subject: [PATCH] [td-225] fix bugs for last(*) query --- src/common/src/ttypes.c | 4 ++-- src/inc/taosdef.h | 2 +- src/tsdb/src/tsdbRead.c | 11 ++++------- tests/script/general/parser/first_last.sim | 2 +- tests/script/general/parser/first_last_query.sim | 2 +- tests/script/general/parser/import_commit1.sim | 2 +- tests/script/general/parser/import_commit2.sim | 2 +- tests/script/general/parser/import_commit3.sim | 2 +- 8 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/common/src/ttypes.c b/src/common/src/ttypes.c index 533f992151..626fde3293 100644 --- a/src/common/src/ttypes.c +++ b/src/common/src/ttypes.c @@ -92,9 +92,9 @@ bool isNull(const char *val, int32_t type) { case TSDB_DATA_TYPE_DOUBLE: return *(uint64_t *)val == TSDB_DATA_DOUBLE_NULL; case TSDB_DATA_TYPE_NCHAR: - return *(uint32_t *)val == TSDB_DATA_NCHAR_NULL; + return *(uint32_t*) varDataVal(val) == TSDB_DATA_NCHAR_NULL; case TSDB_DATA_TYPE_BINARY: - return *(uint8_t *)val == TSDB_DATA_BINARY_NULL; + return *(uint8_t *) varDataVal(val) == TSDB_DATA_BINARY_NULL; default: return false; }; diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index 09136fa6ce..499f19b76d 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -241,7 +241,7 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); #define TSDB_MULTI_METERMETA_MAX_NUM 100000 // maximum batch size allowed to load metermeta #define TSDB_MIN_CACHE_BLOCK_SIZE 1 -#define TSDB_MAX_CACHE_BLOCK_SIZE 1000000 +#define TSDB_MAX_CACHE_BLOCK_SIZE 10240 // 10GB for each vnode #define TSDB_DEFAULT_CACHE_BLOCK_SIZE 16 #define TSDB_MIN_TOTAL_BLOCKS 2 diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index fc1029dff8..008ad223ed 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -335,11 +335,7 @@ static int32_t getFileCompInfo(STsdbQueryHandle* pQueryHandle, int32_t* numOfBlo pCheckInfo->compSize = compIndex->len; } - // tsdbLoadCompBlocks(fileGroup, compIndex, pCheckInfo->pCompInfo); - STable* pTable = tsdbGetTableByUid(tsdbGetMeta(pQueryHandle->pTsdb), pCheckInfo->tableId.uid); - assert(pTable != NULL); - - tsdbSetHelperTable(&pQueryHandle->rhelper, pTable, pQueryHandle->pTsdb); + tsdbSetHelperTable(&pQueryHandle->rhelper, pCheckInfo->pTableObj, pQueryHandle->pTsdb); tsdbLoadCompInfo(&(pQueryHandle->rhelper), (void *)(pCheckInfo->pCompInfo)); SCompInfo* pCompInfo = pCheckInfo->pCompInfo; @@ -472,6 +468,7 @@ static bool loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock filterDataInDataBlock(pQueryHandle, pCheckInfo, pBlock, sa); } else { // the whole block is loaded in to buffer pQueryHandle->realNumOfRows = pBlock->numOfPoints; + cur->pos = 0; } } else { // query ended in current block @@ -491,6 +488,7 @@ static bool loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock filterDataInDataBlock(pQueryHandle, pCheckInfo, pBlock, sa); } else { pQueryHandle->realNumOfRows = pBlock->numOfPoints; + cur->pos = pBlock->numOfPoints - 1; } } @@ -568,7 +566,7 @@ static void filterDataInDataBlock(STsdbQueryHandle* pQueryHandle, STableCheckInf SDataBlockInfo blockInfo = getTrueDataBlockInfo(pCheckInfo, pBlock); SDataCols* pCols = pQueryHandle->rhelper.pDataCols[0]; - + int32_t endPos = cur->pos; if (ASCENDING_ORDER_TRAVERSE(pQueryHandle->order) && pQueryHandle->window.ekey > blockInfo.window.ekey) { endPos = blockInfo.rows - 1; @@ -612,7 +610,6 @@ static void filterDataInDataBlock(STsdbQueryHandle* pQueryHandle, STableCheckInf int32_t reqCols = taosArrayGetSize(pQueryHandle->pColumns); for (int32_t i = 0; i < reqCols; ++i) { -// int16_t colId = *(int16_t*)taosArrayGet(sa, i); SColumnInfoData* pCol = taosArrayGet(pQueryHandle->pColumns, i); int32_t bytes = pCol->info.bytes; diff --git a/tests/script/general/parser/first_last.sim b/tests/script/general/parser/first_last.sim index 8bede7573a..ca709af2fd 100644 --- a/tests/script/general/parser/first_last.sim +++ b/tests/script/general/parser/first_last.sim @@ -21,7 +21,7 @@ $stb = $stbPrefix . $i sql drop database $db -x step1 step1: -sql create database $db rows 400 cache 4096 maxTables 4 +sql create database $db maxrows 400 cache 1 maxTables 4 sql use $db sql create table $stb (ts timestamp, c1 int, c2 bigint, c3 float, c4 double, c5 smallint, c6 tinyint, c7 bool, c8 binary(10), c9 nchar(10)) tags(t1 int) diff --git a/tests/script/general/parser/first_last_query.sim b/tests/script/general/parser/first_last_query.sim index 2a10e09db4..3cad823dbf 100644 --- a/tests/script/general/parser/first_last_query.sim +++ b/tests/script/general/parser/first_last_query.sim @@ -56,8 +56,8 @@ endi if $data07 != 1 then return -1 endi -#if $data08 != null then if $data08 != BINARY then + print expect BINARY, actual: $data08 return -1 endi #if $data09 != null then diff --git a/tests/script/general/parser/import_commit1.sim b/tests/script/general/parser/import_commit1.sim index 743642f208..fde0698c33 100644 --- a/tests/script/general/parser/import_commit1.sim +++ b/tests/script/general/parser/import_commit1.sim @@ -23,7 +23,7 @@ $stb = $stbPrefix . $i sql drop database $db -x step1 step1: -sql create database $db cache 2048 +sql create database $db cache 16 print ====== create tables sql use $db diff --git a/tests/script/general/parser/import_commit2.sim b/tests/script/general/parser/import_commit2.sim index 9d5cfff672..2c49aa7eca 100644 --- a/tests/script/general/parser/import_commit2.sim +++ b/tests/script/general/parser/import_commit2.sim @@ -22,7 +22,7 @@ $stb = $stbPrefix . $i sql drop database $db -x step1 step1: -sql create database $db cache 2048 +sql create database $db cache 16 print ====== create tables sql use $db diff --git a/tests/script/general/parser/import_commit3.sim b/tests/script/general/parser/import_commit3.sim index 7a1f1e902c..7ed5045b9a 100644 --- a/tests/script/general/parser/import_commit3.sim +++ b/tests/script/general/parser/import_commit3.sim @@ -22,7 +22,7 @@ $stb = $stbPrefix . $i sql drop database $db -x step1 step1: -sql create database $db cache 16384 +sql create database $db cache 16 print ====== create tables sql use $db -- GitLab