Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • caosdb/src/caosdb-cpplib
1 result
Show changes
Commits on Source (5)
......@@ -20,4 +20,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
* #11 - Transaction::GetResultSet() now always returns a valid reference.
### Security
......@@ -365,6 +365,10 @@ public:
[[nodiscard]] inline auto GetStatus() const noexcept -> TransactionStatus { return this->status; }
[[nodiscard]] inline auto GetResultSet() const noexcept -> const ResultSet & {
if (!this->result_set) {
this->result_set = std::make_unique<MultiResultSet>(
std::move(std::vector<std::unique_ptr<Entity>>()));
}
return *(this->result_set.get());
}
......
......@@ -112,7 +112,7 @@ void UnaryRpcHandler::handleCallCompleteState() {
switch (status_.error_code()) {
case grpc::OK:
CAOSDB_LOG_INFO(logger_name) << "UnaryRpcHandler finished successfully.";
CAOSDB_LOG_TRACE(logger_name) << "UnaryRpcHandler finished successfully.";
break;
default:
auto code(static_cast<StatusCode>(status_.error_code()));
......
......@@ -26,6 +26,7 @@ set(test_cases
test_entity
test_file_transmission
test_info
test_issues
test_list_properties
test_protobuf
test_transaction
......
/*
* This file is a part of the CaosDB Project.
*
* Copyright (C) 2021 Daniel Hornung <d.hornung@indiscale.com>
* Copyright (C) 2021 IndiScale GmbH <info@indiscale.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "caosdb/configuration.h" // for InsecureConnectionConfig...
#include "caosdb/connection.h" // for Connection
#include "caosdb/exceptions.h" // for ConnectionError
#include "caosdb/status_code.h"
#include "caosdb/transaction.h" // for Transaction
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestPa...
#include <gtest/gtest_pred_impl.h> // for Test, TestInfo, TEST
namespace caosdb::transaction {
using caosdb::configuration::InsecureConnectionConfiguration;
using caosdb::connection::Connection;
TEST(test_issues, test_issue_11) {
const auto *host = "localhost";
auto configuration = InsecureConnectionConfiguration(host, 8000);
Connection connection(configuration);
auto transaction = connection.CreateTransaction();
ASSERT_EQ(transaction->GetResultSet().size(), 0);
transaction->RetrieveById("100");
ASSERT_EQ(StatusCode::EXECUTING, transaction->ExecuteAsynchronously());
// Trying to obtain ResultSet while it is still empty.
ASSERT_EQ(transaction->GetResultSet().size(), 0);
}
} // namespace caosdb::transaction