This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push: new ea195168a95 Feature/cppclient asan (#16293) ea195168a95 is described below commit ea195168a958edd8e6ae17437119c06aa724d423 Author: Hongzhi Gao <761417...@qq.com> AuthorDate: Thu Aug 28 18:27:38 2025 +0800 Feature/cppclient asan (#16293) * implement client-cpp memory check(asan) * fix ubuntu compilation * fix compilation error * fix memory leak * fix conpilation error on moacos --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 5 +++++ iotdb-client/client-cpp/src/test/CMakeLists.txt | 5 +++++ iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp | 16 ++++++++-------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index c6924060ba9..5cf503c4efc 100644 --- a/iotdb-client/client-cpp/src/main/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/main/CMakeLists.txt @@ -41,6 +41,11 @@ ELSE() SET(THRIFT_STATIC_LIB "${CMAKE_SOURCE_DIR}/../../thrift/lib/libthrift.a") ENDIF() +IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MSVC) + add_compile_options(-fsanitize=address -fno-omit-frame-pointer) + add_link_options(-fsanitize=address) +ENDIF() + # Add the generated source files to the sources for the library. AUX_SOURCE_DIRECTORY(./generated-sources-cpp SESSION_SRCS) IF(MSVC) diff --git a/iotdb-client/client-cpp/src/test/CMakeLists.txt b/iotdb-client/client-cpp/src/test/CMakeLists.txt index 186c08b634d..61fade6bf5c 100644 --- a/iotdb-client/client-cpp/src/test/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/test/CMakeLists.txt @@ -47,6 +47,11 @@ ELSE() SET(THRIFT_STATIC_LIB "${CMAKE_SOURCE_DIR}/../../thrift/lib/libthrift.a") ENDIF() +IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MSVC) + add_compile_options(-fsanitize=address -fno-omit-frame-pointer) + add_link_options(-fsanitize=address) +ENDIF() + ADD_EXECUTABLE(${TARGET_NAME} main.cpp cpp/sessionIT.cpp) ADD_EXECUTABLE(${TARGET_NAME_RELATIONAL} main_Relational.cpp cpp/sessionRelationalIT.cpp) diff --git a/iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp b/iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp index 18ccb2a8393..d08e0c3fbb0 100644 --- a/iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp +++ b/iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp @@ -141,7 +141,8 @@ TEST_CASE("Test insertRecord by string", "[testInsertRecord]") { while (sessionDataSet->hasNext()) { long index = 1; count++; - for (const Field &f: sessionDataSet->next()->fields) { + auto fields = sessionDataSet->next()->fields; + for (const Field &f: fields) { REQUIRE(f.longV.value() == index); index++; } @@ -186,7 +187,8 @@ TEST_CASE("Test insertRecords ", "[testInsertRecords]") { while (sessionDataSet->hasNext()) { long index = 1; count++; - for (const Field &f: sessionDataSet->next()->fields) { + auto fields = sessionDataSet->next()->fields; + for (const Field &f: fields) { REQUIRE(f.longV.value() == index); index++; } @@ -386,7 +388,8 @@ TEST_CASE("Test insertTablet ", "[testInsertTablet]") { while (sessionDataSet->hasNext()) { long index = 0; count++; - for (const Field& f: sessionDataSet->next()->fields) { + auto fields = sessionDataSet->next()->fields; + for (const Field &f: fields) { REQUIRE(f.longV.value() == index); index++; } @@ -436,7 +439,8 @@ TEST_CASE("Test insertTablets ", "[testInsertTablets]") { while (sessionDataSet->hasNext()) { long index = 0; count++; - for (const Field& f: sessionDataSet->next()->fields) { + auto fields = sessionDataSet->next()->fields; + for (const Field &f: fields) { REQUIRE(f.longV.value() == index); index++; } @@ -614,10 +618,6 @@ TEST_CASE("Test executeRawDataQuery ", "[executeRawDataQuery]") { sessionDataSet->setFetchSize(10); vector<string> columns = sessionDataSet->getColumnNames(); columns = sessionDataSet->getColumnNames(); - for (const string &column : columns) { - cout << column << " " ; - } - cout << endl; REQUIRE(columns[0] == "Time"); REQUIRE(columns[1] == paths[0]); REQUIRE(columns[2] == paths[1]);