From d5106c723303a1f59898aa7335332f18afe2a29c Mon Sep 17 00:00:00 2001 From: Matej Ferencevic Date: Tue, 16 Jul 2019 10:35:23 +0200 Subject: [PATCH] Handle zero increment in counters Reviewers: teon.banek Reviewed By: teon.banek Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D2208 --- src/query/interpret/awesome_memgraph_functions.cpp | 7 ++++++- tests/unit/query_expression_evaluator.cpp | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/query/interpret/awesome_memgraph_functions.cpp b/src/query/interpret/awesome_memgraph_functions.cpp index 9b615f8ae..f11a17099 100644 --- a/src/query/interpret/awesome_memgraph_functions.cpp +++ b/src/query/interpret/awesome_memgraph_functions.cpp @@ -702,7 +702,12 @@ TypedValue Counter(TypedValue *args, int64_t nargs, "Third argument of 'counter' must be an integer."); int64_t step = 1; - if (nargs == 3) step = args[2].ValueInt(); + if (nargs == 3) { + step = args[2].ValueInt(); + if (step == 0) + throw QueryRuntimeException( + "Third argument of 'counter' must not be zero."); + } auto [it, inserted] = context.counters.emplace(args[0].ValueString(), args[1].ValueInt()); diff --git a/tests/unit/query_expression_evaluator.cpp b/tests/unit/query_expression_evaluator.cpp index 55524c49d..2ae5054ca 100644 --- a/tests/unit/query_expression_evaluator.cpp +++ b/tests/unit/query_expression_evaluator.cpp @@ -1494,6 +1494,8 @@ TEST_F(FunctionTest, Counter) { EXPECT_EQ(EvaluateFunction("COUNTER", "c5", 0, -5).ValueInt(), 0); EXPECT_EQ(EvaluateFunction("COUNTER", "c5", 0, -5).ValueInt(), -5); EXPECT_EQ(EvaluateFunction("COUNTER", "c5", 0, -5).ValueInt(), -10); + + EXPECT_THROW(EvaluateFunction("COUNTER", "c6", 0, 0), QueryRuntimeException); } TEST_F(FunctionTest, Id) {