From da6cee5ee1e54f23c67d15cdd88dd137e8809013 Mon Sep 17 00:00:00 2001 From: ziyi chen Date: Fri, 13 Oct 2023 21:16:41 -0400 Subject: [PATCH] Fix list slice utf8 --- src/include/function/list/functions/list_slice_function.h | 6 +++--- test/test_files/tinysnb/function/list.test | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/include/function/list/functions/list_slice_function.h b/src/include/function/list/functions/list_slice_function.h index 5290e214d3..5185975e12 100644 --- a/src/include/function/list/functions/list_slice_function.h +++ b/src/include/function/list/functions/list_slice_function.h @@ -4,6 +4,7 @@ #include #include "common/types/ku_list.h" +#include "function/string/functions/substr_function.h" namespace kuzu { namespace function { @@ -31,9 +32,8 @@ struct ListSlice { common::ValueVector& resultValueVector) { int64_t startIdx = (begin == 0) ? 1 : begin; int64_t endIdx = (end == 0) ? str.len : end; - result.len = std::min(endIdx - startIdx + 1, str.len - startIdx + 1); - common::StringVector::addString( - &resultValueVector, result, (const char*)(str.getData() + startIdx - 1), result.len); + SubStr::operation(str, startIdx, std::min(endIdx - startIdx + 1, str.len - startIdx + 1), + result, resultValueVector); } }; diff --git a/test/test_files/tinysnb/function/list.test b/test/test_files/tinysnb/function/list.test index a35dd899cc..cc56a0c12c 100644 --- a/test/test_files/tinysnb/function/list.test +++ b/test/test_files/tinysnb/function/list.test @@ -301,6 +301,10 @@ sdwe ad +-LOG SliceUTF8String +-STATEMENT Return '这是一个中文句子'[2:5] +---- 1 +是一个中 -LOG ListLenStructuredListOfInts -STATEMENT MATCH (a:person) RETURN len(a.workedHours)