From 36d1cfbb1f1b11c39053bcea8ee9ffea81eb5661 Mon Sep 17 00:00:00 2001 From: xtcyclist <7731943+xtcyclist@users.noreply.github.com> Date: Fri, 23 Dec 2022 11:09:34 +0800 Subject: [PATCH] revise error messages. --- src/graph/executor/query/FilterExecutor.cpp | 15 ++++++++++++--- tests/tck/features/match/Base.feature | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/graph/executor/query/FilterExecutor.cpp b/src/graph/executor/query/FilterExecutor.cpp index 65d4d8382cc..b0120fae1f3 100644 --- a/src/graph/executor/query/FilterExecutor.cpp +++ b/src/graph/executor/query/FilterExecutor.cpp @@ -65,7 +65,10 @@ StatusOr FilterExecutor::handleJob(size_t begin, size_t end, Iterator * for (; iter->valid() && begin++ < end; iter->next()) { auto val = condition->eval(ctx(iter)); if (val.isBadNull() || (!val.empty() && !val.isImplicitBool() && !val.isNull())) { - return Status::Error("Wrong type result, the type should be NULL, EMPTY, BOOL"); + return Status::Error("Failed to evaluate condition: %s. %s%s", + condition->toString().c_str(), + "For boolean conditions, please write in their full forms like", + " == or IS NULL."); } if (!(val.empty() || val.isNull() || (val.isImplicitBool() && !val.implicitBool()))) { // TODO: Maybe we can move. @@ -96,7 +99,10 @@ Status FilterExecutor::handleSingleJobFilter() { while (iter->valid()) { auto val = condition->eval(ctx(iter)); if (val.isBadNull() || (!val.empty() && !val.isImplicitBool() && !val.isNull())) { - return Status::Error("Wrong type result, the type should be NULL, EMPTY, BOOL"); + return Status::Error("Failed to evaluate condition: %s. %s%s", + condition->toString().c_str(), + "For boolean conditions, please write in their full forms like", + " == or IS NULL."); } if (val.empty() || val.isNull() || (val.isImplicitBool() && !val.implicitBool())) { if (UNLIKELY(filter->needStableFilter())) { @@ -119,7 +125,10 @@ Status FilterExecutor::handleSingleJobFilter() { for (; iter->valid(); iter->next()) { auto val = condition->eval(ctx(iter)); if (val.isBadNull() || (!val.empty() && !val.isImplicitBool() && !val.isNull())) { - return Status::Error("Wrong type result, the type should be NULL, EMPTY, BOOL"); + return Status::Error("Failed to evaluate condition: %s. %s%s", + condition->toString().c_str(), + "For boolean conditions, please write in their full forms like", + " == or IS NULL."); } if (val.isImplicitBool() && val.implicitBool()) { Row row; diff --git a/tests/tck/features/match/Base.feature b/tests/tck/features/match/Base.feature index 72b1ae2f46d..fe24228496c 100644 --- a/tests/tck/features/match/Base.feature +++ b/tests/tck/features/match/Base.feature @@ -632,7 +632,7 @@ Feature: Basic match """ MATCH (v:player) where v.player.name return v """ - Then a ExecutionError should be raised at runtime: Wrong type result, the type should be NULL, EMPTY, BOOL + Then a ExecutionError should be raised at runtime: Failed to evaluate condition: v.player.name. For boolean conditions, please write == or IS NULL. Scenario: Unimplemented features When executing query: