summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Storch <david.storch@mongodb.com>2020-09-09 18:27:22 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-11 14:33:20 +0000
commit712013ffd49d76c699a5a0128f5605a10b497967 (patch)
treec27bbca5414c2bf0cc35c68be9c60d5fec8e3706
parent94e5a1620a00997e053f5d9cc75be65aa8b73016 (diff)
downloadmongo-712013ffd49d76c699a5a0128f5605a10b497967.tar.gz
SERVER-50884 Change order of SBE traverse 'from' and 'in' branches in debug output
-rw-r--r--src/mongo/db/exec/sbe/parser/parser.cpp14
-rw-r--r--src/mongo/db/exec/sbe/stages/traverse.cpp8
2 files changed, 11 insertions, 11 deletions
diff --git a/src/mongo/db/exec/sbe/parser/parser.cpp b/src/mongo/db/exec/sbe/parser/parser.cpp
index acbb6b983fd..3d61b5966e2 100644
--- a/src/mongo/db/exec/sbe/parser/parser.cpp
+++ b/src/mongo/db/exec/sbe/parser/parser.cpp
@@ -130,8 +130,8 @@ static constexpr auto kSyntax = R"(
IDENT # input of traverse
('{' EXPR '}')? # optional fold expression
('{' EXPR '}')? # optional final expression
- 'in' OPERATOR
'from' OPERATOR
+ 'in' OPERATOR
EXCHANGE <- 'exchange' IDENT_LIST NUMBER IDENT OPERATOR
SORT <- 'sort' IDENT_LIST IDENT_LIST OPERATOR
UNWIND <- 'unwind' IDENT IDENT IDENT UNWIND_FLAG OPERATOR
@@ -926,17 +926,17 @@ void Parser::walkTraverse(AstQuery& ast) {
size_t finalPos = 0;
if (ast.nodes.size() == 5) {
- inPos = 3;
- fromPos = 4;
+ fromPos = 3;
+ inPos = 4;
} else if (ast.nodes.size() == 6) {
foldPos = 3;
- inPos = 4;
- fromPos = 5;
+ fromPos = 4;
+ inPos = 5;
} else {
foldPos = 3;
finalPos = 4;
- inPos = 5;
- fromPos = 6;
+ fromPos = 5;
+ inPos = 6;
}
ast.stage = makeS<TraverseStage>(std::move(ast.nodes[fromPos]->stage),
std::move(ast.nodes[inPos]->stage),
diff --git a/src/mongo/db/exec/sbe/stages/traverse.cpp b/src/mongo/db/exec/sbe/stages/traverse.cpp
index d1438883141..a764c4c6698 100644
--- a/src/mongo/db/exec/sbe/stages/traverse.cpp
+++ b/src/mongo/db/exec/sbe/stages/traverse.cpp
@@ -300,14 +300,14 @@ std::vector<DebugPrinter::Block> TraverseStage::debugPrint() const {
}
DebugPrinter::addNewLine(ret);
- DebugPrinter::addIdentifier(ret, "in");
+ DebugPrinter::addIdentifier(ret, "from");
ret.emplace_back(DebugPrinter::Block::cmdIncIndent);
- DebugPrinter::addBlocks(ret, _children[1]->debugPrint());
+ DebugPrinter::addBlocks(ret, _children[0]->debugPrint());
ret.emplace_back(DebugPrinter::Block::cmdDecIndent);
- DebugPrinter::addIdentifier(ret, "from");
+ DebugPrinter::addIdentifier(ret, "in");
ret.emplace_back(DebugPrinter::Block::cmdIncIndent);
- DebugPrinter::addBlocks(ret, _children[0]->debugPrint());
+ DebugPrinter::addBlocks(ret, _children[1]->debugPrint());
ret.emplace_back(DebugPrinter::Block::cmdDecIndent);
return ret;