diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index cbb128045eb849d00b9b9b03ea0c9d04abd37de7..2f0bc3ecc8182008495b1dd02ff4042a51fd07f1 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -620,9 +620,13 @@ static void filterDataInDataBlock(STsdbQueryHandle* pQueryHandle, STableCheckInf if (pCol->info.type != TSDB_DATA_TYPE_BINARY && pCol->info.type != TSDB_DATA_TYPE_NCHAR) { memmove(pCol->pData, src->pData + bytes * start, bytes * pQueryHandle->realNumOfRows); } else { // handle the var-string + char* dst = pCol->pData; + + // todo refactor, only copy one-by-one for(int32_t k = start; k < pQueryHandle->realNumOfRows + start; ++k) { char* p = tdGetColDataOfRow(src, k); - memcpy(pCol->pData + k * bytes, p, varDataTLen(p)); // todo refactor + memcpy(dst, p, varDataTLen(p)); + dst += varDataTLen(p); } } diff --git a/tests/script/general/parser/lastrow_query.sim b/tests/script/general/parser/lastrow_query.sim index a5e003fb651e69024326c58e5d8716d6509f28a2..e43cc1517398dd067bad7531d0960b3a459cde27 100644 --- a/tests/script/general/parser/lastrow_query.sim +++ b/tests/script/general/parser/lastrow_query.sim @@ -43,9 +43,11 @@ if $data07 != 1 then return -1 endi if $data08 != BINARY then + print expect BINARY actual: $data08 return -1 endi if $data09 != NCHAR then + print expect NCHAR actual: $data09 return -1 endi