diff --git a/CMakeLists.txt b/CMakeLists.txt index 97830558c446a3e6718d68b8ba2cee7c033bd88d..1cdccf80e450d7da1abddba854572189bc583b15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ cmake_minimum_required(VERSION 3.13) -set(libcaosdb_VERSION 0.0.17) +set(libcaosdb_VERSION 0.0.19) set(libcaosdb_COMPATIBLE_SERVER_VERSION_MAJOR 0) set(libcaosdb_COMPATIBLE_SERVER_VERSION_MINOR 5) set(libcaosdb_COMPATIBLE_SERVER_VERSION_PATCH 0) diff --git a/conanfile.py b/conanfile.py index 7a712bbd99136c5054f7a8fedeee6fb5af5ce4f7..d29a0a6f091d85426327bd82a4282ca3b9d787de 100644 --- a/conanfile.py +++ b/conanfile.py @@ -3,7 +3,7 @@ from conans import ConanFile, CMake, tools class CaosdbConan(ConanFile): name = "caosdb" - version = "0.0.17" + version = "0.0.19" license = "AGPL-3.0-or-later" author = "Timm C. Fitschen <t.fitschen@indiscale.com>" url = "https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git" diff --git a/include/caosdb/protobuf_helper.h b/include/caosdb/protobuf_helper.h index 9a73c0d726b25a792232530d0e01852d9c0b2e99..8574845b194f0080d2b0f1d07475c4bf1c3f82bd 100644 --- a/include/caosdb/protobuf_helper.h +++ b/include/caosdb/protobuf_helper.h @@ -52,7 +52,7 @@ public: /** * Return a json representation of this object. */ - inline auto ToString() const noexcept -> const std::string { + [[nodiscard]] inline auto ToString() const noexcept -> const std::string { CAOSDB_DEBUG_MESSAGE_STRING(*wrapped, out) return out; } diff --git a/include/caosdb/transaction.h b/include/caosdb/transaction.h index 0699e14b28ae6e4b44ff495695c843ffa2e8d01f..153ee46f8173d98a13203f31cd6a140999a58689 100644 --- a/include/caosdb/transaction.h +++ b/include/caosdb/transaction.h @@ -93,7 +93,7 @@ } \ switch (this->transaction_type) { \ case NONE: \ - this->transaction_type = TransactionType::DELETE; \ + this->transaction_type = TransactionType::MIXED_WRITE; \ case DELETE: \ case MIXED_WRITE: \ case MIXED_READ_AND_WRITE: \ @@ -115,7 +115,7 @@ } \ switch (this->transaction_type) { \ case NONE: \ - this->transaction_type = TransactionType::INSERT; \ + this->transaction_type = TransactionType::MIXED_WRITE; \ case INSERT: \ case MIXED_WRITE: \ case MIXED_READ_AND_WRITE: \ @@ -137,8 +137,8 @@ } \ switch (this->transaction_type) { \ case NONE: \ - this->transaction_type = TransactionType::INSERT; \ - case INSERT: \ + this->transaction_type = TransactionType::MIXED_WRITE; \ + case UPDATE: \ case MIXED_WRITE: \ case MIXED_READ_AND_WRITE: \ break; \ diff --git a/include/caosdb/value.h b/include/caosdb/value.h index b7da9903eece341955bb1d9a93e3e89d72f866eb..fd70c4f837dccaeedca0c9801c2518eb111af398 100644 --- a/include/caosdb/value.h +++ b/include/caosdb/value.h @@ -247,9 +247,8 @@ public: static const std::vector<ScalarValue> empty_collection; return empty_collection; } - inline auto ToString() const noexcept -> const std::string { - CAOSDB_DEBUG_MESSAGE_STRING(*wrapped, out) - return out; + [[nodiscard]] inline auto ToString() const noexcept -> const std::string { + return ProtoMessageWrapper::ToString(); } friend class Value; @@ -416,6 +415,10 @@ public: return *this; } + [[nodiscard]] inline auto ToString() const noexcept -> const std::string { + return ProtoMessageWrapper::ToString(); + } + friend class Entity; friend class Property; diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp index 551d90560498a2aee4b3ce169d416079e8cc80c0..678d6fbd728cdd82158e263a476f4ce63bc19310 100644 --- a/src/caosdb/transaction.cpp +++ b/src/caosdb/transaction.cpp @@ -158,7 +158,7 @@ auto Transaction::InsertEntity(Entity *entity) noexcept -> StatusCode { entity->SetFileTransmissionId(file_transmission_id); upload_files.push_back(entity->GetFileDescriptor()); } - this->status = TransactionStatus::READY(); + this->status = TransactionStatus::GO_ON(); return this->status.GetCode(); } @@ -175,7 +175,7 @@ auto Transaction::UpdateEntity(Entity *entity) noexcept -> StatusCode { entity->SetFileTransmissionId(file_transmission_id); upload_files.push_back(entity->GetFileDescriptor()); } - this->status = TransactionStatus::READY(); + this->status = TransactionStatus::GO_ON(); return this->status.GetCode(); } @@ -194,12 +194,6 @@ auto Transaction::ExecuteAsynchronously() noexcept -> StatusCode { // NOLINT return StatusCode::TRANSACTION_STATUS_ERROR; } switch (this->transaction_type) { - case MIXED_WRITE: - CAOSDB_LOG_ERROR_AND_RETURN_STATUS( - logger_name, StatusCode::UNSUPPORTED_FEATURE, - "MIXED_WRITE UNSUPPORTED: The current implementation does not support " - "mixed write transactions (containing insertions, deletions, and updates " - "in one transaction).") case MIXED_READ_AND_WRITE: CAOSDB_LOG_ERROR_AND_RETURN_STATUS( logger_name, StatusCode::UNSUPPORTED_FEATURE, diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 361b0918060e46cf71b435e519b3a7ec20b1ee46..d5b894b8c37eb747b9e13739ced8b1643a6f59ed 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -984,8 +984,7 @@ TEST_F(test_ccaosdb, test_insert_update_delete) { caosdb_entity_entity_set_file_path(&entity, "some_name"); auto return_code = caosdb_transaction_transaction_insert_entity(&insert_transaction, &entity); - // For now, nothing further can be done here, so it should be READY - EXPECT_EQ(return_code, caosdb::StatusCode::READY); + EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); caosdb_transaction_transaction update_transaction; caosdb_connection_connection_create_transaction(&connection, &update_transaction);