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) diff --git a/iotdb-client/client-cpp/src/test/CMakeLists.txt b/iotdb-client/client-cpp/src/test/CMakeLists.txt index 186c08b634d46..61fade6bf5c3c 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 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]);