diff --git a/CHANGELOG b/CHANGELOG index c4820ff923..bc4889f88d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ v3.3.14 (XXXX-XX-XX) -------------------- +* fixed issue #5884: Subquery nodes are no longer created on DBServers * fixed issue #6031: Broken LIMIT in nested list iterations diff --git a/arangod/Aql/OptimizerRules.cpp b/arangod/Aql/OptimizerRules.cpp index 09a0707f6a..16f8bb155e 100644 --- a/arangod/Aql/OptimizerRules.cpp +++ b/arangod/Aql/OptimizerRules.cpp @@ -3985,7 +3985,8 @@ void arangodb::aql::restrictToSingleShardRule( break; } - if (c->getType() == EN::REMOTE) { + if (c->getType() == EN::REMOTE || + c->getType() == EN::SUBQUERY) { toRemove.clear(); break; } diff --git a/js/server/tests/aql/aql-modify-cluster.js b/js/server/tests/aql/aql-modify-cluster.js index 6f32440a7f..08243e03f7 100644 --- a/js/server/tests/aql/aql-modify-cluster.js +++ b/js/server/tests/aql/aql-modify-cluster.js @@ -532,6 +532,32 @@ function ahuacatlInsertSuite () { assertEqual(1, c2.count()); }, + testInsertTripleWithSub : function () { + c1.truncate(); + c2.truncate(); + + c3.drop(); + c3 = db._createEdgeCollection(cn3); + + const query = `WITH @@usersCollection, @@emailsCollection, @@userToEmailEdges + LET user = FIRST(INSERT @user IN @@usersCollection RETURN NEW) + INSERT @email IN @@emailsCollection + INSERT @edge IN @@userToEmailEdges + RETURN user`; + const bind = { "@usersCollection" : cn1, + "@emailsCollection" : cn2, + "@userToEmailEdges" : cn3, + "user" : { "name" : "ulf" }, + "email" : { "addr" : "ulf@ulf.de"}, + "edge" : { "_from" : "usersCollection/abc" , "_to" : "emailsCollection/def"} + }; + const options = {optimizer : { rules : ["+all"] } }; + + db._query(query, bind, options); + assertEqual(1, c1.count()); + assertEqual(1, c2.count()); + assertEqual(1, c3.count()); + }, //////////////////////////////////////////////////////////////////////////////// /// @brief test insert ////////////////////////////////////////////////////////////////////////////////