13#ifndef PQXX_H_PIPELINE
14#define PQXX_H_PIPELINE
16#if !defined(PQXX_HEADER_PRE)
17# error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
24#include "pqxx/transaction_base.hxx"
84 query_id insert(std::string_view) &;
130 return retrieve(m_queries.find(
qid)).second;
135 std::pair<query_id, result> retrieve();
161 explicit Query(std::string_view q) :
162 query{std::make_shared<std::string>(q)}
165 std::shared_ptr<std::string> query;
169 using QueryMap = std::map<query_id, Query>;
176 static constexpr query_id qid_limit()
noexcept
182 return (std::numeric_limits<query_id>::max)();
190 return m_issuedrange.second != m_issuedrange.first;
196 void set_error_at(query_id
qid)
noexcept
217 std::pair<pipeline::query_id, result> retrieve(pipeline::QueryMap::iterator);
220 std::pair<QueryMap::iterator, QueryMap::iterator> m_issuedrange;
222 int m_num_waiting = 0;
226 bool m_dummy_pending =
false;
229 query_id m_error = qid_limit();
235 internal::encoding_group m_encoding;
237 static constexpr std::string_view s_classname{
"pipeline"};
The home of all libpqxx classes, functions, templates, etc.
Definition array.hxx:33
constexpr char array_separator
Element separator between SQL array elements of this type.
Definition strconv.hxx:557
Processes several queries in FIFO manner, optimized for high throughput.
Definition pipeline.hxx:51
pipeline(transaction_base &t)
Start a pipeline.
Definition pipeline.hxx:63
pipeline & operator=(pipeline &&)=delete
bool empty() const noexcept
Definition pipeline.hxx:137
pipeline & operator=(pipeline const &)=delete
pipeline(transaction_base &t, std::string_view tname)
Start a pipeline. Assign it a name, for more helpful error messages.
Definition pipeline.hxx:68
pipeline(pipeline &&)=delete
pipeline(pipeline const &)=delete
long query_id
Identifying numbers for queries.
Definition pipeline.hxx:54
Result set containing data returned by a query or command.
Definition result.hxx:73
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:88
Base class for things that monopolise a transaction's attention.
Definition transaction_focus.hxx:29