From 6fa2f2abc1f3b8c071c0fba032b25e6959f28de3 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 4 Nov 2019 22:52:45 +0100 Subject: [PATCH] added an assert (#10358) --- arangod/Aql/Expression.cpp | 1 + arangod/Aql/OptimizerRules.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/arangod/Aql/Expression.cpp b/arangod/Aql/Expression.cpp index 8231ff3421..eaf6752c77 100644 --- a/arangod/Aql/Expression.cpp +++ b/arangod/Aql/Expression.cpp @@ -1621,6 +1621,7 @@ bool Expression::canRunOnDBServer() { TRI_ASSERT(_node != nullptr); return _node->canRunOnDBServer(); } + bool Expression::isDeterministic() { if (_type == UNPROCESSED) { initExpression(); diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index f0f12f091e..53ef0a83fc 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -7253,10 +7253,12 @@ void arangodb::aql::moveFiltersIntoEnumerateRule(Optimizer* opt, std::unique_ptr if (!expr->isDeterministic() || !expr->canRunOnDBServer()) { break; } + if (expr->node() == nullptr) { break; } + TRI_ASSERT(!expr->willUseV8()); found.clear(); Ast::getReferencedVariables(expr->node(), found); if (found.size() == 1 && found.find(outVariable) != found.end()) {