From 9bfd929cf519f791df3e9beeb7de314de20b8ff9 Mon Sep 17 00:00:00 2001 From: Michael Hackstein Date: Fri, 2 Oct 2015 17:14:18 +0200 Subject: [PATCH] Indexes compile again and some expressions seem to be evaluated. Might still crash. Start with --no-server with server it is still broken --- arangod/Aql/IndexBlock.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arangod/Aql/IndexBlock.cpp b/arangod/Aql/IndexBlock.cpp index 263b366142..e2ca6fa872 100644 --- a/arangod/Aql/IndexBlock.cpp +++ b/arangod/Aql/IndexBlock.cpp @@ -106,10 +106,10 @@ void IndexBlock::buildExpressions () { AqlValue a = exp->execute(_trx, cur, _pos, _inVars[posInExpressions], _inRegs[posInExpressions], &myCollection); auto jsonified = a.toJson(_trx, myCollection, true); a.destroy(); - AstNode const* evaluatedNode = ast->nodeFromJson(jsonified.json(), true); - en->_plan->replaceNode(_condition->getMember(toReplace.orMember) - ->getMember(toReplace.andMember) - ->getMember(toReplace.operatorMember)); + AstNode* evaluatedNode = ast->nodeFromJson(jsonified.json(), true); + _condition->getMember(toReplace.orMember) + ->getMember(toReplace.andMember) + ->changeMember(toReplace.operatorMember, evaluatedNode); } /* @@ -361,8 +361,7 @@ int IndexBlock::initialize () { auto lhs = leaf->getMember(0); auto rhs = leaf->getMember(1); - if (lhs->type == NODE_TYPE_ATTRIBUTE_ACCESS && - lhs->getAttributeVariable() == outVariable) { + if (lhs->isAttributeAccessForVariable(outVariable)) { // Index is responsible for the left side, check if right side has to be evaluated if (! rhs->isConstant()) { instantiateExpression(i, j, 1, rhs);