diff options
author | Naama Bareket <naama.bareket@mongodb.com> | 2022-10-14 18:33:29 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-10-14 19:09:41 +0000 |
commit | c42aed0b472e16e61caa5b34fda8a70757b91dc7 (patch) | |
tree | b10e73c2c6b73887041365ba02c2a8da76bd843f | |
parent | 3f9902ef27f666484b9b6a48d180efef3fce5960 (diff) | |
download | mongo-c42aed0b472e16e61caa5b34fda8a70757b91dc7.tar.gz |
SERVER-69909: [CQF] Explain of Constant should be lossess and display tag/value
-rw-r--r-- | src/mongo/db/query/optimizer/explain.cpp | 14 | ||||
-rw-r--r-- | src/mongo/db/query/optimizer/optimizer_test.cpp | 11 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/mongo/db/query/optimizer/explain.cpp b/src/mongo/db/query/optimizer/explain.cpp index de32dc051fe..5796de6f03a 100644 --- a/src/mongo/db/query/optimizer/explain.cpp +++ b/src/mongo/db/query/optimizer/explain.cpp @@ -1895,10 +1895,16 @@ public: ExplainPrinter transport(const Constant& expr) { ExplainPrinter printer("Const"); - printer.separator(" [") - .fieldName("value", ExplainVersion::V3) - .print(expr.get()) - .separator("]"); + printer.separator(" [").fieldName("tag", ExplainVersion::V3); + + if (version == ExplainVersion::V3) { + std::stringstream ss; + ss << expr.get().first; + std::string tagAsString = ss.str(); + printer.print(tagAsString); + } + + printer.fieldName("value", ExplainVersion::V3).print(expr.get()).separator("]"); return printer; } diff --git a/src/mongo/db/query/optimizer/optimizer_test.cpp b/src/mongo/db/query/optimizer/optimizer_test.cpp index 4f5fa788eac..d52b84470a1 100644 --- a/src/mongo/db/query/optimizer/optimizer_test.cpp +++ b/src/mongo/db/query/optimizer/optimizer_test.cpp @@ -744,5 +744,16 @@ TEST(Explain, ExplainV2Compact) { evalNode); } +TEST(Explain, ExplainBsonForConstant) { + ABT cNode = Constant::int64(3); + auto [tag, val] = ExplainGenerator::explainBSON(cNode); + sbe::value::ValueGuard vg(tag, val); + ASSERT_EQ( + "{\n nodeType: \"Const\", \n" + " tag: \"NumberInt64\", \n" + " value: 3\n}\n", + ExplainGenerator::printBSON(tag, val)); +} + } // namespace } // namespace mongo::optimizer |