Don't strip queries after execute for CREATE TRIGGER only (#245)

This commit is contained in:
antonio2368
2021-09-24 13:14:05 +02:00
committed by GitHub
parent b94e50bf1c
commit 8dc3153fde
2 changed files with 57 additions and 4 deletions

View File

@@ -353,4 +353,42 @@ TEST(QueryStripper, QuerySemicolonEndingQuery2) {
StrippedQuery stripped("RETURN 42 ;");
EXPECT_THAT(stripped.named_expressions(), UnorderedElementsAre(Pair(1, "42")));
}
TEST(QueryStripper, CreateTriggerQuery) {
constexpr std::string_view execute_query{
" MATCH (execute:Node) RETURN / *test comment */ execute \"test\""};
{
SCOPED_TRACE("Everything after EXECUTE keyword in CREATE TRIGGER should not be stripped");
{
SCOPED_TRACE("Query starting with CREATE keyword");
StrippedQuery stripped(
fmt::format("CREATE TRIGGER execute /*test*/ ON CREATE BEFORE COMMIT EXECUTE{}", execute_query));
EXPECT_EQ(stripped.query(),
fmt::format("CREATE TRIGGER execute ON CREATE BEFORE COMMIT EXECUTE {}", execute_query));
}
{
SCOPED_TRACE("Query starting with comments and spaces");
StrippedQuery stripped(fmt::format(
"/*comment*/ \n\n //other comment\nCREATE TRIGGER execute AFTER COMMIT EXECUTE{}", execute_query));
EXPECT_EQ(stripped.query(), fmt::format("CREATE TRIGGER execute AFTER COMMIT EXECUTE {}", execute_query));
}
{
SCOPED_TRACE("Query with comments and spaces between CREATE and TRIGGER");
StrippedQuery stripped(fmt::format(
"/*comment*/ \n\n //other comment\nCREATE //some comment \n TRIGGER execute AFTER COMMIT EXECUTE{}",
execute_query));
EXPECT_EQ(stripped.query(), fmt::format("CREATE TRIGGER execute AFTER COMMIT EXECUTE {}", execute_query));
}
}
{
SCOPED_TRACE("Execute keyword should still be allowed in other queries");
StrippedQuery stripped("MATCH (execute:Node) //comment \n RETURN /* test comment */ execute");
EXPECT_EQ(stripped.query(), "MATCH ( execute : Node ) RETURN execute");
EXPECT_THAT(stripped.named_expressions(), UnorderedElementsAre(Pair(7, "execute")));
}
}
} // namespace