From aeb75ceabd4b451039655329fc49f1ddee4e1a21 Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Thu, 28 Aug 2025 10:05:21 +0800 Subject: [PATCH 1/5] implement client-cpp memory check(asan) --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index c6924060ba9b2..5cf503c4efce5 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) From 460c97def91f183282ba3a54cb19a8b62c260af6 Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Thu, 28 Aug 2025 11:13:03 +0800 Subject: [PATCH 2/5] fix ubuntu compilation --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index 5cf503c4efce5..aa17a9a600738 100644 --- a/iotdb-client/client-cpp/src/main/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/main/CMakeLists.txt @@ -42,8 +42,8 @@ ELSE() 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) + add_compile_options(-fsanitize=address -fno-omit-frame-pointer -static-libasan) + add_link_options(-fsanitize=address -static-libasan) ENDIF() # Add the generated source files to the sources for the library. From 0bb79c18ed7138f801a64ca76c106ab4df07d0ee Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Thu, 28 Aug 2025 12:22:48 +0800 Subject: [PATCH 3/5] fix compilation error --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 5 ----- iotdb-client/client-cpp/src/test/CMakeLists.txt | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index aa17a9a600738..c6924060ba9b2 100644 --- a/iotdb-client/client-cpp/src/main/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/main/CMakeLists.txt @@ -41,11 +41,6 @@ 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 -static-libasan) - add_link_options(-fsanitize=address -static-libasan) -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 186c08b634d46..83a9782492f6a 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 -static-libasan) + add_link_options(-fsanitize=address -static-libasan) +ENDIF() + ADD_EXECUTABLE(${TARGET_NAME} main.cpp cpp/sessionIT.cpp) ADD_EXECUTABLE(${TARGET_NAME_RELATIONAL} main_Relational.cpp cpp/sessionRelationalIT.cpp) From faf790bb0bbdfb59fceaddba1d14a8c099cd748e Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Thu, 28 Aug 2025 14:46:53 +0800 Subject: [PATCH 4/5] fix memory leak --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 5 +++++ .../client-cpp/src/test/cpp/sessionIT.cpp | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index c6924060ba9b2..aa17a9a600738 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 -static-libasan) + add_link_options(-fsanitize=address -static-libasan) +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/cpp/sessionIT.cpp b/iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp index 18ccb2a839352..d08e0c3fbb073 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 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]); From 0fccbf462e73b4ba348d8dc0019103db346aa240 Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Thu, 28 Aug 2025 15:00:17 +0800 Subject: [PATCH 5/5] fix conpilation error on moacos --- iotdb-client/client-cpp/src/main/CMakeLists.txt | 4 ++-- iotdb-client/client-cpp/src/test/CMakeLists.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/iotdb-client/client-cpp/src/main/CMakeLists.txt b/iotdb-client/client-cpp/src/main/CMakeLists.txt index aa17a9a600738..5cf503c4efce5 100644 --- a/iotdb-client/client-cpp/src/main/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/main/CMakeLists.txt @@ -42,8 +42,8 @@ ELSE() ENDIF() IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MSVC) - add_compile_options(-fsanitize=address -fno-omit-frame-pointer -static-libasan) - add_link_options(-fsanitize=address -static-libasan) + 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. diff --git a/iotdb-client/client-cpp/src/test/CMakeLists.txt b/iotdb-client/client-cpp/src/test/CMakeLists.txt index 83a9782492f6a..61fade6bf5c3c 100644 --- a/iotdb-client/client-cpp/src/test/CMakeLists.txt +++ b/iotdb-client/client-cpp/src/test/CMakeLists.txt @@ -48,8 +48,8 @@ ELSE() ENDIF() IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT MSVC) - add_compile_options(-fsanitize=address -fno-omit-frame-pointer -static-libasan) - add_link_options(-fsanitize=address -static-libasan) + add_compile_options(-fsanitize=address -fno-omit-frame-pointer) + add_link_options(-fsanitize=address) ENDIF() ADD_EXECUTABLE(${TARGET_NAME} main.cpp cpp/sessionIT.cpp)