Go to the documentation of this file.
33 #include <boost/variant/static_visitor.hpp>
40 const std::string& outro,
41 int bind_start_col)
const
43 sqlite3_stmt* stmt =
nullptr;
44 const auto query = intro +
query_.str() + outro +
";";
46 ROS_DEBUG_NAMED(
"warehouse_ros_sqlite",
"query query: %s", query.c_str());
47 if (sqlite3_prepare_v2(db_conn, query.c_str(), query.size() + 1 , &stmt,
nullptr) != SQLITE_OK)
51 ROS_ERROR_NAMED(
"warehouse_ros_sqlite",
"Preparing Query failed: %s", sqlite3_errmsg(db_conn));
55 assert(
static_cast<size_t>(sqlite3_bind_parameter_count(stmt)) == (
values_.size() + bind_start_col - 1));
58 for (
const auto& value :
values_)
60 if (boost::apply_visitor(visitor, value) != SQLITE_OK)
62 throw InternalError(
"Binding parameter to query failed", db_conn);
71 doappend(name,
" == ", val);
75 doappend(name,
" == ", val);
79 doappend(name,
" == ", val);
83 doappend(name,
" == ",
static_cast<int>(val));
87 doappend(name,
" < ", val);
91 doappend(name,
" < ", val);
95 doappend(name,
" <= ", val);
99 doappend(name,
" <= ", val);
103 doappend(name,
" > ", val);
107 doappend(name,
" > ", val);
111 doappend(name,
" >= ", val);
115 doappend(name,
" >= ", val);
119 doappend(name,
" > ", lower);
120 doappend(name,
" < ", upper);
124 doappend(name,
" > ", lower);
125 doappend(name,
" < ", upper);
129 doappend(name,
" >= ", lower);
130 doappend(name,
" <= ", upper);
134 doappend(name,
" >= ", lower);
135 doappend(name,
" <= ", upper);
void appendGT(const std::string &name, const double val) override
#define ROS_ERROR_NAMED(name,...)
void appendLTE(const std::string &name, const double val) override
#define ROS_DEBUG_NAMED(name,...)
std::unique_ptr< sqlite3_stmt, Sqlite3StmtDeleter > sqlite3_stmt_ptr
void append(const std::string &name, const std::string &val) override
void appendRange(const std::string &name, const double lower, const double upper) override
std::vector< Variant > values_
void appendRangeInclusive(const std::string &name, const double lower, const double upper) override
void appendGTE(const std::string &name, const double val) override
sqlite3_stmt_ptr prepare(sqlite3 *db_conn, const std::string &intro, const std::string &outro="", int bind_start_col=1) const
void appendLT(const std::string &name, const double val) override