diff options
author | Tess Avitabile <tess.avitabile@mongodb.com> | 2016-06-21 14:52:55 -0400 |
---|---|---|
committer | Tess Avitabile <tess.avitabile@mongodb.com> | 2016-07-07 11:28:34 -0400 |
commit | 582818dac41ac01975820c09f79d3b86dc3782cc (patch) | |
tree | 6aef7efec5f12763fe2286ad722e70bdf44205a5 /src/mongo/db/matcher | |
parent | e39c46b27f4ae58f96b685dd625b0165761fee0d (diff) | |
download | mongo-582818dac41ac01975820c09f79d3b86dc3782cc.tar.gz |
SERVER-23882 Collation should be considered part of a query's shape
Diffstat (limited to 'src/mongo/db/matcher')
-rw-r--r-- | src/mongo/db/matcher/expression_algo.cpp | 19 | ||||
-rw-r--r-- | src/mongo/db/matcher/expression_leaf.h | 16 |
2 files changed, 19 insertions, 16 deletions
diff --git a/src/mongo/db/matcher/expression_algo.cpp b/src/mongo/db/matcher/expression_algo.cpp index 6365d3326bb..d918ead80f9 100644 --- a/src/mongo/db/matcher/expression_algo.cpp +++ b/src/mongo/db/matcher/expression_algo.cpp @@ -46,19 +46,6 @@ using std::unique_ptr; namespace { -bool isComparisonMatchExpression(const MatchExpression* expr) { - switch (expr->matchType()) { - case MatchExpression::LT: - case MatchExpression::LTE: - case MatchExpression::EQ: - case MatchExpression::GTE: - case MatchExpression::GT: - return true; - default: - return false; - } -} - bool supportsEquality(const ComparisonMatchExpression* expr) { switch (expr->matchType()) { case MatchExpression::LTE: @@ -153,7 +140,7 @@ bool _isSubsetOf(const MatchExpression* lhs, const ComparisonMatchExpression* rh return false; } - if (isComparisonMatchExpression(lhs)) { + if (ComparisonMatchExpression::isComparisonMatchExpression(lhs)) { return _isSubsetOf(static_cast<const ComparisonMatchExpression*>(lhs), rhs); } @@ -188,7 +175,7 @@ bool _isSubsetOf(const MatchExpression* lhs, const ExistsMatchExpression* rhs) { return false; } - if (isComparisonMatchExpression(lhs)) { + if (ComparisonMatchExpression::isComparisonMatchExpression(lhs)) { const ComparisonMatchExpression* cme = static_cast<const ComparisonMatchExpression*>(lhs); // CompareMatchExpression::init() prohibits creating a match expression with EOO or // Undefined types, so only need to ensure that the value is not of type jstNULL. @@ -338,7 +325,7 @@ bool isSubsetOf(const MatchExpression* lhs, const MatchExpression* rhs) { return true; } - if (isComparisonMatchExpression(rhs)) { + if (ComparisonMatchExpression::isComparisonMatchExpression(rhs)) { return _isSubsetOf(lhs, static_cast<const ComparisonMatchExpression*>(rhs)); } diff --git a/src/mongo/db/matcher/expression_leaf.h b/src/mongo/db/matcher/expression_leaf.h index 7ef4dd7c860..62a45c81e9c 100644 --- a/src/mongo/db/matcher/expression_leaf.h +++ b/src/mongo/db/matcher/expression_leaf.h @@ -117,6 +117,22 @@ public: return _collator; } + /** + * Returns true if the MatchExpression is a ComparisonMatchExpression. + */ + static bool isComparisonMatchExpression(const MatchExpression* expr) { + switch (expr->matchType()) { + case MatchExpression::LT: + case MatchExpression::LTE: + case MatchExpression::EQ: + case MatchExpression::GTE: + case MatchExpression::GT: + return true; + default: + return false; + } + } + protected: BSONElement _rhs; |