Skip to content

Commit

Permalink
Remove noexcept
Browse files Browse the repository at this point in the history
  • Loading branch information
WillAyd committed Oct 21, 2024
1 parent 2c02c97 commit ae6e171
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 45 deletions.
21 changes: 10 additions & 11 deletions c/driver/postgresql/result_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ namespace adbcpq {

PqResultHelper::~PqResultHelper() { ClearResult(); }

Status PqResultHelper::PrepareInternal(int n_params,
const Oid* param_oids) const noexcept {
Status PqResultHelper::PrepareInternal(int n_params, const Oid* param_oids) const {
// TODO: make stmtName a unique identifier?
PGresult* result =
PQprepare(conn_, /*stmtName=*/"", query_.c_str(), n_params, param_oids);
Expand All @@ -44,13 +43,13 @@ Status PqResultHelper::PrepareInternal(int n_params,
return Status::Ok();
}

Status PqResultHelper::Prepare() const noexcept { return PrepareInternal(0, nullptr); }
Status PqResultHelper::Prepare() const { return PrepareInternal(0, nullptr); }

Status PqResultHelper::Prepare(const std::vector<Oid>& param_oids) const noexcept {
Status PqResultHelper::Prepare(const std::vector<Oid>& param_oids) const {
return PrepareInternal(param_oids.size(), param_oids.data());
}

Status PqResultHelper::DescribePrepared() noexcept {
Status PqResultHelper::DescribePrepared() {
ClearResult();
result_ = PQdescribePrepared(conn_, /*stmtName=*/"");
if (PQresultStatus(result_) != PGRES_COMMAND_OK) {
Expand All @@ -65,7 +64,7 @@ Status PqResultHelper::DescribePrepared() noexcept {
}

Status PqResultHelper::Execute(const std::vector<std::string>& params,
PostgresType* param_types) noexcept {
PostgresType* param_types) {
if (params.size() == 0 && param_types == nullptr && output_format_ == Format::kText) {
ClearResult();
result_ = PQexec(conn_, query_.c_str());
Expand Down Expand Up @@ -105,7 +104,7 @@ Status PqResultHelper::Execute(const std::vector<std::string>& params,
return Status::Ok();
}

Status PqResultHelper::ExecuteCopy() noexcept {
Status PqResultHelper::ExecuteCopy() {
// Remove trailing semicolon(s) from the query before feeding it into COPY
while (!query_.empty() && query_.back() == ';') {
query_.pop_back();
Expand All @@ -131,7 +130,7 @@ Status PqResultHelper::ExecuteCopy() noexcept {
}

Status PqResultHelper::ResolveParamTypes(PostgresTypeResolver& type_resolver,
PostgresType* param_types) noexcept {
PostgresType* param_types) {
struct ArrowError na_error;
ArrowErrorInit(&na_error);

Expand All @@ -157,7 +156,7 @@ Status PqResultHelper::ResolveParamTypes(PostgresTypeResolver& type_resolver,
}

Status PqResultHelper::ResolveOutputTypes(PostgresTypeResolver& type_resolver,
PostgresType* result_types) noexcept {
PostgresType* result_types) {
struct ArrowError na_error;
ArrowErrorInit(&na_error);

Expand All @@ -182,13 +181,13 @@ Status PqResultHelper::ResolveOutputTypes(PostgresTypeResolver& type_resolver,
return Status::Ok();
}

PGresult* PqResultHelper::ReleaseResult() noexcept {
PGresult* PqResultHelper::ReleaseResult() {
PGresult* out = result_;
result_ = nullptr;
return out;
}

int64_t PqResultHelper::AffectedRows() const noexcept {
int64_t PqResultHelper::AffectedRows() const {
if (result_ == nullptr) {
return -1;
}
Expand Down
64 changes: 30 additions & 34 deletions c/driver/postgresql/result_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class PqResultRow {
PqResultRow() : result_(nullptr), row_num_(-1) {}
PqResultRow(PGresult* result, int row_num) : result_(result), row_num_(row_num) {}

PqRecord operator[](int col_num) const noexcept {
PqRecord operator[](int col_num) const {
assert(col_num < PQnfields(result_));
const char* data = PQgetvalue(result_, row_num_, col_num);
const int len = PQgetlength(result_, row_num_, col_num);
Expand All @@ -98,11 +98,11 @@ class PqResultRow {
return PqRecord{data, len, is_null};
}

bool IsValid() const noexcept {
bool IsValid() const {
return result_ && row_num_ >= 0 && row_num_ < PQntuples(result_);
}

PqResultRow Next() const noexcept { return PqResultRow(result_, row_num_ + 1); }
PqResultRow Next() const { return PqResultRow(result_, row_num_ + 1); }

private:
PGresult* result_ = nullptr;
Expand Down Expand Up @@ -131,47 +131,45 @@ class PqResultHelper {

~PqResultHelper();

void set_param_format(Format format) noexcept { param_format_ = format; }
void set_output_format(Format format) noexcept { output_format_ = format; }
void set_param_format(Format format) { param_format_ = format; }
void set_output_format(Format format) { output_format_ = format; }

Status Prepare() const noexcept;
Status Prepare(const std::vector<Oid>& param_oids) const noexcept;
Status DescribePrepared() noexcept;
Status Prepare() const;
Status Prepare(const std::vector<Oid>& param_oids) const;
Status DescribePrepared();
Status Execute(const std::vector<std::string>& params = {},
PostgresType* param_types = nullptr) noexcept;
Status ExecuteCopy() noexcept;
PostgresType* param_types = nullptr);
Status ExecuteCopy();
Status ResolveParamTypes(PostgresTypeResolver& type_resolver,
PostgresType* param_types) noexcept;
PostgresType* param_types);
Status ResolveOutputTypes(PostgresTypeResolver& type_resolver,
PostgresType* result_types) noexcept;
PostgresType* result_types);

bool HasResult() const noexcept { return result_ != nullptr; }
bool HasResult() const { return result_ != nullptr; }

void SetResult(PGresult* result) noexcept {
void SetResult(PGresult* result) {
ClearResult();
result_ = result;
}

PGresult* ReleaseResult() noexcept;
PGresult* ReleaseResult();

void ClearResult() noexcept {
void ClearResult() {
PQclear(result_);
result_ = nullptr;
}

int64_t AffectedRows() const noexcept;
int64_t AffectedRows() const;

int NumRows() const noexcept { return PQntuples(result_); }
int NumRows() const { return PQntuples(result_); }

int NumColumns() const noexcept { return PQnfields(result_); }
int NumColumns() const { return PQnfields(result_); }

const char* FieldName(int column_number) const noexcept {
const char* FieldName(int column_number) const {
return PQfname(result_, column_number);
}
Oid FieldType(int column_number) const noexcept {
return PQftype(result_, column_number);
}
PqResultRow Row(int i) const noexcept { return PqResultRow(result_, i); }
Oid FieldType(int column_number) const { return PQftype(result_, column_number); }
PqResultRow Row(int i) const { return PqResultRow(result_, i); }

class iterator {
const PqResultHelper& outer_;
Expand All @@ -180,31 +178,29 @@ class PqResultHelper {
public:
explicit iterator(const PqResultHelper& outer, int curr_row = 0)
: outer_(outer), curr_row_(curr_row) {}
iterator& operator++() noexcept {
iterator& operator++() {
curr_row_++;
return *this;
}
iterator operator++(int) noexcept {
iterator operator++(int) {
iterator retval = *this;
++(*this);
return retval;
}
bool operator==(iterator other) const noexcept {
bool operator==(iterator other) const {
return outer_.result_ == other.outer_.result_ && curr_row_ == other.curr_row_;
}
bool operator!=(iterator other) const noexcept { return !(*this == other); }
PqResultRow operator*() const noexcept {
return PqResultRow(outer_.result_, curr_row_);
}
bool operator!=(iterator other) const { return !(*this == other); }
PqResultRow operator*() const { return PqResultRow(outer_.result_, curr_row_); }
using iterator_category = std::forward_iterator_tag;
using difference_type = std::ptrdiff_t;
using value_type = std::vector<PqResultRow>;
using pointer = const std::vector<PqResultRow>*;
using reference = const std::vector<PqResultRow>&;
};

iterator begin() const noexcept { return iterator(*this); }
iterator end() const noexcept { return iterator(*this, NumRows()); }
iterator begin() const { return iterator(*this); }
iterator end() const { return iterator(*this, NumRows()); }

private:
PGresult* result_ = nullptr;
Expand All @@ -213,7 +209,7 @@ class PqResultHelper {
Format param_format_ = Format::kText;
Format output_format_ = Format::kText;

Status PrepareInternal(int n_params, const Oid* param_oids) const noexcept;
Status PrepareInternal(int n_params, const Oid* param_oids) const;
};

} // namespace adbcpq

0 comments on commit ae6e171

Please sign in to comment.