16 #include "pqxx/compiler-public.hxx"
17 #include "pqxx/compiler-internal-pre.hxx"
23 #include "pqxx/except.hxx"
24 #include "pqxx/types.hxx"
25 #include "pqxx/util.hxx"
27 #include "pqxx/internal/encodings.hxx"
40 class result_connection;
41 class result_creation;
43 class result_sql_cursor;
82 m_data(make_data_pointer()),
84 m_encoding(internal::encoding_group::MONOBYTE)
94 bool operator==(
const result &)
const noexcept;
96 {
return not operator==(rhs); }
99 const_reverse_iterator rbegin()
const;
100 const_reverse_iterator crbegin()
const;
101 const_reverse_iterator rend()
const;
102 const_reverse_iterator crend()
const;
104 const_iterator begin() const noexcept;
105 const_iterator cbegin() const noexcept;
106 inline const_iterator end() const noexcept;
107 inline const_iterator cend() const noexcept;
109 reference front() const noexcept;
110 reference back() const noexcept;
112 PQXX_PURE size_type size() const noexcept;
113 PQXX_PURE
bool empty() const noexcept;
116 void swap(
result &) noexcept;
118 const row operator[](size_type i)
const noexcept;
119 const row at(size_type)
const;
121 void clear() noexcept { m_data.reset(); m_query =
nullptr; }
135 {
return column_number(Name.c_str());}
148 {
return column_type(column_number(ColName)); }
152 {
return column_type(column_number(ColName)); }
163 {
return column_table(column_number(ColName)); }
174 {
return table_column(column_number(ColName)); }
178 PQXX_PURE
const std::string &query() const noexcept;
184 PQXX_PURE oid inserted_oid() const;
190 PQXX_PURE size_type affected_rows() const;
194 using data_pointer = std::shared_ptr<const internal::pq::PGresult>;
200 static data_pointer make_data_pointer(
201 const internal::pq::PGresult *res=
nullptr)
205 std::shared_ptr<std::string> m_query;
207 internal::encoding_group m_encoding;
209 static const std::string s_empty_string;
218 friend class pqxx::internal::gate::result_creation;
220 internal::pq::PGresult *rhs,
221 const std::string &Query,
222 internal::encoding_group enc);
224 PQXX_PRIVATE
void check_status()
const;
226 friend class pqxx::internal::gate::result_connection;
227 friend class pqxx::internal::gate::result_row;
228 bool operator!() const noexcept {
return not m_data.get(); }
229 operator bool() const noexcept {
return m_data.get() !=
nullptr; }
231 [[noreturn]] PQXX_PRIVATE
void ThrowSQLError(
232 const std::string &Err,
233 const std::string &Query)
const;
234 PQXX_PRIVATE PQXX_PURE
int errorposition()
const;
235 PQXX_PRIVATE std::string StatusError()
const;
237 friend class pqxx::internal::gate::result_sql_cursor;
238 PQXX_PURE
const char *cmd_status() const noexcept;
241 #include "pqxx/compiler-internal-post.hxx"
bool operator!=(const result &rhs) const noexcept
Definition: result.hxx:95
PQXX_PURE size_type size() const noexcept
Definition: result.cxx:94
const row operator[](size_type i) const noexcept
Definition: result.cxx:125
field_size_type size_type
Definition: field.hxx:52
oid column_type(int ColNum) const
Type of given column.
Definition: result.hxx:143
row_size_type table_column(row_size_type ColNum) const
What column in its table did this column come from?
Definition: result.cxx:350
row_size_type table_column(const std::string &ColName) const
What column in its table did this column come from?
Definition: result.hxx:173
Reverse iterator for result. Use as result::const_reverse_iterator.
Definition: result_iterator.hxx:120
PQXX_PURE const_result_iterator base() const noexcept
Definition: result.cxx:425
Iterator for rows in a result. Use as result::const_iterator.
Definition: result_iterator.hxx:35
const_reverse_result_iterator & operator--()
Definition: result_iterator.hxx:159
result_difference_type difference_type
Definition: result.hxx:73
const_reverse_iterator rbegin() const
Definition: result.cxx:58
void clear_result(const pq::PGresult *)
C++ wrapper for libpq's PQclear.
Definition: result.cxx:30
const_result_iterator & operator--()
Definition: result_iterator.hxx:74
Result set containing data returned by a query or command.
Definition: result.hxx:69
signed long result_difference_type
Difference between result sizes.
Definition: types.hxx:21
oid column_type(const char ColName[]) const
Type of given column.
Definition: result.hxx:151
unsigned int row_size_type
Number of fields in a row of database data.
Definition: types.hxx:24
void from_string(const field &F, T &Obj)
Convert a field's string contents to another type.
Definition: field.hxx:365
reference back() const noexcept
Definition: result.cxx:112
result() noexcept
Definition: result.hxx:81
const_reverse_result_iterator & operator++()
Definition: result_iterator.hxx:156
result_size_type size_type
Definition: result.hxx:72
row_size_type table_column(int ColNum) const
What column in its table did this column come from?
Definition: result.hxx:169
Reference to a field in a result set.
Definition: field.hxx:49
PQXX_PURE bool empty() const noexcept
Definition: result.cxx:100
const_reverse_iterator crbegin() const
Definition: result.cxx:64
oid column_table(const std::string &ColName) const
What table did this column come from?
Definition: result.hxx:162
const PQXX_PURE std::string & query() const noexcept
Query that produced this result, if available (empty string otherwise)
Definition: result.cxx:277
bool operator==(const result &) const noexcept
Definition: result.cxx:47
const_reverse_iterator crend() const
Definition: result.cxx:76
const_reverse_iterator rend() const
Definition: result.cxx:70
const char * column_name(row_size_type Number) const
Name of column with this number (throws exception if it doesn't exist)
Definition: result.cxx:384
constexpr oid oid_none
The "null" oid.
Definition: util.hxx:77
const row at(size_type) const
Definition: result.cxx:131
PQXX_PURE size_type affected_rows() const
If command was INSERT, UPDATE, or DELETE: number of affected rows.
Definition: result.cxx:292
unsigned long result_size_type
Number of rows in a result set.
Definition: types.hxx:18
size_type size() const noexcept
Return number of bytes taken up by the field's value.
Definition: field.cxx:74
reference front() const noexcept
Definition: result.cxx:106
PQXX_PURE oid inserted_oid() const
If command was INSERT of 1 row, return oid of inserted row.
Definition: result.cxx:283
oid column_table(row_size_type ColNum) const
What table did this column come from?
Definition: result.cxx:334
oid column_type(row_size_type ColNum) const
Type of given column.
Definition: result.cxx:323
void clear() noexcept
Definition: result.hxx:121
Invalid argument passed to libpqxx, similar to std::invalid_argument.
Definition: except.hxx:229
const_iterator begin() const noexcept
Definition: result.cxx:82
std::string to_string(const field &Obj)
Convert a field to a string.
Definition: result.cxx:451
PQXX_PURE row_size_type columns() const noexcept
Number of columns in result.
Definition: result.cxx:399
const_iterator cbegin() const noexcept
Definition: result.cxx:88
std::size_t field_size_type
Number of bytes in a field of database data.
Definition: types.hxx:30
void swap(result &) noexcept
Definition: result.cxx:118
Something is out of range, similar to std::out_of_range.
Definition: except.hxx:251
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:25
Reference to one row in a result.
Definition: row.hxx:40
Error in usage of libpqxx library, similar to std::logic_error.
Definition: except.hxx:218
const_result_iterator & operator++()
Definition: result_iterator.hxx:72
oid column_type(const std::string &ColName) const
Type of given column.
Definition: result.hxx:147
row_size_type size_type
Definition: row.hxx:43
const char * c_str() const
Read as plain C string.
Definition: field.cxx:62
oid column_table(int ColNum) const
What table did this column come from?
Definition: result.hxx:158