diff --git a/CMakeLists.txt b/CMakeLists.txt index 31b755b09e5fb5da91cee57fe13abe278d57b4d8..d772f54d1c0d132a314ba1b80838d32b24b124a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,13 @@ SET(CMAKE_CXX_FLAGS ${CMAKE_COMMON_FLAGS}) SET(CMAKE_C_FLAGS ${CMAKE_COMMON_FLAGS}) MESSAGE("CMAKE_CXX_FLAGS is " ${CMAKE_CXX_FLAGS}) +OPTION(ENABLE_ASAN OFF "Enable build with address sanitizer") + +IF (ENABLE_ASAN) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer -fsanitize=address") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address") + SET(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address") +ENDIF() IF (CMAKE_INSTALL_PREFIX) MESSAGE("CMAKE_INSTALL_PREFIX has been set as " ${CMAKE_INSTALL_PREFIX} ) diff --git a/deps/common/lang/lru_cache.h b/deps/common/lang/lru_cache.h index a958c05a8082869b143cf24aa172073f05d15de0..a41372d148a69752ee6a287efe77a6d3c00ec4b9 100644 --- a/deps/common/lang/lru_cache.h +++ b/deps/common/lang/lru_cache.h @@ -215,6 +215,7 @@ private: } searcher_.erase(node); + delete node; } private: diff --git a/src/observer/event/sql_event.cpp b/src/observer/event/sql_event.cpp index 3b0835d45c05374dbc39059850248f24f5c06c39..91eae11566616ef7774e1cbed6d3ff832d2d632e 100644 --- a/src/observer/event/sql_event.cpp +++ b/src/observer/event/sql_event.cpp @@ -13,7 +13,12 @@ See the Mulan PSL v2 for more details. */ // #include "event/sql_event.h" + +#include + #include "event/session_event.h" +#include "sql/parser/parse_defs.h" +#include "sql/stmt/stmt.h" SQLStageEvent::SQLStageEvent(SessionEvent *event, const std::string &sql) : session_event_(event), sql_(sql) {} @@ -26,4 +31,14 @@ SQLStageEvent::~SQLStageEvent() noexcept // session_event_ = nullptr; // session_event->doneImmediate(); } + + if (query_ != nullptr) { + query_destroy(query_); + query_ = nullptr; + } + + if (stmt_ != nullptr) { + delete stmt_; + stmt_ = nullptr; + } }