diff --git a/CHANGELOG.md b/CHANGELOG.md index 990f0e6..8329234 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,13 @@ # Changelog -## LMDBAL 0.5.1 (UNRELEASED) +## LMDBAL 0.5.1 (October 21, 2023) ### Improvements - RAII transactions - reduced overhead for private transaction finctions +### Bug fixes +- bug fix with cache fallthough + ## LMDBAL 0.5.0 (October 15, 2023) ### New Features - duplicates support (only for table) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d73014..6825b0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,10 +74,7 @@ if (BUILD_TESTS) add_subdirectory(test) endif () -target_include_directories(${PROJECT_NAME} PUBLIC - "$" - "$" -) +target_include_directories(${PROJECT_NAME} PUBLIC "$") target_include_directories(${PROJECT_NAME} PRIVATE ${Qt${QT_VERSION_MAJOR}_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} PRIVATE ${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 564a59b..2da5cd8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,25 +14,13 @@ set(HEADERS cursor.hpp cache.h cache.hpp - serializer.h - serializer.hpp - serializer_uint8.hpp - serializer_uint16.hpp - serializer_uint32.hpp - serializer_uint64.hpp - serializer_int8.hpp - serializer_int16.hpp - serializer_int32.hpp - serializer_int64.hpp - serializer_float.hpp - serializer_double.hpp - serializer_stdstring.hpp - serializer_qstring.hpp - serializer_qbytearray.hpp operators.hpp transaction.h ) target_sources(${PROJECT_NAME} PRIVATE ${SOURCES}) +target_include_directories(${PROJECT_NAME} PUBLIC "$") + +add_subdirectory(serializer) install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_LOW}) diff --git a/src/cache.hpp b/src/cache.hpp index 52b17de..e9ae0aa 100644 --- a/src/cache.hpp +++ b/src/cache.hpp @@ -841,27 +841,23 @@ void LMDBAL::Cache::handleTransactionEntry(const Entry& entry) { std::pair* pair = static_cast*>(entry.second); handleAddRecord(pair->first, pair->second); delete pair; - } - break; + } break; case Operation::remove: { K* key = static_cast(entry.second); handleRemoveRecord(*key); delete key; - } - - break; + } break; case Operation::change: { std::pair* pair = static_cast*>(entry.second); handleChangeRecord(pair->first, pair->second); delete pair; - } + } break; case Operation::force: { std::tuple* tuple = static_cast*>(entry.second); const std::tuple& t = *tuple; handleForceRecord(std::get<1>(t), std::get<2>(t), std::get<0>(t)); delete tuple; - } - break; + } break; case Operation::drop: handleDrop(); break; @@ -873,8 +869,7 @@ void LMDBAL::Cache::handleTransactionEntry(const Entry& entry) { const std::tuple>& t = * tuple; handleAddRecords(std::get<2>(t), std::get<0>(t), std::get<1>(t)); delete tuple; - } - break; + } break; } } diff --git a/src/serializer/CMakeLists.txt b/src/serializer/CMakeLists.txt new file mode 100644 index 0000000..f4148e9 --- /dev/null +++ b/src/serializer/CMakeLists.txt @@ -0,0 +1,21 @@ +set(HEADERS + serializer.h + serializer.hpp + serializer_uint8.hpp + serializer_uint16.hpp + serializer_uint32.hpp + serializer_uint64.hpp + serializer_int8.hpp + serializer_int16.hpp + serializer_int32.hpp + serializer_int64.hpp + serializer_float.hpp + serializer_double.hpp + serializer_stdstring.hpp + serializer_qstring.hpp + serializer_qbytearray.hpp +) + +target_include_directories(${PROJECT_NAME} PUBLIC "$") + +install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_LOW}) diff --git a/src/serializer.h b/src/serializer/serializer.h similarity index 100% rename from src/serializer.h rename to src/serializer/serializer.h diff --git a/src/serializer.hpp b/src/serializer/serializer.hpp similarity index 100% rename from src/serializer.hpp rename to src/serializer/serializer.hpp diff --git a/src/serializer_double.hpp b/src/serializer/serializer_double.hpp similarity index 100% rename from src/serializer_double.hpp rename to src/serializer/serializer_double.hpp diff --git a/src/serializer_float.hpp b/src/serializer/serializer_float.hpp similarity index 100% rename from src/serializer_float.hpp rename to src/serializer/serializer_float.hpp diff --git a/src/serializer_int16.hpp b/src/serializer/serializer_int16.hpp similarity index 100% rename from src/serializer_int16.hpp rename to src/serializer/serializer_int16.hpp diff --git a/src/serializer_int32.hpp b/src/serializer/serializer_int32.hpp similarity index 100% rename from src/serializer_int32.hpp rename to src/serializer/serializer_int32.hpp diff --git a/src/serializer_int64.hpp b/src/serializer/serializer_int64.hpp similarity index 100% rename from src/serializer_int64.hpp rename to src/serializer/serializer_int64.hpp diff --git a/src/serializer_int8.hpp b/src/serializer/serializer_int8.hpp similarity index 100% rename from src/serializer_int8.hpp rename to src/serializer/serializer_int8.hpp diff --git a/src/serializer_qbytearray.hpp b/src/serializer/serializer_qbytearray.hpp similarity index 100% rename from src/serializer_qbytearray.hpp rename to src/serializer/serializer_qbytearray.hpp diff --git a/src/serializer_qstring.hpp b/src/serializer/serializer_qstring.hpp similarity index 100% rename from src/serializer_qstring.hpp rename to src/serializer/serializer_qstring.hpp diff --git a/src/serializer_stdstring.hpp b/src/serializer/serializer_stdstring.hpp similarity index 100% rename from src/serializer_stdstring.hpp rename to src/serializer/serializer_stdstring.hpp diff --git a/src/serializer_uint16.hpp b/src/serializer/serializer_uint16.hpp similarity index 100% rename from src/serializer_uint16.hpp rename to src/serializer/serializer_uint16.hpp diff --git a/src/serializer_uint32.hpp b/src/serializer/serializer_uint32.hpp similarity index 100% rename from src/serializer_uint32.hpp rename to src/serializer/serializer_uint32.hpp diff --git a/src/serializer_uint64.hpp b/src/serializer/serializer_uint64.hpp similarity index 100% rename from src/serializer_uint64.hpp rename to src/serializer/serializer_uint64.hpp diff --git a/src/serializer_uint8.hpp b/src/serializer/serializer_uint8.hpp similarity index 100% rename from src/serializer_uint8.hpp rename to src/serializer/serializer_uint8.hpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ab59a88..3994aac 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -12,7 +12,7 @@ add_executable(runUnitTests duplicates.cpp ) -target_compile_options(runUnitTests PRIVATE -fPIC) +target_compile_options(runUnitTests PRIVATE -fPIC -Wall -Wextra -O0) target_include_directories(runUnitTests PRIVATE ${CMAKE_SOURCE_DIR}/src) target_include_directories(runUnitTests PRIVATE ${Qt${QT_VERSION_MAJOR}_INCLUDE_DIRS}) diff --git a/test/storagetransaction.cpp b/test/storagetransaction.cpp index ad21846..4f04931 100644 --- a/test/storagetransaction.cpp +++ b/test/storagetransaction.cpp @@ -181,6 +181,7 @@ TEST_F(StorageTransactionsTest, ConcurentModification) { int pid = fork(); if (pid == 0) { // I am the child + usleep(1); std::cout << "beggining second transaction" << std::endl; LMDBAL::WriteTransaction txn2 = db->beginTransaction(); //<--- this is where the execution should pause //and wait for the first transaction to get finished @@ -233,6 +234,7 @@ TEST_F(StorageTransactionsTest, RAIIResourceFree) { int pid = fork(); if (pid == 0) { // I am the child + usleep(1); std::cout << "beggining child transaction" << std::endl; LMDBAL::WriteTransaction txn2 = db->beginTransaction(); //<--- this is where the execution should pause //and wait for the first transaction to get finished