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);
83 doappend(name,
" == ", static_cast<int>(val));
void append(const std::string &name, const std::string &val) override
void doappend(const std::string &name, const char *op, T val)
std::vector< Variant > values_
void appendGTE(const std::string &name, const double val) override
void appendLT(const std::string &name, const double val) override
#define ROS_DEBUG_NAMED(name,...)
sqlite3_stmt_ptr prepare(sqlite3 *db_conn, const std::string &intro, const std::string &outro="", int bind_start_col=1) const
void appendGT(const std::string &name, const double val) override
std::unique_ptr< sqlite3_stmt, Sqlite3StmtDeleter > sqlite3_stmt_ptr
#define ROS_ERROR_NAMED(name,...)
void appendLTE(const std::string &name, const double val) override
void appendRange(const std::string &name, const double lower, const double upper) override
void appendRangeInclusive(const std::string &name, const double lower, const double upper) override