summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2019-03-20 17:18:56 -0400
committerDavid Storch <david.storch@10gen.com>2019-03-22 16:23:15 -0400
commit60c0441f9ba3196eaabe38935333d17f1aff88f8 (patch)
treeedf0c9d697406fa2830057699f81e233e076b0bd /src
parent7863f89c67dc4fa50330e585b5a4310daa0f42dc (diff)
downloadmongo-60c0441f9ba3196eaabe38935333d17f1aff88f8.tar.gz
SERVER-40267 Clean up debug string generation for MatchExpression.
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/catalog/index_catalog_impl.cpp2
-rw-r--r--src/mongo/db/exec/subplan.cpp14
-rw-r--r--src/mongo/db/matcher/expression.cpp14
-rw-r--r--src/mongo/db/matcher/expression.h18
-rw-r--r--src/mongo/db/matcher/expression_always_boolean.h4
-rw-r--r--src/mongo/db/matcher/expression_arity.h4
-rw-r--r--src/mongo/db/matcher/expression_array.cpp16
-rw-r--r--src/mongo/db/matcher/expression_array.h6
-rw-r--r--src/mongo/db/matcher/expression_expr.h4
-rw-r--r--src/mongo/db/matcher/expression_geo.cpp8
-rw-r--r--src/mongo/db/matcher/expression_geo.h4
-rw-r--r--src/mongo/db/matcher/expression_leaf.cpp24
-rw-r--r--src/mongo/db/matcher/expression_leaf.h12
-rw-r--r--src/mongo/db/matcher/expression_text_base.cpp4
-rw-r--r--src/mongo/db/matcher/expression_text_base.h2
-rw-r--r--src/mongo/db/matcher/expression_tree.cpp28
-rw-r--r--src/mongo/db/matcher/expression_tree.h10
-rw-r--r--src/mongo/db/matcher/expression_type.h12
-rw-r--r--src/mongo/db/matcher/expression_where_base.cpp8
-rw-r--r--src/mongo/db/matcher/expression_where_base.h2
-rw-r--r--src/mongo/db/matcher/rewrite_expr.cpp4
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.cpp6
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp4
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp5
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_eq.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_fmod.cpp5
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_fmod.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.cpp4
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.cpp4
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_num_properties.cpp4
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_num_properties.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_object_match.cpp7
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_object_match.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.cpp5
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_str_length.cpp5
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_str_length.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_unique_items.cpp5
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_unique_items.h2
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_xor.cpp7
-rw-r--r--src/mongo/db/matcher/schema/expression_internal_schema_xor.h2
-rw-r--r--src/mongo/db/matcher/schema/json_schema_parser.cpp3
-rw-r--r--src/mongo/db/query/canonical_query.cpp2
-rw-r--r--src/mongo/db/query/canonical_query_test.cpp8
-rw-r--r--src/mongo/db/query/index_bounds_builder.cpp2
-rw-r--r--src/mongo/db/query/index_entry.cpp2
-rw-r--r--src/mongo/db/query/plan_cache_test.cpp4
-rw-r--r--src/mongo/db/query/plan_enumerator.cpp5
-rw-r--r--src/mongo/db/query/planner_ixselect.cpp2
-rw-r--r--src/mongo/db/query/planner_ixselect_test.cpp2
-rw-r--r--src/mongo/db/query/query_planner.cpp12
-rw-r--r--src/mongo/db/query/query_solution.cpp16
56 files changed, 184 insertions, 159 deletions
diff --git a/src/mongo/db/catalog/index_catalog_impl.cpp b/src/mongo/db/catalog/index_catalog_impl.cpp
index d43a7242df5..f776a2acaab 100644
--- a/src/mongo/db/catalog/index_catalog_impl.cpp
+++ b/src/mongo/db/catalog/index_catalog_impl.cpp
@@ -361,7 +361,7 @@ Status _checkValidFilterExpressions(MatchExpression* expression, int level = 0)
default:
return Status(ErrorCodes::CannotCreateIndex,
str::stream() << "unsupported expression in partial index: "
- << expression->toString());
+ << expression->debugString());
}
}
} // namespace
diff --git a/src/mongo/db/exec/subplan.cpp b/src/mongo/db/exec/subplan.cpp
index bce870afa6e..1a5cda14b3e 100644
--- a/src/mongo/db/exec/subplan.cpp
+++ b/src/mongo/db/exec/subplan.cpp
@@ -126,7 +126,7 @@ Status SubplanStage::planSubqueries() {
auto statusWithCQ = CanonicalQuery::canonicalize(getOpCtx(), *_query, orChild);
if (!statusWithCQ.isOK()) {
mongoutils::str::stream ss;
- ss << "Can't canonicalize subchild " << orChild->toString() << " "
+ ss << "Can't canonicalize subchild " << orChild->debugString() << " "
<< statusWithCQ.getStatus().reason();
return Status(ErrorCodes::BadValue, ss);
}
@@ -195,13 +195,13 @@ Status tagOrChildAccordingToCache(PlanCacheIndexTree* compositeCacheData,
if (NULL == branchCacheData) {
// For example, we don't cache things for 2d indices.
mongoutils::str::stream ss;
- ss << "No cache data for subchild " << orChild->toString();
+ ss << "No cache data for subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
if (SolutionCacheData::USE_INDEX_TAGS_SOLN != branchCacheData->solnType) {
mongoutils::str::stream ss;
- ss << "No indexed cache data for subchild " << orChild->toString();
+ ss << "No indexed cache data for subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
@@ -211,7 +211,7 @@ Status tagOrChildAccordingToCache(PlanCacheIndexTree* compositeCacheData,
if (!tagStatus.isOK()) {
mongoutils::str::stream ss;
- ss << "Failed to extract indices from subchild " << orChild->toString();
+ ss << "Failed to extract indices from subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
@@ -302,13 +302,13 @@ Status SubplanStage::choosePlanForSubqueries(PlanYieldPolicy* yieldPolicy) {
// for 2d indices.
if (NULL == bestSoln->cacheData.get()) {
mongoutils::str::stream ss;
- ss << "No cache data for subchild " << orChild->toString();
+ ss << "No cache data for subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
if (SolutionCacheData::USE_INDEX_TAGS_SOLN != bestSoln->cacheData->solnType) {
mongoutils::str::stream ss;
- ss << "No indexed cache data for subchild " << orChild->toString();
+ ss << "No indexed cache data for subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
@@ -318,7 +318,7 @@ Status SubplanStage::choosePlanForSubqueries(PlanYieldPolicy* yieldPolicy) {
if (!tagStatus.isOK()) {
mongoutils::str::stream ss;
- ss << "Failed to extract indices from subchild " << orChild->toString();
+ ss << "Failed to extract indices from subchild " << orChild->debugString();
return Status(ErrorCodes::BadValue, ss);
}
diff --git a/src/mongo/db/matcher/expression.cpp b/src/mongo/db/matcher/expression.cpp
index 35bee13f151..364ebdd68d7 100644
--- a/src/mongo/db/matcher/expression.cpp
+++ b/src/mongo/db/matcher/expression.cpp
@@ -40,18 +40,22 @@ namespace mongo {
*/
MONGO_FAIL_POINT_DEFINE(disableMatchExpressionOptimization);
-using std::string;
-
MatchExpression::MatchExpression(MatchType type) : _matchType(type) {}
-string MatchExpression::toString() const {
+std::string MatchExpression::toString() const {
BSONObjBuilder bob;
serialize(&bob);
return bob.obj().toString();
}
-void MatchExpression::_debugAddSpace(StringBuilder& debug, int level) const {
- for (int i = 0; i < level; i++)
+std::string MatchExpression::debugString() const {
+ StringBuilder builder;
+ debugString(builder, 0);
+ return builder.str();
+}
+
+void MatchExpression::_debugAddSpace(StringBuilder& debug, int indentationLevel) const {
+ for (int i = 0; i < indentationLevel; i++)
debug << " ";
}
diff --git a/src/mongo/db/matcher/expression.h b/src/mongo/db/matcher/expression.h
index 0fb0a2060b4..9607dce1963 100644
--- a/src/mongo/db/matcher/expression.h
+++ b/src/mongo/db/matcher/expression.h
@@ -309,8 +309,20 @@ public:
//
// Debug information
//
- virtual std::string toString() const;
- virtual void debugString(StringBuilder& debug, int level = 0) const = 0;
+
+ /**
+ * Returns a debug string representing the match expression tree, including any tags attached
+ * for planning. This debug string format may spill across multiple lines, so it is not suitable
+ * for logging at low debug levels or for error messages.
+ */
+ std::string debugString() const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const = 0;
+
+ /**
+ * Serializes this MatchExpression to BSON, and then returns a standard string representation of
+ * the resulting BSON object.
+ */
+ std::string toString() const;
protected:
/**
@@ -330,7 +342,7 @@ protected:
virtual void _doAddDependencies(DepsTracker* deps) const {}
- void _debugAddSpace(StringBuilder& debug, int level) const;
+ void _debugAddSpace(StringBuilder& debug, int indentationLevel) const;
private:
/**
diff --git a/src/mongo/db/matcher/expression_always_boolean.h b/src/mongo/db/matcher/expression_always_boolean.h
index 4beae6645c1..d638a4b4851 100644
--- a/src/mongo/db/matcher/expression_always_boolean.h
+++ b/src/mongo/db/matcher/expression_always_boolean.h
@@ -53,8 +53,8 @@ public:
return _value;
}
- void debugString(StringBuilder& debug, int level = 0) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final {
+ _debugAddSpace(debug, indentationLevel);
debug << name() << ": 1\n";
}
diff --git a/src/mongo/db/matcher/expression_arity.h b/src/mongo/db/matcher/expression_arity.h
index 7975b8517aa..9e1766197b9 100644
--- a/src/mongo/db/matcher/expression_arity.h
+++ b/src/mongo/db/matcher/expression_arity.h
@@ -53,8 +53,8 @@ public:
virtual ~FixedArityMatchExpression() = default;
- void debugString(StringBuilder& debug, int level) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel) const final {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
diff --git a/src/mongo/db/matcher/expression_array.cpp b/src/mongo/db/matcher/expression_array.cpp
index 42e29934623..af7205ef822 100644
--- a/src/mongo/db/matcher/expression_array.cpp
+++ b/src/mongo/db/matcher/expression_array.cpp
@@ -87,8 +87,8 @@ bool ElemMatchObjectMatchExpression::matchesArray(const BSONObj& anArray,
return false;
}
-void ElemMatchObjectMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void ElemMatchObjectMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " $elemMatch (obj)";
MatchExpression::TagData* td = getTag();
@@ -97,7 +97,7 @@ void ElemMatchObjectMatchExpression::debugString(StringBuilder& debug, int level
td->debugString(&debug);
}
debug << "\n";
- _sub->debugString(debug, level + 1);
+ _sub->debugString(debug, indentationLevel + 1);
}
BSONObj ElemMatchObjectMatchExpression::getSerializedRightHandSide() const {
@@ -160,8 +160,8 @@ bool ElemMatchValueMatchExpression::_arrayElementMatchesAll(const BSONElement& e
return true;
}
-void ElemMatchValueMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void ElemMatchValueMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " $elemMatch (value)";
MatchExpression::TagData* td = getTag();
@@ -171,7 +171,7 @@ void ElemMatchValueMatchExpression::debugString(StringBuilder& debug, int level)
}
debug << "\n";
for (unsigned i = 0; i < _subs.size(); i++) {
- _subs[i]->debugString(debug, level + 1);
+ _subs[i]->debugString(debug, indentationLevel + 1);
}
}
@@ -213,8 +213,8 @@ bool SizeMatchExpression::matchesArray(const BSONObj& anArray, MatchDetails* det
return anArray.nFields() == _size;
}
-void SizeMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void SizeMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " $size : " << _size << "\n";
MatchExpression::TagData* td = getTag();
diff --git a/src/mongo/db/matcher/expression_array.h b/src/mongo/db/matcher/expression_array.h
index bab018abfc2..471549f105e 100644
--- a/src/mongo/db/matcher/expression_array.h
+++ b/src/mongo/db/matcher/expression_array.h
@@ -84,7 +84,7 @@ public:
return std::move(e);
}
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -139,7 +139,7 @@ public:
return std::move(e);
}
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -190,7 +190,7 @@ public:
virtual bool matchesArray(const BSONObj& anArray, MatchDetails* details) const;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/expression_expr.h b/src/mongo/db/matcher/expression_expr.h
index 2b25c693016..72c947c2c5b 100644
--- a/src/mongo/db/matcher/expression_expr.h
+++ b/src/mongo/db/matcher/expression_expr.h
@@ -58,8 +58,8 @@ public:
std::unique_ptr<MatchExpression> shallowClone() const final;
- void debugString(StringBuilder& debug, int level = 0) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final {
+ _debugAddSpace(debug, indentationLevel);
debug << "$expr " << _expression->serialize(false).toString();
}
diff --git a/src/mongo/db/matcher/expression_geo.cpp b/src/mongo/db/matcher/expression_geo.cpp
index 0530686631f..b25ee5cf19e 100644
--- a/src/mongo/db/matcher/expression_geo.cpp
+++ b/src/mongo/db/matcher/expression_geo.cpp
@@ -371,8 +371,8 @@ bool GeoMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails
}
}
-void GeoMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void GeoMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
@@ -433,8 +433,8 @@ bool GeoNearMatchExpression::matchesSingleElement(const BSONElement& e,
return true;
}
-void GeoNearMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void GeoNearMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "GEONEAR " << _query->toString();
MatchExpression::TagData* td = getTag();
if (NULL != td) {
diff --git a/src/mongo/db/matcher/expression_geo.h b/src/mongo/db/matcher/expression_geo.h
index c23e87d9271..37f4727bb1a 100644
--- a/src/mongo/db/matcher/expression_geo.h
+++ b/src/mongo/db/matcher/expression_geo.h
@@ -86,7 +86,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
BSONObj getSerializedRightHandSide() const final;
@@ -177,7 +177,7 @@ public:
*/
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/expression_leaf.cpp b/src/mongo/db/matcher/expression_leaf.cpp
index 1acb218e09d..7327f3c4a86 100644
--- a/src/mongo/db/matcher/expression_leaf.cpp
+++ b/src/mongo/db/matcher/expression_leaf.cpp
@@ -73,8 +73,8 @@ bool ComparisonMatchExpressionBase::equivalent(const MatchExpression* other) con
return path() == realOther->path() && eltCmp.evaluate(_rhs == realOther->_rhs);
}
-void ComparisonMatchExpressionBase::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void ComparisonMatchExpressionBase::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << name();
debug << " " << _rhs.toString(false);
@@ -258,8 +258,8 @@ bool RegexMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetai
}
}
-void RegexMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void RegexMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " regex /" << _regex << "/" << _flags;
MatchExpression::TagData* td = getTag();
@@ -302,8 +302,8 @@ bool ModMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails
return e.numberLong() % _divisor == _remainder;
}
-void ModMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void ModMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " mod " << _divisor << " % x == " << _remainder;
MatchExpression::TagData* td = getTag();
if (NULL != td) {
@@ -336,8 +336,8 @@ bool ExistsMatchExpression::matchesSingleElement(const BSONElement& e,
return !e.eoo();
}
-void ExistsMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void ExistsMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " exists";
MatchExpression::TagData* td = getTag();
if (NULL != td) {
@@ -400,8 +400,8 @@ bool InMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails*
return false;
}
-void InMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " $in ";
debug << "[ ";
for (auto&& equality : _equalitySet) {
@@ -721,8 +721,8 @@ bool BitTestMatchExpression::matchesSingleElement(const BSONElement& e,
return performBitTest(eValue);
}
-void BitTestMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void BitTestMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " ";
diff --git a/src/mongo/db/matcher/expression_leaf.h b/src/mongo/db/matcher/expression_leaf.h
index cfe18e771a6..777614ecdaf 100644
--- a/src/mongo/db/matcher/expression_leaf.h
+++ b/src/mongo/db/matcher/expression_leaf.h
@@ -104,7 +104,7 @@ public:
virtual ~ComparisonMatchExpressionBase() = default;
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
BSONObj getSerializedRightHandSide() const final;
@@ -308,7 +308,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -352,7 +352,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -388,7 +388,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -411,7 +411,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
@@ -500,7 +500,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails* details = nullptr) const final;
- virtual void debugString(StringBuilder& debug, int level) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel) const;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/expression_text_base.cpp b/src/mongo/db/matcher/expression_text_base.cpp
index 16947ffeba6..ea3fa147de2 100644
--- a/src/mongo/db/matcher/expression_text_base.cpp
+++ b/src/mongo/db/matcher/expression_text_base.cpp
@@ -41,9 +41,9 @@ const bool TextMatchExpressionBase::kDiacriticSensitiveDefault = false;
TextMatchExpressionBase::TextMatchExpressionBase(StringData path)
: LeafMatchExpression(TEXT, path) {}
-void TextMatchExpressionBase::debugString(StringBuilder& debug, int level) const {
+void TextMatchExpressionBase::debugString(StringBuilder& debug, int indentationLevel) const {
const fts::FTSQuery& ftsQuery = getFTSQuery();
- _debugAddSpace(debug, level);
+ _debugAddSpace(debug, indentationLevel);
debug << "TEXT : query=" << ftsQuery.getQuery() << ", language=" << ftsQuery.getLanguage()
<< ", caseSensitive=" << ftsQuery.getCaseSensitive()
<< ", diacriticSensitive=" << ftsQuery.getDiacriticSensitive() << ", tag=";
diff --git a/src/mongo/db/matcher/expression_text_base.h b/src/mongo/db/matcher/expression_text_base.h
index 507bf4d6acc..a5247930ff5 100644
--- a/src/mongo/db/matcher/expression_text_base.h
+++ b/src/mongo/db/matcher/expression_text_base.h
@@ -68,7 +68,7 @@ public:
// Methods inherited from MatchExpression.
//
- void debugString(StringBuilder& debug, int level = 0) const final;
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final;
void serialize(BSONObjBuilder* out) const final;
diff --git a/src/mongo/db/matcher/expression_tree.cpp b/src/mongo/db/matcher/expression_tree.cpp
index f59849d218d..2cbdb1886f0 100644
--- a/src/mongo/db/matcher/expression_tree.cpp
+++ b/src/mongo/db/matcher/expression_tree.cpp
@@ -51,9 +51,9 @@ void ListOfMatchExpression::add(MatchExpression* e) {
}
-void ListOfMatchExpression::_debugList(StringBuilder& debug, int level) const {
+void ListOfMatchExpression::_debugList(StringBuilder& debug, int indentationLevel) const {
for (unsigned i = 0; i < _expressions.size(); i++)
- _expressions[i]->debugString(debug, level + 1);
+ _expressions[i]->debugString(debug, indentationLevel + 1);
}
void ListOfMatchExpression::_listToBSON(BSONArrayBuilder* out) const {
@@ -215,10 +215,10 @@ bool AndMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails
}
-void AndMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void AndMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "$and\n";
- _debugList(debug, level);
+ _debugList(debug, indentationLevel);
}
void AndMatchExpression::serialize(BSONObjBuilder* out) const {
@@ -258,10 +258,10 @@ bool OrMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails*
}
-void OrMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void OrMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "$or\n";
- _debugList(debug, level);
+ _debugList(debug, indentationLevel);
}
void OrMatchExpression::serialize(BSONObjBuilder* out) const {
@@ -300,10 +300,10 @@ bool NorMatchExpression::matchesSingleElement(const BSONElement& e, MatchDetails
return true;
}
-void NorMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void NorMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "$nor\n";
- _debugList(debug, level);
+ _debugList(debug, indentationLevel);
}
void NorMatchExpression::serialize(BSONObjBuilder* out) const {
@@ -313,10 +313,10 @@ void NorMatchExpression::serialize(BSONObjBuilder* out) const {
// -------
-void NotMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void NotMatchExpression::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "$not\n";
- _exp->debugString(debug, level + 1);
+ _exp->debugString(debug, indentationLevel + 1);
}
boost::optional<StringData> NotMatchExpression::getPathIfNotWithSinglePathMatchExpressionTree(
diff --git a/src/mongo/db/matcher/expression_tree.h b/src/mongo/db/matcher/expression_tree.h
index 35f9e8bc343..b89efb19461 100644
--- a/src/mongo/db/matcher/expression_tree.h
+++ b/src/mongo/db/matcher/expression_tree.h
@@ -93,7 +93,7 @@ public:
}
protected:
- void _debugList(StringBuilder& debug, int level) const;
+ void _debugList(StringBuilder& debug, int indentationLevel) const;
void _listToBSON(BSONArrayBuilder* out) const;
@@ -125,7 +125,7 @@ public:
return std::move(self);
}
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
virtual void serialize(BSONObjBuilder* out) const;
@@ -154,7 +154,7 @@ public:
return std::move(self);
}
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
virtual void serialize(BSONObjBuilder* out) const;
@@ -183,7 +183,7 @@ public:
return std::move(self);
}
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
virtual void serialize(BSONObjBuilder* out) const;
};
@@ -209,7 +209,7 @@ public:
return !_exp->matchesSingleElement(elt, details);
}
- virtual void debugString(StringBuilder& debug, int level = 0) const;
+ virtual void debugString(StringBuilder& debug, int indentationLevel = 0) const;
virtual void serialize(BSONObjBuilder* out) const;
diff --git a/src/mongo/db/matcher/expression_type.h b/src/mongo/db/matcher/expression_type.h
index c206103693c..f0820b968bc 100644
--- a/src/mongo/db/matcher/expression_type.h
+++ b/src/mongo/db/matcher/expression_type.h
@@ -79,8 +79,8 @@ public:
return _typeSet.hasType(elem.type());
}
- void debugString(StringBuilder& debug, int level) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel) const final {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << name() << ": " << _typeSet.toBSONArray().toString();
MatchExpression::TagData* td = getTag();
@@ -197,8 +197,8 @@ public:
return std::move(expr);
}
- void debugString(StringBuilder& debug, int level) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel) const final {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << name() << ": " << typeName(_binDataSubType);
MatchExpression::TagData* td = getTag();
@@ -294,8 +294,8 @@ public:
return std::move(expr);
}
- void debugString(StringBuilder& debug, int level) const final {
- _debugAddSpace(debug, level);
+ void debugString(StringBuilder& debug, int indentationLevel) const final {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << name() << ": " << typeName(_encryptedType);
if (auto td = getTag()) {
diff --git a/src/mongo/db/matcher/expression_where_base.cpp b/src/mongo/db/matcher/expression_where_base.cpp
index 0df2a9c145a..1fe88284a24 100644
--- a/src/mongo/db/matcher/expression_where_base.cpp
+++ b/src/mongo/db/matcher/expression_where_base.cpp
@@ -38,14 +38,14 @@ namespace mongo {
WhereMatchExpressionBase::WhereMatchExpressionBase(WhereParams params)
: MatchExpression(WHERE), _code(std::move(params.code)), _scope(std::move(params.scope)) {}
-void WhereMatchExpressionBase::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void WhereMatchExpressionBase::debugString(StringBuilder& debug, int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << "$where\n";
- _debugAddSpace(debug, level + 1);
+ _debugAddSpace(debug, indentationLevel + 1);
debug << "code: " << getCode() << "\n";
- _debugAddSpace(debug, level + 1);
+ _debugAddSpace(debug, indentationLevel + 1);
debug << "scope: " << getScope() << "\n";
}
diff --git a/src/mongo/db/matcher/expression_where_base.h b/src/mongo/db/matcher/expression_where_base.h
index 2f90625fb58..fa7bc6bb632 100644
--- a/src/mongo/db/matcher/expression_where_base.h
+++ b/src/mongo/db/matcher/expression_where_base.h
@@ -61,7 +61,7 @@ public:
return false;
}
- void debugString(StringBuilder& debug, int level = 0) const final;
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final;
void serialize(BSONObjBuilder* out) const final;
diff --git a/src/mongo/db/matcher/rewrite_expr.cpp b/src/mongo/db/matcher/rewrite_expr.cpp
index 3146f9a25d2..c03ba61659f 100644
--- a/src/mongo/db/matcher/rewrite_expr.cpp
+++ b/src/mongo/db/matcher/rewrite_expr.cpp
@@ -51,9 +51,9 @@ RewriteExpr::RewriteResult RewriteExpr::rewrite(const boost::intrusive_ptr<Expre
if (auto matchTree = rewriteExpr._rewriteExpression(expression)) {
matchExpression = std::move(matchTree);
- LOG(5) << "Post-rewrite MatchExpression: " << matchExpression->toString();
+ LOG(5) << "Post-rewrite MatchExpression: " << matchExpression->debugString();
matchExpression = MatchExpression::optimize(std::move(matchExpression));
- LOG(5) << "Post-rewrite/post-optimized MatchExpression: " << matchExpression->toString();
+ LOG(5) << "Post-rewrite/post-optimized MatchExpression: " << matchExpression->debugString();
}
return {std::move(matchExpression), std::move(rewriteExpr._matchExprElemStorage)};
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.cpp
index 2b8d2a7b76d..7c2d67425b0 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.cpp
@@ -66,11 +66,11 @@ bool InternalSchemaAllElemMatchFromIndexMatchExpression::equivalent(
}
void InternalSchemaAllElemMatchFromIndexMatchExpression::debugString(StringBuilder& debug,
- int level) const {
- _debugAddSpace(debug, level);
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << kName << "\n";
debug << " index: " << _index << ", query:\n";
- _expression->getFilter()->debugString(debug, level + 1);
+ _expression->getFilter()->debugString(debug, indentationLevel + 1);
}
BSONObj InternalSchemaAllElemMatchFromIndexMatchExpression::getSerializedRightHandSide() const {
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.h b/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.h
index c56884b96bb..dab875cb80d 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_all_elem_match_from_index.h
@@ -61,7 +61,7 @@ public:
return true;
}
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp
index 733a60c5771..c656840e247 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.cpp
@@ -54,8 +54,8 @@ InternalSchemaAllowedPropertiesMatchExpression::InternalSchemaAllowedPropertiesM
}
void InternalSchemaAllowedPropertiesMatchExpression::debugString(StringBuilder& debug,
- int level) const {
- _debugAddSpace(debug, level);
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.h b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.h
index 5779c4950b8..29042a38aae 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_allowed_properties.h
@@ -115,7 +115,7 @@ public:
std::vector<PatternSchema> patternProperties,
std::unique_ptr<ExpressionWithPlaceholder> otherwise);
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
bool equivalent(const MatchExpression* expr) const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
index 9f7db2244dd..c28eb69e4fb 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_eq.cpp
@@ -53,8 +53,9 @@ bool InternalSchemaEqMatchExpression::matchesSingleElement(const BSONElement& el
return _eltCmp.evaluate(_rhsElem == elem);
}
-void InternalSchemaEqMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaEqMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << kName << " " << _rhsElem.toString(false);
auto td = getTag();
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_eq.h b/src/mongo/db/matcher/schema/expression_internal_schema_eq.h
index 7d6406da36c..c2495d991ba 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_eq.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_eq.h
@@ -52,7 +52,7 @@ public:
bool matchesSingleElement(const BSONElement&, MatchDetails*) const final;
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_fmod.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_fmod.cpp
index 71e954a930f..6362c3e8d41 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_fmod.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_fmod.cpp
@@ -61,8 +61,9 @@ bool InternalSchemaFmodMatchExpression::matchesSingleElement(const BSONElement&
return false;
}
-void InternalSchemaFmodMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaFmodMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " fmod: divisor: " << _divisor.toString()
<< " remainder: " << _remainder.toString();
MatchExpression::TagData* td = getTag();
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_fmod.h b/src/mongo/db/matcher/schema/expression_internal_schema_fmod.h
index 76fb8670c17..201ec23f70e 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_fmod.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_fmod.h
@@ -52,7 +52,7 @@ public:
bool matchesSingleElement(const BSONElement& e, MatchDetails* details = nullptr) const final;
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.cpp
index 7c929a08910..f4264c5d1ef 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.cpp
@@ -43,8 +43,8 @@ InternalSchemaMatchArrayIndexMatchExpression::InternalSchemaMatchArrayIndexMatch
}
void InternalSchemaMatchArrayIndexMatchExpression::debugString(StringBuilder& debug,
- int level) const {
- _debugAddSpace(debug, level);
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.h b/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.h
index 89958d3fb82..9a0bb8675b7 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_match_array_index.h
@@ -45,7 +45,7 @@ public:
InternalSchemaMatchArrayIndexMatchExpression(
StringData path, long long index, std::unique_ptr<ExpressionWithPlaceholder> expression);
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
bool equivalent(const MatchExpression* expr) const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.cpp
index dd4281890d7..c6aa1cf0cca 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.cpp
@@ -38,8 +38,8 @@ InternalSchemaNumArrayItemsMatchExpression::InternalSchemaNumArrayItemsMatchExpr
: ArrayMatchingMatchExpression(type, path), _name(name), _numItems(numItems) {}
void InternalSchemaNumArrayItemsMatchExpression::debugString(StringBuilder& debug,
- int level) const {
- _debugAddSpace(debug, level);
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << _name << " " << _numItems << "\n";
MatchExpression::TagData* td = getTag();
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.h b/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.h
index 930369c6241..249de09c030 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_num_array_items.h
@@ -46,7 +46,7 @@ public:
virtual ~InternalSchemaNumArrayItemsMatchExpression() {}
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.cpp
index b62d0a6e889..d8895fc7adb 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.cpp
@@ -34,8 +34,8 @@
namespace mongo {
void InternalSchemaNumPropertiesMatchExpression::debugString(StringBuilder& debug,
- int level) const {
- _debugAddSpace(debug, level);
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
debug << builder.obj().toString() << "\n";
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.h b/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.h
index aad612ec2b4..415ed946145 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_num_properties.h
@@ -59,7 +59,7 @@ public:
return nullptr;
}
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
void serialize(BSONObjBuilder* out) const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_object_match.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_object_match.cpp
index ab36f871ef3..36a921a4380 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_object_match.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_object_match.cpp
@@ -51,10 +51,11 @@ bool InternalSchemaObjectMatchExpression::matchesSingleElement(const BSONElement
return _sub->matchesBSON(elem.Obj());
}
-void InternalSchemaObjectMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaObjectMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << kName << "\n";
- _sub->debugString(debug, level + 1);
+ _sub->debugString(debug, indentationLevel + 1);
}
BSONObj InternalSchemaObjectMatchExpression::getSerializedRightHandSide() const {
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_object_match.h b/src/mongo/db/matcher/schema/expression_internal_schema_object_match.h
index 86d80870a97..407c6680057 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_object_match.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_object_match.h
@@ -43,7 +43,7 @@ public:
std::unique_ptr<MatchExpression> shallowClone() const final;
- void debugString(StringBuilder& debug, int level = 0) const final;
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.cpp
index bea30b7657b..1b1fc6ae29f 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.cpp
@@ -40,8 +40,9 @@ bool InternalSchemaRootDocEqMatchExpression::matches(const MatchableDocument* do
return _objCmp.evaluate(doc->toBSON() == _rhsObj);
}
-void InternalSchemaRootDocEqMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaRootDocEqMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << kName << " " << _rhsObj.toString();
auto td = getTag();
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.h b/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.h
index ea2f411c51a..062d358939d 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_root_doc_eq.h
@@ -65,7 +65,7 @@ public:
std::unique_ptr<MatchExpression> shallowClone() const final;
- void debugString(StringBuilder& debug, int level = 0) const final;
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final;
void serialize(BSONObjBuilder* out) const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_str_length.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_str_length.cpp
index 0bf8e45caf7..d8f961ce35b 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_str_length.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_str_length.cpp
@@ -41,8 +41,9 @@ InternalSchemaStrLengthMatchExpression::InternalSchemaStrLengthMatchExpression(M
StringData name)
: LeafMatchExpression(type, path), _name(name), _strLen(strLen) {}
-void InternalSchemaStrLengthMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaStrLengthMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << path() << " " << _name << " " << _strLen << "\n";
MatchExpression::TagData* td = getTag();
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_str_length.h b/src/mongo/db/matcher/schema/expression_internal_schema_str_length.h
index 3fbdd83c1dd..12ade1d8fc0 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_str_length.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_str_length.h
@@ -58,7 +58,7 @@ public:
return getComparator()(len);
};
- void debugString(StringBuilder& debug, int level) const final;
+ void debugString(StringBuilder& debug, int indentationLevel) const final;
BSONObj getSerializedRightHandSide() const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.cpp
index 2854d58c5d5..afb0a39cbe4 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.cpp
@@ -34,8 +34,9 @@
namespace mongo {
constexpr StringData InternalSchemaUniqueItemsMatchExpression::kName;
-void InternalSchemaUniqueItemsMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaUniqueItemsMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
BSONObjBuilder builder;
serialize(&builder);
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.h b/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.h
index f9e9527e6f1..9b47e32682f 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_unique_items.h
@@ -71,7 +71,7 @@ public:
return true;
}
- void debugString(StringBuilder& builder, int level) const final;
+ void debugString(StringBuilder& builder, int indentationLevel) const final;
bool equivalent(const MatchExpression* other) const final;
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_xor.cpp b/src/mongo/db/matcher/schema/expression_internal_schema_xor.cpp
index a876792060a..c920e38f827 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_xor.cpp
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_xor.cpp
@@ -66,10 +66,11 @@ bool InternalSchemaXorMatchExpression::matchesSingleElement(const BSONElement& e
return found;
}
-void InternalSchemaXorMatchExpression::debugString(StringBuilder& debug, int level) const {
- _debugAddSpace(debug, level);
+void InternalSchemaXorMatchExpression::debugString(StringBuilder& debug,
+ int indentationLevel) const {
+ _debugAddSpace(debug, indentationLevel);
debug << kName + "\n";
- _debugList(debug, level);
+ _debugList(debug, indentationLevel);
}
void InternalSchemaXorMatchExpression::serialize(BSONObjBuilder* out) const {
diff --git a/src/mongo/db/matcher/schema/expression_internal_schema_xor.h b/src/mongo/db/matcher/schema/expression_internal_schema_xor.h
index 580524ebe6b..b11d1641a33 100644
--- a/src/mongo/db/matcher/schema/expression_internal_schema_xor.h
+++ b/src/mongo/db/matcher/schema/expression_internal_schema_xor.h
@@ -58,7 +58,7 @@ public:
return std::move(xorCopy);
}
- void debugString(StringBuilder& debug, int level = 0) const final;
+ void debugString(StringBuilder& debug, int indentationLevel = 0) const final;
void serialize(BSONObjBuilder* out) const final;
};
diff --git a/src/mongo/db/matcher/schema/json_schema_parser.cpp b/src/mongo/db/matcher/schema/json_schema_parser.cpp
index 2b35d8e34b5..f46196df71f 100644
--- a/src/mongo/db/matcher/schema/json_schema_parser.cpp
+++ b/src/mongo/db/matcher/schema/json_schema_parser.cpp
@@ -1583,7 +1583,8 @@ StatusWithMatchExpression JSONSchemaParser::parse(BSONObj schema, bool ignoreUnk
try {
auto translation = _parse(""_sd, schema, ignoreUnknownKeywords);
if (shouldLog(logger::LogSeverity::Debug(5)) && translation.isOK()) {
- LOG(5) << "Translated schema match expression: " << translation.getValue()->toString();
+ LOG(5) << "Translated schema match expression: "
+ << translation.getValue()->debugString();
}
return translation;
} catch (const DBException& ex) {
diff --git a/src/mongo/db/query/canonical_query.cpp b/src/mongo/db/query/canonical_query.cpp
index f8661a2fdbc..fa2f522d6de 100644
--- a/src/mongo/db/query/canonical_query.cpp
+++ b/src/mongo/db/query/canonical_query.cpp
@@ -441,7 +441,7 @@ std::string CanonicalQuery::toString() const {
}
// The expression tree puts an endl on for us.
- ss << "Tree: " << _root->toString();
+ ss << "Tree: " << _root->debugString();
ss << "Sort: " << _qr->getSort().toString() << '\n';
ss << "Proj: " << _qr->getProj().toString() << '\n';
if (!_qr->getCollation().isEmpty()) {
diff --git a/src/mongo/db/query/canonical_query_test.cpp b/src/mongo/db/query/canonical_query_test.cpp
index 1d2138cc581..6afbbfe4d57 100644
--- a/src/mongo/db/query/canonical_query_test.cpp
+++ b/src/mongo/db/query/canonical_query_test.cpp
@@ -74,8 +74,8 @@ void assertEquivalent(const char* queryStr,
}
mongoutils::str::stream ss;
ss << "Match expressions are not equivalent."
- << "\nOriginal query: " << queryStr << "\nExpected: " << expected->toString()
- << "\nActual: " << actual->toString();
+ << "\nOriginal query: " << queryStr << "\nExpected: " << expected->debugString()
+ << "\nActual: " << actual->debugString();
FAIL(ss);
}
@@ -87,8 +87,8 @@ void assertNotEquivalent(const char* queryStr,
}
mongoutils::str::stream ss;
ss << "Match expressions are equivalent."
- << "\nOriginal query: " << queryStr << "\nExpected: " << expected->toString()
- << "\nActual: " << actual->toString();
+ << "\nOriginal query: " << queryStr << "\nExpected: " << expected->debugString()
+ << "\nActual: " << actual->debugString();
FAIL(ss);
}
diff --git a/src/mongo/db/query/index_bounds_builder.cpp b/src/mongo/db/query/index_bounds_builder.cpp
index f6e1a3841dc..c86a43a5f10 100644
--- a/src/mongo/db/query/index_bounds_builder.cpp
+++ b/src/mongo/db/query/index_bounds_builder.cpp
@@ -739,7 +739,7 @@ void IndexBoundsBuilder::_translatePredicate(const MatchExpression* expr,
}
} else {
warning() << "Planner error, trying to build bounds for expression: "
- << redact(expr->toString());
+ << redact(expr->debugString());
verify(0);
}
}
diff --git a/src/mongo/db/query/index_entry.cpp b/src/mongo/db/query/index_entry.cpp
index f3af99d36d2..74be2c8ab32 100644
--- a/src/mongo/db/query/index_entry.cpp
+++ b/src/mongo/db/query/index_entry.cpp
@@ -54,7 +54,7 @@ std::string IndexEntry::toString() const {
sb << " name: '" << identifier << "'";
if (filterExpr) {
- sb << " filterExpr: " << filterExpr->toString();
+ sb << " filterExpr: " << filterExpr->debugString();
}
if (!infoObj.isEmpty()) {
diff --git a/src/mongo/db/query/plan_cache_test.cpp b/src/mongo/db/query/plan_cache_test.cpp
index 903da5cdda2..6cf50b688a1 100644
--- a/src/mongo/db/query/plan_cache_test.cpp
+++ b/src/mongo/db/query/plan_cache_test.cpp
@@ -234,8 +234,8 @@ void assertEquivalent(const char* queryStr,
}
str::stream ss;
ss << "Match expressions are not equivalent."
- << "\nOriginal query: " << queryStr << "\nExpected: " << expected->toString()
- << "\nActual: " << actual->toString();
+ << "\nOriginal query: " << queryStr << "\nExpected: " << expected->debugString()
+ << "\nActual: " << actual->debugString();
FAIL(ss);
}
diff --git a/src/mongo/db/query/plan_enumerator.cpp b/src/mongo/db/query/plan_enumerator.cpp
index 2ca15e65bc3..1dbdb6c973d 100644
--- a/src/mongo/db/query/plan_enumerator.cpp
+++ b/src/mongo/db/query/plan_enumerator.cpp
@@ -308,11 +308,12 @@ string PlanEnumerator::NodeAssignment::toString() const {
ss << "\t\tidx[" << oie.index << "]\n";
for (size_t k = 0; k < oie.preds.size(); ++k) {
- ss << "\t\t\tpos " << oie.positions[k] << " pred " << oie.preds[k]->toString();
+ ss << "\t\t\tpos " << oie.positions[k] << " pred "
+ << oie.preds[k]->debugString();
}
for (auto&& pushdown : oie.orPushdowns) {
- ss << "\t\torPushdownPred: " << pushdown.first->toString();
+ ss << "\t\torPushdownPred: " << pushdown.first->debugString();
}
}
}
diff --git a/src/mongo/db/query/planner_ixselect.cpp b/src/mongo/db/query/planner_ixselect.cpp
index 7383659e7f6..1f314787fdb 100644
--- a/src/mongo/db/query/planner_ixselect.cpp
+++ b/src/mongo/db/query/planner_ixselect.cpp
@@ -574,7 +574,7 @@ bool QueryPlannerIXSelect::_compatible(const BSONElement& keyPatternElt,
} else if (IndexNames::GEO_HAYSTACK == indexedFieldType) {
return false;
} else {
- warning() << "Unknown indexing for node " << node->toString() << " and field "
+ warning() << "Unknown indexing for node " << node->debugString() << " and field "
<< keyPatternElt.toString();
verify(0);
}
diff --git a/src/mongo/db/query/planner_ixselect_test.cpp b/src/mongo/db/query/planner_ixselect_test.cpp
index ff4149b5dcf..1f021e13d6e 100644
--- a/src/mongo/db/query/planner_ixselect_test.cpp
+++ b/src/mongo/db/query/planner_ixselect_test.cpp
@@ -174,7 +174,7 @@ void findRelevantTaggedNodePathsAndIndices(MatchExpression* root,
RelevantTag* r = dynamic_cast<RelevantTag*>(tag);
if (!r) {
mongoutils::str::stream ss;
- ss << "tag is not instance of RelevantTag. tree: " << root->toString()
+ ss << "tag is not instance of RelevantTag. tree: " << root->debugString()
<< "; tag: " << buf.str();
FAIL(ss);
}
diff --git a/src/mongo/db/query/query_planner.cpp b/src/mongo/db/query/query_planner.cpp
index 34cc90bcb8d..0a45ee45dca 100644
--- a/src/mongo/db/query/query_planner.cpp
+++ b/src/mongo/db/query/query_planner.cpp
@@ -478,7 +478,7 @@ StatusWith<std::unique_ptr<QuerySolution>> QueryPlanner::planFromCache(
LOG(5) << "Tagging the match expression according to cache data: " << endl
<< "Filter:" << endl
- << redact(clone->toString()) << "Cache data:" << endl
+ << redact(clone->debugString()) << "Cache data:" << endl
<< redact(winnerCacheData.toString());
stdx::unordered_set<string> fields;
@@ -504,7 +504,7 @@ StatusWith<std::unique_ptr<QuerySolution>> QueryPlanner::planFromCache(
// The MatchExpression tree is in canonical order. We must order the nodes for access planning.
prepareForAccessPlanning(clone.get());
- LOG(5) << "Tagged tree:" << endl << redact(clone->toString());
+ LOG(5) << "Tagged tree:" << endl << redact(clone->debugString());
// Use the cached index assignments to build solnRoot.
std::unique_ptr<QuerySolutionNode> solnRoot(QueryPlannerAccess::buildIndexedDataAccess(
@@ -726,7 +726,7 @@ StatusWith<std::vector<std::unique_ptr<QuerySolution>>> QueryPlanner::plan(
}
// query.root() is now annotated with RelevantTag(s).
- LOG(5) << "Rated tree:" << endl << redact(query.root()->toString());
+ LOG(5) << "Rated tree:" << endl << redact(query.root()->debugString());
// If there is a GEO_NEAR it must have an index it can use directly.
const MatchExpression* gnNode = NULL;
@@ -740,7 +740,7 @@ StatusWith<std::vector<std::unique_ptr<QuerySolution>>> QueryPlanner::plan(
return Status(ErrorCodes::BadValue, "unable to find index for $geoNear query");
}
- LOG(5) << "Rated tree after geonear processing:" << redact(query.root()->toString());
+ LOG(5) << "Rated tree after geonear processing:" << redact(query.root()->debugString());
}
// Likewise, if there is a TEXT it must have an index it can use directly.
@@ -776,7 +776,7 @@ StatusWith<std::vector<std::unique_ptr<QuerySolution>>> QueryPlanner::plan(
// assigned to it.
invariant(1 == tag->first.size() + tag->notFirst.size());
- LOG(5) << "Rated tree after text processing:" << redact(query.root()->toString());
+ LOG(5) << "Rated tree after text processing:" << redact(query.root()->debugString());
}
// If we have any relevant indices, we try to create indexed plans.
@@ -793,7 +793,7 @@ StatusWith<std::vector<std::unique_ptr<QuerySolution>>> QueryPlanner::plan(
unique_ptr<MatchExpression> nextTaggedTree;
while ((nextTaggedTree = isp.getNext()) && (out.size() < params.maxIndexedSolutions)) {
LOG(5) << "About to build solntree from tagged tree:" << endl
- << redact(nextTaggedTree->toString());
+ << redact(nextTaggedTree->debugString());
// Store the plan cache index tree before calling prepareForAccessingPlanning(), so that
// the PlanCacheIndexTree has the same sort as the MatchExpression used to generate the
diff --git a/src/mongo/db/query/query_solution.cpp b/src/mongo/db/query/query_solution.cpp
index 41964470d6a..dd0be890782 100644
--- a/src/mongo/db/query/query_solution.cpp
+++ b/src/mongo/db/query/query_solution.cpp
@@ -205,7 +205,7 @@ void TextNode::appendToString(mongoutils::str::stream* ss, int indent) const {
*ss << "indexPrefix = " << indexPrefix.toString() << '\n';
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString();
+ *ss << " filter = " << filter->debugString();
}
addCommon(ss, indent);
}
@@ -235,7 +235,7 @@ void CollectionScanNode::appendToString(mongoutils::str::stream* ss, int indent)
*ss << "ns = " << name << '\n';
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << "filter = " << filter->toString();
+ *ss << "filter = " << filter->debugString();
}
addCommon(ss, indent);
}
@@ -267,7 +267,7 @@ void AndHashNode::appendToString(mongoutils::str::stream* ss, int indent) const
*ss << "AND_HASH\n";
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString() << '\n';
+ *ss << " filter = " << filter->debugString() << '\n';
}
addCommon(ss, indent);
for (size_t i = 0; i < children.size(); ++i) {
@@ -371,7 +371,7 @@ void OrNode::appendToString(mongoutils::str::stream* ss, int indent) const {
*ss << "OR\n";
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString() << '\n';
+ *ss << " filter = " << filter->debugString() << '\n';
}
addCommon(ss, indent);
for (size_t i = 0; i < children.size(); ++i) {
@@ -432,7 +432,7 @@ void MergeSortNode::appendToString(mongoutils::str::stream* ss, int indent) cons
*ss << "MERGE_SORT\n";
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString() << '\n';
+ *ss << " filter = " << filter->debugString() << '\n';
}
addCommon(ss, indent);
for (size_t i = 0; i < children.size(); ++i) {
@@ -531,7 +531,7 @@ void IndexScanNode::appendToString(mongoutils::str::stream* ss, int indent) cons
*ss << "keyPattern = " << index.keyPattern << '\n';
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << "filter = " << filter->toString();
+ *ss << "filter = " << filter->debugString();
}
addIndent(ss, indent + 1);
*ss << "direction = " << direction << '\n';
@@ -1043,7 +1043,7 @@ void GeoNear2DNode::appendToString(mongoutils::str::stream* ss, int indent) cons
*ss << "nearQuery = " << nq->toString() << '\n';
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString();
+ *ss << " filter = " << filter->debugString();
}
}
@@ -1077,7 +1077,7 @@ void GeoNear2DSphereNode::appendToString(mongoutils::str::stream* ss, int indent
*ss << "nearQuery = " << nq->toString() << '\n';
if (NULL != filter) {
addIndent(ss, indent + 1);
- *ss << " filter = " << filter->toString();
+ *ss << " filter = " << filter->debugString();
}
}