9 #ifndef anna_dbms_Statement_hpp 10 #define anna_dbms_Statement_hpp 57 const std::string&
getName()
const {
return a_name; }
100 void bindInput(
const char* name,
Data& data) ;
141 bool requiresCommit()
const {
return (a_requiresCommit ==
true) || (a_outputBinds.empty() ==
true); }
153 input_iterator
input_end() {
return a_inputBinds.end(); }
190 virtual std::string asString()
const ;
199 virtual bool fetch() noexcept(
false) = 0;
205 static Data& input(input_iterator& ii) ;
211 static Data& output(output_iterator& ii) ;
224 Statement(
Database& database,
const char* name,
const char* expression,
const bool isCritical) :
225 a_database(database),
227 a_expression(expression),
229 a_isCritical(isCritical),
230 a_measureTiming(
"Timing",
"us"),
231 a_requiresCommit(false) {
245 Statement(
Database& database,
const char* name,
const std::string& expression,
const bool isCritical) :
246 a_database(database),
248 a_expression(expression),
250 a_isCritical(isCritical),
251 a_measureTiming(
"Timing",
"us"),
252 a_requiresCommit(false) {
269 const std::string a_name;
270 std::string a_expression;
271 std::vector <InputBind*> a_inputBinds;
272 std::vector <OutputBind*> a_outputBinds;
274 const bool a_isCritical;
276 bool a_requiresCommit;
279 void measureTiming(
const Microsecond & init,
const Microsecond & end) { a_measureTiming += (end - init); }
281 virtual void prepare(
Connection* connection) noexcept(
false) = 0;
int input_size() const
Definition: Statement.hpp:159
std::vector< InputBind * >::iterator input_iterator
Definition: Statement.hpp:45
Database & getDatabase() const
Definition: Statement.hpp:78
Definition: Connection.hpp:38
Definition: Average.hpp:24
Definition: Statement.hpp:43
input_iterator input_begin()
Definition: Statement.hpp:147
bool isCritical() const
Definition: Statement.hpp:72
Definition: Database.hpp:37
const std::string & getExpression() const
Definition: Statement.hpp:63
Definition: OutputBind.hpp:26
output_iterator output_begin()
Definition: Statement.hpp:165
std::vector< OutputBind * >::iterator output_iterator
Definition: Statement.hpp:46
static OutputBind * outputBind(output_iterator &ii)
Definition: Statement.hpp:265
bool requiresCommit() const
Definition: Statement.hpp:141
Statement(Database &database, const char *name, const std::string &expression, const bool isCritical)
Definition: Statement.hpp:245
xml::Node Node
Definition: Node.hpp:21
static InputBind * inputBind(input_iterator &ii)
Definition: Statement.hpp:259
output_iterator output_end()
Definition: Statement.hpp:171
int output_size() const
Definition: Statement.hpp:177
void setRequiresCommit(const bool requiresCommit)
Definition: Statement.hpp:133
Statement(Database &database, const char *name, const char *expression, const bool isCritical)
Definition: Statement.hpp:224
const std::string & getName() const
Definition: Statement.hpp:57
Definition: ResultCode.hpp:29
Definition: Microsecond.hpp:22
input_iterator input_end()
Definition: Statement.hpp:153