From 5434019d2b0ce73dc4be2550e40e61c74ae11ee0 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Sun, 18 Feb 2024 15:50:34 +0800 Subject: [PATCH] fix: count(tag) when use qnode --- source/client/src/clientImpl.c | 3 +++ source/common/src/tdatablock.c | 13 +++++++++++-- source/libs/parser/src/parInsertUtil.c | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 9800d233e9..7556152f5a 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -2028,6 +2028,9 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 int32_t rows = *(int32_t*)p; p += sizeof(int32_t); + // bool blankFill = *(bool*)p; + p += sizeof(bool); + int32_t cols = *(int32_t*)p; p += sizeof(int32_t); diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 5382259899..d39daa53e3 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -866,9 +866,9 @@ size_t blockDataGetRowSize(SSDataBlock* pBlock) { * @return */ size_t blockDataGetSerialMetaSize(uint32_t numOfCols) { - // | version | total length | total rows | total columns | flag seg| block group id | column schema + // | version | total length | total rows | blankFull | total columns | flag seg| block group id | column schema // | each column length | - return sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint64_t) + + return sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(bool) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint64_t) + numOfCols * (sizeof(int8_t) + sizeof(int32_t)) + numOfCols * sizeof(int32_t); } @@ -1436,6 +1436,7 @@ SSDataBlock* createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData) { pBlock->info.capacity = 0; pBlock->info.rowSize = 0; pBlock->info.id = pDataBlock->info.id; + pBlock->info.blankFill = pDataBlock->info.blankFill; size_t numOfCols = taosArrayGetSize(pDataBlock->pDataBlock); for (int32_t i = 0; i < numOfCols; ++i) { @@ -2207,6 +2208,10 @@ int32_t blockEncode(const SSDataBlock* pBlock, char* data, int32_t numOfCols) { data += sizeof(int32_t); ASSERT(*rows > 0); + bool* blankFill = (bool*)data; + *blankFill = pBlock->info.blankFill; + data += sizeof(bool); + int32_t* cols = (int32_t*)data; *cols = numOfCols; data += sizeof(int32_t); @@ -2302,6 +2307,9 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { int32_t numOfRows = *(int32_t*)pStart; pStart += sizeof(int32_t); + bool blankFill = *(bool*)pStart; + pStart += sizeof(bool); + // total columns sizeof(int32_t) int32_t numOfCols = *(int32_t*)pStart; pStart += sizeof(int32_t); @@ -2377,6 +2385,7 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { pBlock->info.dataLoad = 1; pBlock->info.rows = numOfRows; + pBlock->info.blankFill = blankFill; ASSERT(pStart - pData == dataLen); return pStart; } diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index 6b655bfae6..c4b021b992 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -660,7 +660,7 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate } char* p = (char*)data; - // | version | total length | total rows | total columns | flag seg| block group id | column schema | each column + // | version | total length | total rows | blankFill | total columns | flag seg| block group id | column schema | each column // length | int32_t version = *(int32_t*)data; p += sizeof(int32_t); @@ -669,6 +669,9 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate int32_t numOfRows = *(int32_t*)p; p += sizeof(int32_t); + // blankFill + p += sizeof(bool); + int32_t numOfCols = *(int32_t*)p; p += sizeof(int32_t);