diff --git a/include/warehouse_ros_sqlite/utils.hpp b/include/warehouse_ros_sqlite/utils.hpp index e5c1d9c..3255fb3 100644 --- a/include/warehouse_ros_sqlite/utils.hpp +++ b/include/warehouse_ros_sqlite/utils.hpp @@ -104,7 +104,7 @@ using escaped_columnname = std::string; using escaped_tablename = std::string; inline std::string escape_identifier(const std::string & s) { - return "\"" + detail::escape<'"'>(s) + "\""; + return "`" + detail::escape<'`'>(s) + "`"; } inline escaped_columnname escape_columnname_with_prefix(const std::string & c) { diff --git a/test/DatabaseConnection.cpp b/test/DatabaseConnection.cpp index 98a78b7..adf2fca 100644 --- a/test/DatabaseConnection.cpp +++ b/test/DatabaseConnection.cpp @@ -30,6 +30,7 @@ #include +#include #include #include #include @@ -403,6 +404,58 @@ TEST_F(ConnectionTest, Sorting) } } +TEST_F(ConnectionTest, appendGTE) +{ + auto coll = conn_->openCollection("test_db", "test_collection"); + + auto metadata = coll.createMetadata(); + metadata->append("test_metadata", 5.0); + + geometry_msgs::msg::Point msg = {}; + coll.insert(msg, metadata); + + { + auto query = coll.createQuery(); + query->appendGTE("unrelated", 4.0); + EXPECT_TRUE(coll.queryList(query).empty()); + } + + { + auto query = coll.createQuery(); + query->appendGT("unrelated", 4.0); + EXPECT_TRUE(coll.queryList(query).empty()); + } + + { + auto query = coll.createQuery(); + query->appendLTE("unrelated", 6.0); + EXPECT_TRUE(coll.queryList(query).empty()); + } + + { + auto query = coll.createQuery(); + query->appendLT("unrelated", 6.0); + EXPECT_TRUE(coll.queryList(query).empty()); + } +} + +TEST_F(ConnectionTest, BacktickInMeta) +{ + auto coll = conn_->openCollection("test_db", "test_backtick"); + + auto metadata = coll.createMetadata(); + metadata->append("test_`metadata", 5.0); + + geometry_msgs::msg::Point msg = {}; + coll.insert(msg, metadata); + + { + auto query = coll.createQuery(); + query->appendGTE("test_`metadata", 4.0); + EXPECT_EQ(coll.queryList(query).size(), 1); + } +} + TEST(Utils, Md5Validation) { const char * a = "4a842b65f413084dc2b10fb484ea7f17";