diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index 63f72bbca7..e832f836c4 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -4164,6 +4164,17 @@ void arangodb::aql::restrictToSingleShardRule( toRemove.clear(); break; } + + if (c->getType() == EN::CALCULATION) { + auto cn = ExecutionNode::castTo(c); + auto expr = cn->expression(); + if (expr != nullptr && !expr->canRunOnDBServer()) { + // found something that must not run on a DB server, + // but that must run on a coordinator. stop optimization here! + toRemove.clear(); + break; + } + } } for (auto const& it : toRemove) {