introduced execute_result

This commit is contained in:
Sascha Kühl
2026-02-10 11:57:09 +01:00
parent d9f9712487
commit 99677b0e21
28 changed files with 158 additions and 170 deletions
@@ -31,7 +31,7 @@ public:
[[nodiscard]] utils::result<utils::version, utils::error> client_version() const override;
[[nodiscard]] utils::result<utils::version, utils::error> server_version() const override;
utils::result<size_t, utils::error> execute(const std::string &stmt) override;
utils::result<sql::execute_result, utils::error> execute(const std::string &stmt) override;
utils::result<std::unique_ptr<sql::statement_impl>, utils::error> prepare(const sql::query_context &context) override;
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::query_context &context) override;
@@ -14,7 +14,7 @@ public:
postgres_statement(PGconn *db, PGresult *res, std::string name, const sql::query_context &query);
~postgres_statement() override;
utils::result<size_t, utils::error> execute(const sql::parameter_binder& bindings) override;
utils::result<sql::execute_result, utils::error> execute(const sql::parameter_binder& bindings) override;
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::parameter_binder& bindings) override;
protected:
@@ -142,18 +142,18 @@ utils::result<std::unique_ptr<sql::statement_impl>, utils::error> postgres_conne
return utils::ok(std::move(s));
}
utils::result<size_t, utils::error> postgres_connection::execute(const std::string &stmt) {
utils::result<sql::execute_result, utils::error> postgres_connection::execute(const std::string &stmt) {
PGresult *res = PQexec(conn_, stmt.c_str());
if (const auto status = PQresultStatus(res); status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK) {
return utils::failure(make_error(sql::error_code::FAILURE, res, conn_, "Failed to execute", stmt));
}
const auto affected_rows = utils::to<size_t>(PQcmdTuples(res));
const size_t affected_rows = utils::to<size_t>(PQcmdTuples(res));
PQclear(res);
return utils::ok(static_cast<size_t>(affected_rows));
return utils::ok(sql::execute_result{affected_rows});
}
utils::basic_type oid2type(const Oid oid) {
+4 -2
View File
@@ -1,4 +1,6 @@
#include "postgres_statement.hpp"
#include "matador/sql/execute_result.hpp"
#include "postgres_error.hpp"
#include "postgres_parameter_binder.h"
#include "postgres_result_reader.hpp"
@@ -16,7 +18,7 @@ postgres_statement::~postgres_statement() {
PQclear(res_);
}
utils::result<size_t, utils::error> postgres_statement::execute(const sql::parameter_binder& bindings) {
utils::result<sql::execute_result, utils::error> postgres_statement::execute(const sql::parameter_binder& bindings) {
const auto* postgres_bindings = dynamic_cast<const postgres_parameter_binder*>(&bindings);
if (!postgres_bindings) {
return utils::failure(utils::error(sql::error_code::EXECUTE_FAILED, "Failed to cast bindings to postgres bindings"));
@@ -40,7 +42,7 @@ utils::result<size_t, utils::error> postgres_statement::execute(const sql::param
PQclear(res);
return utils::ok(value);
return utils::ok(sql::execute_result{value});
}
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> postgres_statement::fetch(const sql::parameter_binder& bindings) {