diff --git a/c/driver/postgresql/result_helper.cc b/c/driver/postgresql/result_helper.cc index 1a3e4beaeb..6dd7527a0e 100644 --- a/c/driver/postgresql/result_helper.cc +++ b/c/driver/postgresql/result_helper.cc @@ -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); @@ -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& param_oids) const noexcept { +Status PqResultHelper::Prepare(const std::vector& 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) { @@ -65,7 +64,7 @@ Status PqResultHelper::DescribePrepared() noexcept { } Status PqResultHelper::Execute(const std::vector& 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()); @@ -105,7 +104,7 @@ Status PqResultHelper::Execute(const std::vector& 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(); @@ -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); @@ -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); @@ -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; } diff --git a/c/driver/postgresql/result_helper.h b/c/driver/postgresql/result_helper.h index 48e39ed397..1f3f93c46b 100644 --- a/c/driver/postgresql/result_helper.h +++ b/c/driver/postgresql/result_helper.h @@ -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); @@ -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; @@ -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& param_oids) const noexcept; - Status DescribePrepared() noexcept; + Status Prepare() const; + Status Prepare(const std::vector& param_oids) const; + Status DescribePrepared(); Status Execute(const std::vector& 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_; @@ -180,22 +178,20 @@ 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; @@ -203,8 +199,8 @@ class PqResultHelper { using reference = const std::vector&; }; - 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; @@ -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