diff options
author | David Storch <david.storch@10gen.com> | 2016-05-03 13:57:13 -0400 |
---|---|---|
committer | David Storch <david.storch@10gen.com> | 2016-05-04 09:41:58 -0400 |
commit | 3e3313409d90026ed5f629e8ffb87b04cca5a524 (patch) | |
tree | 89552b979750cb9d5c4abf26472bb9211179eb19 | |
parent | 8f445bef3ad620018a422e7b08ebff552dd0b825 (diff) | |
download | mongo-3e3313409d90026ed5f629e8ffb87b04cca5a524.tar.gz |
SERVER-23349 make CollatorInterface methods const
Also changes all uses of CollatorInterface* to pointers-to-const.
92 files changed, 512 insertions, 510 deletions
diff --git a/src/mongo/base/string_data_comparator_interface.h b/src/mongo/base/string_data_comparator_interface.h index f532aafeae4..a8a4cee7a26 100644 --- a/src/mongo/base/string_data_comparator_interface.h +++ b/src/mongo/base/string_data_comparator_interface.h @@ -42,7 +42,7 @@ public: /** * Compares two StringData objects. */ - virtual int compare(StringData left, StringData right) = 0; + virtual int compare(StringData left, StringData right) const = 0; }; } // namespace mongo diff --git a/src/mongo/bson/bsonelement.cpp b/src/mongo/bson/bsonelement.cpp index 7c934fb8c81..0de4ce56a33 100644 --- a/src/mongo/bson/bsonelement.cpp +++ b/src/mongo/bson/bsonelement.cpp @@ -381,7 +381,7 @@ std::vector<BSONElement> BSONElement::Array() const { */ int BSONElement::woCompare(const BSONElement& e, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { int lt = (int)canonicalType(); int rt = (int)e.canonicalType(); int x = lt - rt; @@ -853,7 +853,7 @@ std::string escape(const std::string& s, bool escape_slash) { */ int compareElementValues(const BSONElement& l, const BSONElement& r, - StringData::ComparatorInterface* comparator) { + const StringData::ComparatorInterface* comparator) { int f; switch (l.type()) { diff --git a/src/mongo/bson/bsonelement.h b/src/mongo/bson/bsonelement.h index b3e8c3caf98..8db2f2f7722 100644 --- a/src/mongo/bson/bsonelement.h +++ b/src/mongo/bson/bsonelement.h @@ -60,7 +60,7 @@ typedef BSONObjBuilder bob; */ int compareElementValues(const BSONElement& l, const BSONElement& r, - StringData::ComparatorInterface* comparator = nullptr); + const StringData::ComparatorInterface* comparator = nullptr); /** BSONElement represents an "element" in a BSONObj. So for the object { a : 3, b : "abc" }, 'a : 3' is the first element (key+value). @@ -494,7 +494,7 @@ public: */ int woCompare(const BSONElement& e, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; /** * Functor compatible with std::hash for std::unordered_{map,set} diff --git a/src/mongo/bson/bsonmisc.h b/src/mongo/bson/bsonmisc.h index 55d80e7821f..89a24015238 100644 --- a/src/mongo/bson/bsonmisc.h +++ b/src/mongo/bson/bsonmisc.h @@ -43,7 +43,7 @@ public: * string elements. A custom string comparator may be provided, but it must outlive the * constructed BSONElementCmpWithoutField. */ - BSONElementCmpWithoutField(StringData::ComparatorInterface* stringComparator = nullptr) + BSONElementCmpWithoutField(const StringData::ComparatorInterface* stringComparator = nullptr) : _stringComparator(stringComparator) {} bool operator()(const BSONElement& l, const BSONElement& r) const { @@ -51,7 +51,7 @@ public: } private: - StringData::ComparatorInterface* _stringComparator; + const StringData::ComparatorInterface* _stringComparator; }; class BSONObjCmp { @@ -62,7 +62,7 @@ public: * constructed BSONElementCmpWithoutField. */ BSONObjCmp(const BSONObj& order = BSONObj(), - StringData::ComparatorInterface* stringComparator = nullptr) + const StringData::ComparatorInterface* stringComparator = nullptr) : _order(order), _stringComparator(stringComparator) {} bool operator()(const BSONObj& l, const BSONObj& r) const { return l.woCompare(r, _order, true, _stringComparator) < 0; @@ -73,7 +73,7 @@ public: private: BSONObj _order; - StringData::ComparatorInterface* _stringComparator; + const StringData::ComparatorInterface* _stringComparator; }; typedef std::set<BSONObj, BSONObjCmp> BSONObjSet; diff --git a/src/mongo/bson/bsonobj.cpp b/src/mongo/bson/bsonobj.cpp index 8274ab5ccd9..5c19d28a3c3 100644 --- a/src/mongo/bson/bsonobj.cpp +++ b/src/mongo/bson/bsonobj.cpp @@ -121,7 +121,7 @@ bool BSONObj::valid() const { int BSONObj::woCompare(const BSONObj& r, const Ordering& o, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { if (isEmpty()) return r.isEmpty() ? 0 : -1; if (r.isEmpty()) @@ -157,7 +157,7 @@ int BSONObj::woCompare(const BSONObj& r, int BSONObj::woCompare(const BSONObj& r, const BSONObj& idxKey, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { if (isEmpty()) return r.isEmpty() ? 0 : -1; if (r.isEmpty()) diff --git a/src/mongo/bson/bsonobj.h b/src/mongo/bson/bsonobj.h index fa39b2d9220..9333670339b 100644 --- a/src/mongo/bson/bsonobj.h +++ b/src/mongo/bson/bsonobj.h @@ -404,7 +404,7 @@ public: int woCompare(const BSONObj& r, const Ordering& o, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; /**wo='well ordered'. fields must be in same order in each object. Ordering is with respect to the signs of the elements @@ -415,7 +415,7 @@ public: int woCompare(const BSONObj& r, const BSONObj& ordering = BSONObj(), bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; bool operator<(const BSONObj& other) const { return woCompare(other) < 0; diff --git a/src/mongo/bson/mutable/const_element-inl.h b/src/mongo/bson/mutable/const_element-inl.h index a7f3864ae17..2d00ec0b797 100644 --- a/src/mongo/bson/mutable/const_element-inl.h +++ b/src/mongo/bson/mutable/const_element-inl.h @@ -164,21 +164,24 @@ inline SafeNum ConstElement::getValueSafeNum() const { return _basis.getValueSafeNum(); } -inline int ConstElement::compareWithElement(const ConstElement& other, - bool considerFieldName, - StringData::ComparatorInterface* comparator) const { +inline int ConstElement::compareWithElement( + const ConstElement& other, + bool considerFieldName, + const StringData::ComparatorInterface* comparator) const { return _basis.compareWithElement(other, considerFieldName, comparator); } -inline int ConstElement::compareWithBSONElement(const BSONElement& other, - bool considerFieldName, - StringData::ComparatorInterface* comparator) const { +inline int ConstElement::compareWithBSONElement( + const BSONElement& other, + bool considerFieldName, + const StringData::ComparatorInterface* comparator) const { return _basis.compareWithBSONElement(other, considerFieldName, comparator); } -inline int ConstElement::compareWithBSONObj(const BSONObj& other, - bool considerFieldName, - StringData::ComparatorInterface* comparator) const { +inline int ConstElement::compareWithBSONObj( + const BSONObj& other, + bool considerFieldName, + const StringData::ComparatorInterface* comparator) const { return _basis.compareWithBSONObj(other, considerFieldName, comparator); } diff --git a/src/mongo/bson/mutable/const_element.h b/src/mongo/bson/mutable/const_element.h index 1997de64a32..d9798309204 100644 --- a/src/mongo/bson/mutable/const_element.h +++ b/src/mongo/bson/mutable/const_element.h @@ -88,17 +88,20 @@ public: inline bool isValueMaxKey() const; inline SafeNum getValueSafeNum() const; - inline int compareWithElement(const ConstElement& other, - bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; - - inline int compareWithBSONElement(const BSONElement& other, - bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; - - inline int compareWithBSONObj(const BSONObj& other, - bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + inline int compareWithElement( + const ConstElement& other, + bool considerFieldName = true, + const StringData::ComparatorInterface* comparator = nullptr) const; + + inline int compareWithBSONElement( + const BSONElement& other, + bool considerFieldName = true, + const StringData::ComparatorInterface* comparator = nullptr) const; + + inline int compareWithBSONObj( + const BSONObj& other, + bool considerFieldName = true, + const StringData::ComparatorInterface* comparator = nullptr) const; inline void writeTo(BSONObjBuilder* builder) const; inline void writeArrayTo(BSONArrayBuilder* builder) const; diff --git a/src/mongo/bson/mutable/document-inl.h b/src/mongo/bson/mutable/document-inl.h index ec06777e8a5..6942283ceb1 100644 --- a/src/mongo/bson/mutable/document-inl.h +++ b/src/mongo/bson/mutable/document-inl.h @@ -32,7 +32,7 @@ namespace mutablebson { inline int Document::compareWith(const Document& other, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { // We cheat and use Element::compareWithElement since we know that 'other' is a // Document and has a 'hidden' fieldname that is always indentical across all Document // instances. @@ -41,7 +41,7 @@ inline int Document::compareWith(const Document& other, inline int Document::compareWithBSONObj(const BSONObj& other, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { return root().compareWithBSONObj(other, considerFieldName, comparator); } diff --git a/src/mongo/bson/mutable/document.cpp b/src/mongo/bson/mutable/document.cpp index 6bb159b0e7c..2afe8c8de96 100644 --- a/src/mongo/bson/mutable/document.cpp +++ b/src/mongo/bson/mutable/document.cpp @@ -1487,7 +1487,7 @@ SafeNum Element::getValueSafeNum() const { int Element::compareWithElement(const ConstElement& other, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { verify(ok()); verify(other.ok()); @@ -1570,7 +1570,7 @@ int Element::compareWithElement(const ConstElement& other, int Element::compareWithBSONElement(const BSONElement& other, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { verify(ok()); const Document::Impl& impl = getDocument().getImpl(); @@ -1611,7 +1611,7 @@ int Element::compareWithBSONElement(const BSONElement& other, int Element::compareWithBSONObj(const BSONObj& other, bool considerFieldName, - StringData::ComparatorInterface* comparator) const { + const StringData::ComparatorInterface* comparator) const { verify(ok()); const Document::Impl& impl = getDocument().getImpl(); diff --git a/src/mongo/bson/mutable/document.h b/src/mongo/bson/mutable/document.h index cca50443311..60cbaab3cde 100644 --- a/src/mongo/bson/mutable/document.h +++ b/src/mongo/bson/mutable/document.h @@ -279,12 +279,13 @@ public: /** Compare this Document to 'other' with the semantics of BSONObj::woCompare. */ inline int compareWith(const Document& other, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; /** Compare this Document to 'other' with the semantics of BSONObj::woCompare. */ - inline int compareWithBSONObj(const BSONObj& other, - bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + inline int compareWithBSONObj( + const BSONObj& other, + bool considerFieldName = true, + const StringData::ComparatorInterface* comparator = nullptr) const; // diff --git a/src/mongo/bson/mutable/element.h b/src/mongo/bson/mutable/element.h index ee0d6de3d45..690894b285d 100644 --- a/src/mongo/bson/mutable/element.h +++ b/src/mongo/bson/mutable/element.h @@ -352,7 +352,7 @@ public: */ int compareWithElement(const ConstElement& other, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; /** Compare this Element with BSONElement 'other'. You should not call this on the root * Element of the Document because the root Element does not have a field name. Use @@ -364,7 +364,7 @@ public: */ int compareWithBSONElement(const BSONElement& other, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; /** Compare this Element, which must be an Object or an Array, with 'other'. * @@ -374,7 +374,7 @@ public: */ int compareWithBSONObj(const BSONObj& other, bool considerFieldName = true, - StringData::ComparatorInterface* comparator = nullptr) const; + const StringData::ComparatorInterface* comparator = nullptr) const; // diff --git a/src/mongo/db/catalog/collection.cpp b/src/mongo/db/catalog/collection.cpp index c680ce41b79..7c359b728cb 100644 --- a/src/mongo/db/catalog/collection.cpp +++ b/src/mongo/db/catalog/collection.cpp @@ -974,7 +974,7 @@ Status Collection::setValidationAction(OperationContext* txn, StringData newActi return Status::OK(); } -CollatorInterface* Collection::getDefaultCollator() const { +const CollatorInterface* Collection::getDefaultCollator() const { return _collator.get(); } diff --git a/src/mongo/db/catalog/collection.h b/src/mongo/db/catalog/collection.h index b718413e161..f5e4e0fe700 100644 --- a/src/mongo/db/catalog/collection.h +++ b/src/mongo/db/catalog/collection.h @@ -436,7 +436,7 @@ public: * Get a pointer to the collection's default collator. The pointer must not be used after this * Collection is destroyed. */ - CollatorInterface* getDefaultCollator() const; + const CollatorInterface* getDefaultCollator() const; private: /** diff --git a/src/mongo/db/catalog/index_catalog_entry.h b/src/mongo/db/catalog/index_catalog_entry.h index 909b93520ba..5d9aad728ac 100644 --- a/src/mongo/db/catalog/index_catalog_entry.h +++ b/src/mongo/db/catalog/index_catalog_entry.h @@ -87,7 +87,7 @@ public: return _filterExpression.get(); } - CollatorInterface* getCollator() { + const CollatorInterface* getCollator() const { return _collator.get(); } diff --git a/src/mongo/db/clientlistplugin.cpp b/src/mongo/db/clientlistplugin.cpp index ef241ed7185..2aef3af715c 100644 --- a/src/mongo/db/clientlistplugin.cpp +++ b/src/mongo/db/clientlistplugin.cpp @@ -168,7 +168,7 @@ public: BSONObjBuilder& result) { unique_ptr<MatchExpression> filter; if (cmdObj["filter"].isABSONObj()) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( cmdObj["filter"].Obj(), ExtensionsCallbackDisallowExtensions(), collator); if (!statusWithMatcher.isOK()) { diff --git a/src/mongo/db/commands/current_op.cpp b/src/mongo/db/commands/current_op.cpp index 2f5798b410f..0e25e16f443 100644 --- a/src/mongo/db/commands/current_op.cpp +++ b/src/mongo/db/commands/current_op.cpp @@ -105,7 +105,7 @@ public: // collection, we pass in a fake collection name (and this is okay, because $where parsing // only relies on the database part of the namespace). const NamespaceString fakeNS(db, "$cmd"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; const Matcher matcher(filter, ExtensionsCallbackReal(txn, &fakeNS), collator); BSONArrayBuilder inprogBuilder(result.subarrayStart("inprog")); diff --git a/src/mongo/db/commands/list_collections.cpp b/src/mongo/db/commands/list_collections.cpp index a20179c2bae..ae5dcbe5fea 100644 --- a/src/mongo/db/commands/list_collections.cpp +++ b/src/mongo/db/commands/list_collections.cpp @@ -192,7 +192,7 @@ public: result, Status(ErrorCodes::BadValue, "\"filter\" must be an object")); } // The collator is null because collection objects are compared using binary comparison. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( filterElt.Obj(), ExtensionsCallbackDisallowExtensions(), collator); if (!statusWithMatcher.isOK()) { diff --git a/src/mongo/db/exec/ensure_sorted.cpp b/src/mongo/db/exec/ensure_sorted.cpp index 1fef4b191ff..680254926a6 100644 --- a/src/mongo/db/exec/ensure_sorted.cpp +++ b/src/mongo/db/exec/ensure_sorted.cpp @@ -45,7 +45,7 @@ const char* EnsureSortedStage::kStageType = "ENSURE_SORTED"; EnsureSortedStage::EnsureSortedStage(OperationContext* opCtx, BSONObj pattern, - CollatorInterface* collator, + const CollatorInterface* collator, WorkingSet* ws, PlanStage* child) : PlanStage(kStageType, opCtx), _ws(ws), _collator(collator) { diff --git a/src/mongo/db/exec/ensure_sorted.h b/src/mongo/db/exec/ensure_sorted.h index a7f9bd45107..45a2ab95a60 100644 --- a/src/mongo/db/exec/ensure_sorted.h +++ b/src/mongo/db/exec/ensure_sorted.h @@ -45,7 +45,7 @@ class EnsureSortedStage final : public PlanStage { public: EnsureSortedStage(OperationContext* opCtx, BSONObj pattern, - CollatorInterface* collator, + const CollatorInterface* collator, WorkingSet* ws, PlanStage* child); @@ -76,7 +76,7 @@ private: // Null if this ensure sorted stage orders strings according to simple binary compare. If // non-null, represents the collator used to compare strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; // The sort key of the previous result. BSONObj _prevSortKey; diff --git a/src/mongo/db/exec/geo_near.cpp b/src/mongo/db/exec/geo_near.cpp index 65bd1defd98..83ac0a6d5bd 100644 --- a/src/mongo/db/exec/geo_near.cpp +++ b/src/mongo/db/exec/geo_near.cpp @@ -744,7 +744,7 @@ GeoNear2DSphereStage::GeoNear2DSphereStage(const GeoNearParams& nearParams, _specificStats.indexName = s2Index->indexName(); _specificStats.indexVersion = s2Index->version(); // TODO SERVER-23968: change nullptr to the appropriate collator. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ExpressionParams::initialize2dsphereParams(s2Index->infoObj(), collator, &_indexParams); } diff --git a/src/mongo/db/exec/merge_sort.h b/src/mongo/db/exec/merge_sort.h index 208af0e044f..e0ff8d40fee 100644 --- a/src/mongo/db/exec/merge_sort.h +++ b/src/mongo/db/exec/merge_sort.h @@ -90,7 +90,7 @@ private: // Null if this merge sort stage orders strings according to simple binary compare. If non-null, // represents the collator used to compare strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; // Are we deduplicating on RecordId? bool _dedup; @@ -127,7 +127,7 @@ private: // The comparison function used in our priority queue. class StageWithValueComparison { public: - StageWithValueComparison(WorkingSet* ws, BSONObj pattern, CollatorInterface* collator) + StageWithValueComparison(WorkingSet* ws, BSONObj pattern, const CollatorInterface* collator) : _ws(ws), _pattern(pattern), _collator(collator) {} // Is lhs less than rhs? Note that priority_queue is a max heap by default so we invert @@ -137,7 +137,7 @@ private: private: WorkingSet* _ws; BSONObj _pattern; - CollatorInterface* _collator; + const CollatorInterface* _collator; }; // The min heap of the results we're returning. @@ -160,7 +160,7 @@ public: // Null if this merge sort stage orders strings according to simple binary compare. If non-null, // represents the collator used to compare strings. - CollatorInterface* collator; + const CollatorInterface* collator; // Do we deduplicate on RecordId? bool dedup; diff --git a/src/mongo/db/exec/projection.h b/src/mongo/db/exec/projection.h index d9150c22df2..a7422eb180f 100644 --- a/src/mongo/db/exec/projection.h +++ b/src/mongo/db/exec/projection.h @@ -73,7 +73,7 @@ struct ProjectionStageParams { // The collator this operation should use to compare strings. If null, the collation is a simple // binary compare. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; }; /** diff --git a/src/mongo/db/exec/projection_exec.cpp b/src/mongo/db/exec/projection_exec.cpp index d672e9e1027..383edf740f7 100644 --- a/src/mongo/db/exec/projection_exec.cpp +++ b/src/mongo/db/exec/projection_exec.cpp @@ -75,7 +75,7 @@ ProjectionExec::ProjectionExec() ProjectionExec::ProjectionExec(const BSONObj& spec, const MatchExpression* queryExpression, - CollatorInterface* collator, + const CollatorInterface* collator, const ExtensionsCallback& extensionsCallback) : _include(true), _special(false), diff --git a/src/mongo/db/exec/projection_exec.h b/src/mongo/db/exec/projection_exec.h index 0cf9b37a940..b06340e5f12 100644 --- a/src/mongo/db/exec/projection_exec.h +++ b/src/mongo/db/exec/projection_exec.h @@ -68,7 +68,7 @@ public: ProjectionExec(const BSONObj& spec, const MatchExpression* queryExpression, - CollatorInterface* collator, + const CollatorInterface* collator, const ExtensionsCallback& extensionsCallback); ~ProjectionExec(); @@ -183,7 +183,7 @@ private: // The collator this projection should use to compare strings. Needed for projection operators // that perform matching (e.g. elemMatch projection). If null, the collation is a simple binary // compare. - CollatorInterface* _collator = nullptr; + const CollatorInterface* _collator = nullptr; }; } // namespace mongo diff --git a/src/mongo/db/exec/projection_exec_test.cpp b/src/mongo/db/exec/projection_exec_test.cpp index d0df0e2ee5a..4c9689f544e 100644 --- a/src/mongo/db/exec/projection_exec_test.cpp +++ b/src/mongo/db/exec/projection_exec_test.cpp @@ -50,7 +50,7 @@ using std::unique_ptr; * Utility function to create MatchExpression */ unique_ptr<MatchExpression> parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(status.isOK()); @@ -78,7 +78,7 @@ void testTransform(const char* specStr, const char* queryStr, const char* objStr, WorkingSetComputedData* data, - CollatorInterface* collator, + const CollatorInterface* collator, bool expectedStatusOK, const char* expectedObjStr) { // Create projection exec object. diff --git a/src/mongo/db/exec/sort.cpp b/src/mongo/db/exec/sort.cpp index 279b8ea4391..ee7d4ab4d15 100644 --- a/src/mongo/db/exec/sort.cpp +++ b/src/mongo/db/exec/sort.cpp @@ -56,7 +56,7 @@ using stdx::make_unique; // static const char* SortStage::kStageType = "SORT"; -SortStage::WorkingSetComparator::WorkingSetComparator(BSONObj p, CollatorInterface* c) +SortStage::WorkingSetComparator::WorkingSetComparator(BSONObj p, const CollatorInterface* c) : pattern(p), collator(c) {} bool SortStage::WorkingSetComparator::operator()(const SortableDataItem& lhs, diff --git a/src/mongo/db/exec/sort.h b/src/mongo/db/exec/sort.h index 096697b7fdb..650eb9174d1 100644 --- a/src/mongo/db/exec/sort.h +++ b/src/mongo/db/exec/sort.h @@ -57,7 +57,7 @@ public: // Null if this sort stage orders strings according to simple binary compare. If non-null, // represents the collator used to compare strings. - CollatorInterface* collator; + const CollatorInterface* collator; // Equal to 0 for no limit. size_t limit; @@ -110,7 +110,7 @@ private: // Null if this sort stage orders strings according to simple binary compare. If non-null, // represents the collator used to compare strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; // Equal to 0 for no limit. size_t _limit; @@ -139,13 +139,13 @@ private: // Keys are compared using BSONObj::woCompare() with RecordId as a tie-breaker. 'collator' is // passed to woCompare() to perform string comparisons. struct WorkingSetComparator { - explicit WorkingSetComparator(BSONObj p, CollatorInterface* collator); + explicit WorkingSetComparator(BSONObj p, const CollatorInterface* collator); bool operator()(const SortableDataItem& lhs, const SortableDataItem& rhs) const; BSONObj pattern; - CollatorInterface* collator; + const CollatorInterface* collator; }; /** diff --git a/src/mongo/db/exec/stagedebug_cmd.cpp b/src/mongo/db/exec/stagedebug_cmd.cpp index d43a892bd8c..f5316a7a94c 100644 --- a/src/mongo/db/exec/stagedebug_cmd.cpp +++ b/src/mongo/db/exec/stagedebug_cmd.cpp @@ -249,7 +249,7 @@ public: } BSONObj argObj = e.Obj(); if (filterTag == e.fieldName()) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( argObj, ExtensionsCallbackReal(txn, &collection->ns()), collator); if (!statusWithMatcher.isOK()) { diff --git a/src/mongo/db/index/btree_key_generator.cpp b/src/mongo/db/index/btree_key_generator.cpp index 14c48085b03..ad99eaa8a77 100644 --- a/src/mongo/db/index/btree_key_generator.cpp +++ b/src/mongo/db/index/btree_key_generator.cpp @@ -219,7 +219,7 @@ void BtreeKeyGeneratorV0::getKeysImpl(std::vector<const char*> fieldNames, BtreeKeyGeneratorV1::BtreeKeyGeneratorV1(std::vector<const char*> fieldNames, std::vector<BSONElement> fixed, bool isSparse, - CollatorInterface* collator) + const CollatorInterface* collator) : BtreeKeyGenerator(fieldNames, fixed, isSparse), _emptyPositionalInfo(fieldNames.size()), _collator(collator) { diff --git a/src/mongo/db/index/btree_key_generator.h b/src/mongo/db/index/btree_key_generator.h index 7ddbe8a0732..7d33001a594 100644 --- a/src/mongo/db/index/btree_key_generator.h +++ b/src/mongo/db/index/btree_key_generator.h @@ -100,7 +100,7 @@ public: BtreeKeyGeneratorV1(std::vector<const char*> fieldNames, std::vector<BSONElement> fixed, bool isSparse, - CollatorInterface* collator); + const CollatorInterface* collator); virtual ~BtreeKeyGeneratorV1() {} @@ -250,7 +250,7 @@ private: // Null if this key generator orders strings according to the simple binary compare. If // non-null, represents the collator used to generate index keys for indexed strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; }; } // namespace mongo diff --git a/src/mongo/db/index/btree_key_generator_test.cpp b/src/mongo/db/index/btree_key_generator_test.cpp index b258487d114..ce0b53dd6d8 100644 --- a/src/mongo/db/index/btree_key_generator_test.cpp +++ b/src/mongo/db/index/btree_key_generator_test.cpp @@ -83,7 +83,7 @@ bool testKeygen(const BSONObj& kp, const BSONObjSet& expectedKeys, const MultikeyPaths& expectedMultikeyPaths, bool sparse = false, - CollatorInterface* collator = nullptr) { + const CollatorInterface* collator = nullptr) { invariant(expectedMultikeyPaths.size() == static_cast<size_t>(kp.nFields())); // diff --git a/src/mongo/db/index/expression_keys_private.cpp b/src/mongo/db/index/expression_keys_private.cpp index e8a9a3b0a2e..99f2b889c01 100644 --- a/src/mongo/db/index/expression_keys_private.cpp +++ b/src/mongo/db/index/expression_keys_private.cpp @@ -149,7 +149,7 @@ void getS2GeoKeys(const BSONObj& document, * Expands array and appends items to 'out'. * Used by getOneLiteralKey. */ -void getS2LiteralKeysArray(const BSONObj& obj, CollatorInterface* collator, BSONObjSet* out) { +void getS2LiteralKeysArray(const BSONObj& obj, const CollatorInterface* collator, BSONObjSet* out) { BSONObjIterator objIt(obj); if (!objIt.more()) { // Empty arrays are indexed as undefined. @@ -171,7 +171,9 @@ void getS2LiteralKeysArray(const BSONObj& obj, CollatorInterface* collator, BSON * Otherwise, adds 'elt' as a single element. * Used by getLiteralKeys. */ -void getS2OneLiteralKey(const BSONElement& elt, CollatorInterface* collator, BSONObjSet* out) { +void getS2OneLiteralKey(const BSONElement& elt, + const CollatorInterface* collator, + BSONObjSet* out) { if (Array == elt.type()) { getS2LiteralKeysArray(elt.Obj(), collator, out); } else { @@ -187,7 +189,7 @@ void getS2OneLiteralKey(const BSONElement& elt, CollatorInterface* collator, BSO * Used by getS2Keys. */ void getS2LiteralKeys(const BSONElementSet& elements, - CollatorInterface* collator, + const CollatorInterface* collator, BSONObjSet* out) { if (0 == elements.size()) { // Missing fields are indexed as null. @@ -324,7 +326,7 @@ void ExpressionKeysPrivate::getHashKeys(const BSONObj& obj, HashSeed seed, int hashVersion, bool isSparse, - CollatorInterface* collator, + const CollatorInterface* collator, BSONObjSet* keys) { const char* cstr = hashedField.c_str(); BSONElement fieldVal = obj.getFieldDottedOrArray(cstr); diff --git a/src/mongo/db/index/expression_keys_private.h b/src/mongo/db/index/expression_keys_private.h index 4267e4d66db..b84acbcae11 100644 --- a/src/mongo/db/index/expression_keys_private.h +++ b/src/mongo/db/index/expression_keys_private.h @@ -80,7 +80,7 @@ public: HashSeed seed, int hashVersion, bool isSparse, - CollatorInterface* collator, + const CollatorInterface* collator, BSONObjSet* keys); /** diff --git a/src/mongo/db/index/expression_params.cpp b/src/mongo/db/index/expression_params.cpp index a3f201ceb12..e0ab49c303e 100644 --- a/src/mongo/db/index/expression_params.cpp +++ b/src/mongo/db/index/expression_params.cpp @@ -124,7 +124,7 @@ void ExpressionParams::parseHaystackParams(const BSONObj& infoObj, } void ExpressionParams::initialize2dsphereParams(const BSONObj& infoObj, - CollatorInterface* collator, + const CollatorInterface* collator, S2IndexingParams* out) { // Set up basic params. out->collator = collator; diff --git a/src/mongo/db/index/expression_params.h b/src/mongo/db/index/expression_params.h index 9eb28132ceb..21cf7c298c0 100644 --- a/src/mongo/db/index/expression_params.h +++ b/src/mongo/db/index/expression_params.h @@ -55,7 +55,7 @@ void parseHaystackParams(const BSONObj& infoObj, double* bucketSizeOut); void initialize2dsphereParams(const BSONObj& infoObj, - CollatorInterface* collator, + const CollatorInterface* collator, S2IndexingParams* out); } // namespace ExpressionParams diff --git a/src/mongo/db/index/hash_access_method.h b/src/mongo/db/index/hash_access_method.h index 610bf6db015..5af9d0e4153 100644 --- a/src/mongo/db/index/hash_access_method.h +++ b/src/mongo/db/index/hash_access_method.h @@ -61,7 +61,7 @@ private: // Null if this index orders strings according to the simple binary compare. If non-null, // represents the collator used to generate index keys for indexed strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; }; } // namespace mongo diff --git a/src/mongo/db/index/s2_access_method.h b/src/mongo/db/index/s2_access_method.h index a6b10d625f5..db615977461 100644 --- a/src/mongo/db/index/s2_access_method.h +++ b/src/mongo/db/index/s2_access_method.h @@ -55,7 +55,7 @@ private: // Null if this index orders strings according to the simple binary compare. If non-null, // represents the collator used to generate index keys for indexed strings. - CollatorInterface* _collator; + const CollatorInterface* _collator; }; } // namespace mongo diff --git a/src/mongo/db/index/s2_common.h b/src/mongo/db/index/s2_common.h index 5afbbec5fa0..83153395006 100644 --- a/src/mongo/db/index/s2_common.h +++ b/src/mongo/db/index/s2_common.h @@ -74,7 +74,7 @@ struct S2IndexingParams { double radius; // Null if this index orders strings according to the simple binary compare. If non-null, // represents the collator used to generate index keys for indexed strings. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; std::string toString() const; diff --git a/src/mongo/db/index/s2_key_generator_test.cpp b/src/mongo/db/index/s2_key_generator_test.cpp index e13c14c133d..a26a43337e8 100644 --- a/src/mongo/db/index/s2_key_generator_test.cpp +++ b/src/mongo/db/index/s2_key_generator_test.cpp @@ -71,7 +71,7 @@ long long getCellID(int x, int y) { BSONObj keyPattern = fromjson("{a: '2dsphere'}"); BSONObj infoObj = fromjson("{key: {a: '2dsphere'}, '2dsphereIndexVersion': 3}"); S2IndexingParams params; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ExpressionParams::initialize2dsphereParams(infoObj, collator, ¶ms); BSONObjSet keys; ExpressionKeysPrivate::getS2Keys(obj, keyPattern, params, &keys); @@ -240,7 +240,7 @@ TEST(S2KeyGeneratorTest, NoCollation) { BSONObj keyPattern = fromjson("{a: '2dsphere', b: 1}"); BSONObj infoObj = fromjson("{key: {a: '2dsphere', b: 1}, '2dsphereIndexVersion': 3}"); S2IndexingParams params; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ExpressionParams::initialize2dsphereParams(infoObj, collator, ¶ms); BSONObjSet actualKeys; ExpressionKeysPrivate::getS2Keys(obj, keyPattern, params, &actualKeys); diff --git a/src/mongo/db/matcher/expression_algo_test.cpp b/src/mongo/db/matcher/expression_algo_test.cpp index 807b35aee62..946120d353d 100644 --- a/src/mongo/db/matcher/expression_algo_test.cpp +++ b/src/mongo/db/matcher/expression_algo_test.cpp @@ -52,7 +52,7 @@ using std::unique_ptr; class ParsedMatchExpression { public: ParsedMatchExpression(const std::string& str) : _obj(fromjson(str)) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(_obj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(result.getStatus()); @@ -72,7 +72,7 @@ TEST(ExpressionAlgoIsSubsetOf, NullAndOmittedField) { // Verify that ComparisonMatchExpression::init() prohibits creating a match expression with // an Undefined type. BSONObj undefined = fromjson("{a: undefined}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_EQUALS(ErrorCodes::BadValue, MatchExpressionParser::parse( undefined, ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -655,7 +655,7 @@ TEST(ExpressionAlgoIsSubsetOf, Compare_Exists_NE) { TEST(IsIndependent, AndIsIndependentOnlyIfChildrenAre) { BSONObj matchPredicate = fromjson("{$and: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -667,7 +667,7 @@ TEST(IsIndependent, AndIsIndependentOnlyIfChildrenAre) { TEST(IsIndependent, ElemMatchIsNotIndependent) { BSONObj matchPredicate = fromjson("{x: {$elemMatch: {y: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -680,7 +680,7 @@ TEST(IsIndependent, ElemMatchIsNotIndependent) { TEST(IsIndependent, NorIsIndependentOnlyIfChildrenAre) { BSONObj matchPredicate = fromjson("{$nor: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -692,7 +692,7 @@ TEST(IsIndependent, NorIsIndependentOnlyIfChildrenAre) { TEST(IsIndependent, NotIsIndependentOnlyIfChildrenAre) { BSONObj matchPredicate = fromjson("{a: {$not: {$eq: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -704,7 +704,7 @@ TEST(IsIndependent, NotIsIndependentOnlyIfChildrenAre) { TEST(IsIndependent, OrIsIndependentOnlyIfChildrenAre) { BSONObj matchPredicate = fromjson("{$or: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -716,7 +716,7 @@ TEST(IsIndependent, OrIsIndependentOnlyIfChildrenAre) { TEST(IsIndependent, AndWithDottedFieldPathsIsNotIndependent) { BSONObj matchPredicate = fromjson("{$and: [{'a': 1}, {'a.b': 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -728,7 +728,7 @@ TEST(IsIndependent, AndWithDottedFieldPathsIsNotIndependent) { TEST(IsIndependent, BallIsIndependentOfBalloon) { BSONObj matchPredicate = fromjson("{'a.ball': 4}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -741,7 +741,7 @@ TEST(IsIndependent, BallIsIndependentOfBalloon) { TEST(SplitMatchExpression, AndWithSplittableChildrenIsSplittable) { BSONObj matchPredicate = fromjson("{$and: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -763,7 +763,7 @@ TEST(SplitMatchExpression, AndWithSplittableChildrenIsSplittable) { TEST(SplitMatchExpression, NorWithIndependentChildrenIsSplittable) { BSONObj matchPredicate = fromjson("{$nor: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -785,7 +785,7 @@ TEST(SplitMatchExpression, NorWithIndependentChildrenIsSplittable) { TEST(SplitMatchExpression, NotWithIndependentChildIsSplittable) { BSONObj matchPredicate = fromjson("{x: {$not: {$gt: 4}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -803,7 +803,7 @@ TEST(SplitMatchExpression, NotWithIndependentChildIsSplittable) { TEST(SplitMatchExpression, OrWithOnlyIndependentChildrenIsNotSplittable) { BSONObj matchPredicate = fromjson("{$or: [{a: 1}, {b: 1}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -824,7 +824,7 @@ TEST(SplitMatchExpression, ComplexMatchExpressionSplitsCorrectly) { "{$and: [{x: {$not: {$size: 2}}}," "{$or: [{'a.b' : 3}, {'a.b.c': 4}]}," "{$nor: [{x: {$gt: 4}}, {$and: [{x: {$not: {$eq: 1}}}, {y: 3}]}]}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(status.getStatus()); @@ -850,7 +850,7 @@ TEST(SplitMatchExpression, ComplexMatchExpressionSplitsCorrectly) { TEST(MapOverMatchExpression, DoesMapOverLogicalNodes) { BSONObj matchPredicate = fromjson("{a: {$not: {$eq: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; auto swMatchExpression = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(swMatchExpression.getStatus()); @@ -868,7 +868,7 @@ TEST(MapOverMatchExpression, DoesMapOverLogicalNodes) { TEST(MapOverMatchExpression, DoesMapOverLeafNodes) { BSONObj matchPredicate = fromjson("{a: {$not: {$eq: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; auto swMatchExpression = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(swMatchExpression.getStatus()); @@ -886,7 +886,7 @@ TEST(MapOverMatchExpression, DoesMapOverLeafNodes) { TEST(MapOverMatchExpression, DoesPassPath) { BSONObj matchPredicate = fromjson("{a: {$elemMatch: {b: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; auto swMatchExpression = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(swMatchExpression.getStatus()); @@ -905,7 +905,7 @@ TEST(MapOverMatchExpression, DoesPassPath) { TEST(MapOverMatchExpression, DoesMapOverNodesWithMultipleChildren) { BSONObj matchPredicate = fromjson("{$and: [{a: {$gt: 1}}, {b: {$lte: 2}}]}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; auto swMatchExpression = MatchExpressionParser::parse(matchPredicate, ExtensionsCallbackNoop(), collator); ASSERT_OK(swMatchExpression.getStatus()); diff --git a/src/mongo/db/matcher/expression_array_test.cpp b/src/mongo/db/matcher/expression_array_test.cpp index e3ef241ef87..8fbc971221b 100644 --- a/src/mongo/db/matcher/expression_array_test.cpp +++ b/src/mongo/db/matcher/expression_array_test.cpp @@ -44,7 +44,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesElementSingle) { BSONObj baseOperand = BSON("b" << 5); BSONObj match = BSON("a" << BSON_ARRAY(BSON("b" << 5.0))); BSONObj notMatch = BSON("a" << BSON_ARRAY(BSON("b" << 6))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("b", baseOperand["b"]).isOK()); ElemMatchObjectMatchExpression op; @@ -57,7 +57,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesElementArray) { BSONObj baseOperand = BSON("1" << 5); BSONObj match = BSON("a" << BSON_ARRAY(BSON_ARRAY('s' << 5.0))); BSONObj notMatch = BSON("a" << BSON_ARRAY(BSON_ARRAY(5 << 6))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("1", baseOperand["1"]).isOK()); ElemMatchObjectMatchExpression op; @@ -74,7 +74,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesElementMultiple) { BSONObj notMatch2 = BSON("a" << BSON_ARRAY(BSON("b" << 6 << "c" << 7))); BSONObj notMatch3 = BSON("a" << BSON_ARRAY(BSON("b" << BSON_ARRAY(5 << 6)))); BSONObj match = BSON("a" << BSON_ARRAY(BSON("b" << BSON_ARRAY(5 << 6) << "c" << 7))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq1(new EqualityMatchExpression(collator)); ASSERT(eq1->init("b", baseOperand1["b"]).isOK()); unique_ptr<ComparisonMatchExpression> eq2(new EqualityMatchExpression(collator)); @@ -97,7 +97,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesElementMultiple) { TEST(ElemMatchObjectMatchExpression, MatchesNonArray) { BSONObj baseOperand = BSON("b" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("b", baseOperand["b"]).isOK()); ElemMatchObjectMatchExpression op; @@ -111,7 +111,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesNonArray) { TEST(ElemMatchObjectMatchExpression, MatchesArrayObject) { BSONObj baseOperand = BSON("b" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("b", baseOperand["b"]).isOK()); ElemMatchObjectMatchExpression op; @@ -124,7 +124,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesArrayObject) { TEST(ElemMatchObjectMatchExpression, MatchesMultipleNamedValues) { BSONObj baseOperand = BSON("c" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("c", baseOperand["c"]).isOK()); ElemMatchObjectMatchExpression op; @@ -137,7 +137,7 @@ TEST(ElemMatchObjectMatchExpression, MatchesMultipleNamedValues) { TEST(ElemMatchObjectMatchExpression, ElemMatchKey) { BSONObj baseOperand = BSON("c" << 6); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("c", baseOperand["c"]).isOK()); ElemMatchObjectMatchExpression op; @@ -178,7 +178,7 @@ TEST(ElemMatchValueMatchExpression, MatchesElementSingle) { BSONObj baseOperand = BSON("$gt" << 5); BSONObj match = BSON("a" << BSON_ARRAY(6)); BSONObj notMatch = BSON("a" << BSON_ARRAY(4)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand["$gt"]).isOK()); ElemMatchValueMatchExpression op; @@ -193,7 +193,7 @@ TEST(ElemMatchValueMatchExpression, MatchesElementMultiple) { BSONObj notMatch1 = BSON("a" << BSON_ARRAY(0 << 1)); BSONObj notMatch2 = BSON("a" << BSON_ARRAY(10 << 11)); BSONObj match = BSON("a" << BSON_ARRAY(0 << 5 << 11)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand1["$gt"]).isOK()); unique_ptr<ComparisonMatchExpression> lt(new LTMatchExpression(collator)); @@ -211,7 +211,7 @@ TEST(ElemMatchValueMatchExpression, MatchesElementMultiple) { TEST(ElemMatchValueMatchExpression, MatchesNonArray) { BSONObj baseOperand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand["$gt"]).isOK()); ElemMatchObjectMatchExpression op; @@ -224,7 +224,7 @@ TEST(ElemMatchValueMatchExpression, MatchesNonArray) { TEST(ElemMatchValueMatchExpression, MatchesArrayScalar) { BSONObj baseOperand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand["$gt"]).isOK()); ElemMatchValueMatchExpression op; @@ -236,7 +236,7 @@ TEST(ElemMatchValueMatchExpression, MatchesArrayScalar) { TEST(ElemMatchValueMatchExpression, MatchesMultipleNamedValues) { BSONObj baseOperand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand["$gt"]).isOK()); ElemMatchValueMatchExpression op; @@ -249,7 +249,7 @@ TEST(ElemMatchValueMatchExpression, MatchesMultipleNamedValues) { TEST(ElemMatchValueMatchExpression, ElemMatchKey) { BSONObj baseOperand = BSON("$gt" << 6); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt(new GTMatchExpression(collator)); ASSERT(gt->init("", baseOperand["$gt"]).isOK()); ElemMatchValueMatchExpression op; @@ -287,7 +287,7 @@ TEST( ElemMatchValueMatchExpression, MatchesIndexKey ) { TEST(AndOfElemMatch, MatchesElement) { BSONObj baseOperanda1 = BSON("a" << 1); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eqa1(new EqualityMatchExpression(collator)); ASSERT(eqa1->init("a", baseOperanda1["a"]).isOK()); @@ -345,7 +345,7 @@ TEST(AndOfElemMatch, MatchesElement) { TEST(AndOfElemMatch, Matches) { BSONObj baseOperandgt1 = BSON("$gt" << 1); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> gt1(new GTMatchExpression(collator)); ASSERT(gt1->init("", baseOperandgt1["$gt"]).isOK()); diff --git a/src/mongo/db/matcher/expression_leaf.cpp b/src/mongo/db/matcher/expression_leaf.cpp index 56e83a8e996..3e7e2a4b909 100644 --- a/src/mongo/db/matcher/expression_leaf.cpp +++ b/src/mongo/db/matcher/expression_leaf.cpp @@ -532,7 +532,7 @@ bool TypeMatchExpression::equivalent(const MatchExpression* other) const { // -------- -ArrayFilterEntries::ArrayFilterEntries(CollatorInterface* collator) +ArrayFilterEntries::ArrayFilterEntries(const CollatorInterface* collator) : _hasNull(false), _hasEmptyArray(false), _equalities(collator), _collator(collator) {} ArrayFilterEntries::~ArrayFilterEntries() { diff --git a/src/mongo/db/matcher/expression_leaf.h b/src/mongo/db/matcher/expression_leaf.h index d6ba6d83d7c..b39e709d3e6 100644 --- a/src/mongo/db/matcher/expression_leaf.h +++ b/src/mongo/db/matcher/expression_leaf.h @@ -87,7 +87,7 @@ public: /** * 'collator' must outlive the ComparisonMatchExpression and any clones made of it. */ - ComparisonMatchExpression(MatchType type, CollatorInterface* collator) + ComparisonMatchExpression(MatchType type, const CollatorInterface* collator) : LeafMatchExpression(type), _collator(collator) {} Status init(StringData path, const BSONElement& rhs); @@ -110,13 +110,13 @@ public: return _rhs; } - CollatorInterface* getCollator() const { + const CollatorInterface* getCollator() const { return _collator; } protected: BSONElement _rhs; - CollatorInterface* _collator; + const CollatorInterface* _collator; }; // @@ -125,7 +125,7 @@ protected: class EqualityMatchExpression : public ComparisonMatchExpression { public: - EqualityMatchExpression(CollatorInterface* collator) + EqualityMatchExpression(const CollatorInterface* collator) : ComparisonMatchExpression(EQ, collator) {} virtual std::unique_ptr<MatchExpression> shallowClone() const { std::unique_ptr<ComparisonMatchExpression> e = @@ -140,7 +140,8 @@ public: class LTEMatchExpression : public ComparisonMatchExpression { public: - LTEMatchExpression(CollatorInterface* collator) : ComparisonMatchExpression(LTE, collator) {} + LTEMatchExpression(const CollatorInterface* collator) + : ComparisonMatchExpression(LTE, collator) {} virtual std::unique_ptr<MatchExpression> shallowClone() const { std::unique_ptr<ComparisonMatchExpression> e = stdx::make_unique<LTEMatchExpression>(_collator); @@ -154,7 +155,8 @@ public: class LTMatchExpression : public ComparisonMatchExpression { public: - LTMatchExpression(CollatorInterface* collator) : ComparisonMatchExpression(LT, collator) {} + LTMatchExpression(const CollatorInterface* collator) + : ComparisonMatchExpression(LT, collator) {} virtual std::unique_ptr<MatchExpression> shallowClone() const { std::unique_ptr<ComparisonMatchExpression> e = stdx::make_unique<LTMatchExpression>(_collator); @@ -168,7 +170,8 @@ public: class GTMatchExpression : public ComparisonMatchExpression { public: - GTMatchExpression(CollatorInterface* collator) : ComparisonMatchExpression(GT, collator) {} + GTMatchExpression(const CollatorInterface* collator) + : ComparisonMatchExpression(GT, collator) {} virtual std::unique_ptr<MatchExpression> shallowClone() const { std::unique_ptr<ComparisonMatchExpression> e = stdx::make_unique<GTMatchExpression>(_collator); @@ -182,7 +185,8 @@ public: class GTEMatchExpression : public ComparisonMatchExpression { public: - GTEMatchExpression(CollatorInterface* collator) : ComparisonMatchExpression(GTE, collator) {} + GTEMatchExpression(const CollatorInterface* collator) + : ComparisonMatchExpression(GTE, collator) {} virtual std::unique_ptr<MatchExpression> shallowClone() const { std::unique_ptr<ComparisonMatchExpression> e = stdx::make_unique<GTEMatchExpression>(_collator); @@ -314,7 +318,7 @@ class ArrayFilterEntries { MONGO_DISALLOW_COPYING(ArrayFilterEntries); public: - ArrayFilterEntries(CollatorInterface* collator); + ArrayFilterEntries(const CollatorInterface* collator); ~ArrayFilterEntries(); Status addEquality(const BSONElement& e); @@ -347,7 +351,7 @@ public: return _equalities.size() + _regexes.size(); } - CollatorInterface* getCollator() const { + const CollatorInterface* getCollator() const { return _collator; } @@ -364,7 +368,7 @@ private: bool _hasEmptyArray; BSONElementSet _equalities; std::vector<RegexMatchExpression*> _regexes; - CollatorInterface* _collator; + const CollatorInterface* _collator; }; /** @@ -375,7 +379,7 @@ public: /** * 'collator' must outlive the InMatchExpression and any clones made of it. */ - InMatchExpression(CollatorInterface* collator) + InMatchExpression(const CollatorInterface* collator) : LeafMatchExpression(MATCH_IN), _arrayEntries(collator) {} Status init(StringData path); @@ -399,7 +403,7 @@ public: return _arrayEntries; } - CollatorInterface* getCollator() const { + const CollatorInterface* getCollator() const { return _arrayEntries.getCollator(); } diff --git a/src/mongo/db/matcher/expression_leaf_test.cpp b/src/mongo/db/matcher/expression_leaf_test.cpp index 78e9bb15c8d..20b7fd5b098 100644 --- a/src/mongo/db/matcher/expression_leaf_test.cpp +++ b/src/mongo/db/matcher/expression_leaf_test.cpp @@ -60,7 +60,7 @@ TEST(ComparisonMatchExpression, ComparisonMatchExpressionsWithEqualCollatorsAreE TEST(ComparisonMatchExpression, StringMatchingWithNullCollatorUsesBinaryComparison) { BSONObj operand = BSON("a" << "string"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(eq.init("a", operand["a"]).isOK()); ASSERT(!eq.matchesBSON(BSON("a" @@ -84,7 +84,7 @@ TEST(EqOp, MatchesElement) { BSONObj match = BSON("a" << 5.0); BSONObj notMatch = BSON("a" << 6); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("", operand["a"]); ASSERT(eq.matchesSingleElement(match.firstElement())); @@ -95,14 +95,14 @@ TEST(EqOp, MatchesElement) { TEST(EqOp, InvalidEooOperand) { BSONObj operand; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(!eq.init("", operand.firstElement()).isOK()); } TEST(EqOp, MatchesScalar) { BSONObj operand = BSON("a" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a", operand["a"]); ASSERT(eq.matchesBSON(BSON("a" << 5.0), NULL)); @@ -111,7 +111,7 @@ TEST(EqOp, MatchesScalar) { TEST(EqOp, MatchesArrayValue) { BSONObj operand = BSON("a" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a", operand["a"]); ASSERT(eq.matchesBSON(BSON("a" << BSON_ARRAY(5.0 << 6)), NULL)); @@ -120,7 +120,7 @@ TEST(EqOp, MatchesArrayValue) { TEST(EqOp, MatchesReferencedObjectValue) { BSONObj operand = BSON("a.b" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a.b", operand["a.b"]); ASSERT(eq.matchesBSON(BSON("a" << BSON("b" << 5)), NULL)); @@ -130,7 +130,7 @@ TEST(EqOp, MatchesReferencedObjectValue) { TEST(EqOp, MatchesReferencedArrayValue) { BSONObj operand = BSON("a.0" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a.0", operand["a.0"]); ASSERT(eq.matchesBSON(BSON("a" << BSON_ARRAY(5)), NULL)); @@ -139,7 +139,7 @@ TEST(EqOp, MatchesReferencedArrayValue) { TEST(EqOp, MatchesNull) { BSONObj operand = BSON("a" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a", operand["a"]); ASSERT(eq.matchesBSON(BSONObj(), NULL)); @@ -153,7 +153,7 @@ TEST(EqOp, MatchesNull) { // not necessarily how it should work ideally. TEST(EqOp, MatchesNestedNull) { BSONObj operand = BSON("a.b" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a.b", operand["a.b"]); // null matches any empty object that is on a subpath of a.b @@ -174,7 +174,7 @@ TEST(EqOp, MatchesNestedNull) { TEST(EqOp, MatchesMinKey) { BSONObj operand = BSON("a" << MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a", operand["a"]); ASSERT(eq.matchesBSON(BSON("a" << MinKey), NULL)); @@ -185,7 +185,7 @@ TEST(EqOp, MatchesMinKey) { TEST(EqOp, MatchesMaxKey) { BSONObj operand = BSON("a" << MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(eq.init("a", operand["a"]).isOK()); ASSERT(eq.matchesBSON(BSON("a" << MaxKey), NULL)); @@ -195,7 +195,7 @@ TEST(EqOp, MatchesMaxKey) { TEST(EqOp, MatchesFullArray) { BSONObj operand = BSON("a" << BSON_ARRAY(1 << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(eq.init("a", operand["a"]).isOK()); ASSERT(eq.matchesBSON(BSON("a" << BSON_ARRAY(1 << 2)), NULL)); @@ -206,7 +206,7 @@ TEST(EqOp, MatchesFullArray) { TEST(EqOp, MatchesThroughNestedArray) { BSONObj operand = BSON("a.b.c.d" << 3); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); eq.init("a.b.c.d", operand["a.b.c.d"]); BSONObj obj = fromjson("{a:{b:[{c:[{d:1},{d:2}]},{c:[{d:3}]}]}}"); @@ -215,7 +215,7 @@ TEST(EqOp, MatchesThroughNestedArray) { TEST(EqOp, ElemMatchKey) { BSONObj operand = BSON("a" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(eq.init("a", operand["a"]).isOK()); MatchDetails details; @@ -235,7 +235,7 @@ TEST(EqOp, ElemMatchKey) { TEST(EqOp, ElemMatchKeyWithImplicitAndExplicitTraversal) { BSONObj operand = BSON("a.0.b" << 3); BSONElement operandFirstElt = operand.firstElement(); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq(collator); ASSERT(eq.init(operandFirstElt.fieldName(), operandFirstElt).isOK()); MatchDetails details; @@ -247,7 +247,7 @@ TEST(EqOp, ElemMatchKeyWithImplicitAndExplicitTraversal) { } TEST(EqOp, Equality1) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression eq1(collator); EqualityMatchExpression eq2(collator); EqualityMatchExpression eq3(collator); @@ -320,7 +320,7 @@ TEST(LtOp, MatchesElement) { BSONObj notMatchEqual = BSON("a" << 5); BSONObj notMatchWrongType = BSON("a" << "foo"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("", operand["$lt"]).isOK()); ASSERT(lt.matchesSingleElement(match.firstElement())); @@ -331,14 +331,14 @@ TEST(LtOp, MatchesElement) { TEST(LtOp, InvalidEooOperand) { BSONObj operand; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(!lt.init("", operand.firstElement()).isOK()); } TEST(LtOp, MatchesScalar) { BSONObj operand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["$lt"]).isOK()); ASSERT(lt.matchesBSON(BSON("a" << 4.5), NULL)); @@ -347,7 +347,7 @@ TEST(LtOp, MatchesScalar) { TEST(LtOp, MatchesScalarEmptyKey) { BSONObj operand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("", operand["$lt"]).isOK()); ASSERT(lt.matchesBSON(BSON("" << 4.5), NULL)); @@ -356,7 +356,7 @@ TEST(LtOp, MatchesScalarEmptyKey) { TEST(LtOp, MatchesArrayValue) { BSONObj operand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["$lt"]).isOK()); ASSERT(lt.matchesBSON(BSON("a" << BSON_ARRAY(6 << 4.5)), NULL)); @@ -365,7 +365,7 @@ TEST(LtOp, MatchesArrayValue) { TEST(LtOp, MatchesWholeArray) { BSONObj operand = BSON("$lt" << BSON_ARRAY(5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["$lt"]).isOK()); ASSERT(lt.matchesBSON(BSON("a" << BSON_ARRAY(4)), NULL)); @@ -379,7 +379,7 @@ TEST(LtOp, MatchesWholeArray) { TEST(LtOp, MatchesNull) { BSONObj operand = BSON("$lt" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["$lt"]).isOK()); ASSERT(!lt.matchesBSON(BSONObj(), NULL)); @@ -391,7 +391,7 @@ TEST(LtOp, MatchesNull) { TEST(LtOp, MatchesDotNotationNull) { BSONObj operand = BSON("$lt" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a.b", operand["$lt"]).isOK()); ASSERT(!lt.matchesBSON(BSONObj(), NULL)); @@ -406,7 +406,7 @@ TEST(LtOp, MatchesDotNotationNull) { TEST(LtOp, MatchesMinKey) { BSONObj operand = BSON("a" << MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["a"]).isOK()); ASSERT(!lt.matchesBSON(BSON("a" << MinKey), NULL)); @@ -416,7 +416,7 @@ TEST(LtOp, MatchesMinKey) { TEST(LtOp, MatchesMaxKey) { BSONObj operand = BSON("a" << MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["a"]).isOK()); ASSERT(!lt.matchesBSON(BSON("a" << MaxKey), NULL)); @@ -426,7 +426,7 @@ TEST(LtOp, MatchesMaxKey) { TEST(LtOp, ElemMatchKey) { BSONObj operand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression lt(collator); ASSERT(lt.init("a", operand["$lt"]).isOK()); MatchDetails details; @@ -497,7 +497,7 @@ TEST(LteOp, MatchesElement) { BSONObj notMatch = BSON("a" << 6); BSONObj notMatchWrongType = BSON("a" << "foo"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("", operand["$lte"]).isOK()); ASSERT(lte.matchesSingleElement(match.firstElement())); @@ -508,14 +508,14 @@ TEST(LteOp, MatchesElement) { TEST(LteOp, InvalidEooOperand) { BSONObj operand; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(!lte.init("", operand.firstElement()).isOK()); } TEST(LteOp, MatchesScalar) { BSONObj operand = BSON("$lte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["$lte"]).isOK()); ASSERT(lte.matchesBSON(BSON("a" << 4.5), NULL)); @@ -524,7 +524,7 @@ TEST(LteOp, MatchesScalar) { TEST(LteOp, MatchesArrayValue) { BSONObj operand = BSON("$lte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["$lte"]).isOK()); ASSERT(lte.matchesBSON(BSON("a" << BSON_ARRAY(6 << 4.5)), NULL)); @@ -533,7 +533,7 @@ TEST(LteOp, MatchesArrayValue) { TEST(LteOp, MatchesWholeArray) { BSONObj operand = BSON("$lte" << BSON_ARRAY(5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["$lte"]).isOK()); ASSERT(lte.matchesBSON(BSON("a" << BSON_ARRAY(4)), NULL)); @@ -547,7 +547,7 @@ TEST(LteOp, MatchesWholeArray) { TEST(LteOp, MatchesNull) { BSONObj operand = BSON("$lte" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["$lte"]).isOK()); ASSERT(lte.matchesBSON(BSONObj(), NULL)); @@ -559,7 +559,7 @@ TEST(LteOp, MatchesNull) { TEST(LteOp, MatchesDotNotationNull) { BSONObj operand = BSON("$lte" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a.b", operand["$lte"]).isOK()); ASSERT(lte.matchesBSON(BSONObj(), NULL)); @@ -574,7 +574,7 @@ TEST(LteOp, MatchesDotNotationNull) { TEST(LteOp, MatchesMinKey) { BSONObj operand = BSON("a" << MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["a"]).isOK()); ASSERT(lte.matchesBSON(BSON("a" << MinKey), NULL)); @@ -584,7 +584,7 @@ TEST(LteOp, MatchesMinKey) { TEST(LteOp, MatchesMaxKey) { BSONObj operand = BSON("a" << MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["a"]).isOK()); ASSERT(lte.matchesBSON(BSON("a" << MaxKey), NULL)); @@ -595,7 +595,7 @@ TEST(LteOp, MatchesMaxKey) { TEST(LteOp, ElemMatchKey) { BSONObj operand = BSON("$lte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression lte(collator); ASSERT(lte.init("a", operand["$lte"]).isOK()); MatchDetails details; @@ -676,14 +676,14 @@ TEST(LteOp, ElemMatchKey) { TEST(GtOp, InvalidEooOperand) { BSONObj operand; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(!gt.init("", operand.firstElement()).isOK()); } TEST(GtOp, MatchesScalar) { BSONObj operand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["$gt"]).isOK()); ASSERT(gt.matchesBSON(BSON("a" << 5.5), NULL)); @@ -692,7 +692,7 @@ TEST(GtOp, MatchesScalar) { TEST(GtOp, MatchesArrayValue) { BSONObj operand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["$gt"]).isOK()); ASSERT(gt.matchesBSON(BSON("a" << BSON_ARRAY(3 << 5.5)), NULL)); @@ -701,7 +701,7 @@ TEST(GtOp, MatchesArrayValue) { TEST(GtOp, MatchesWholeArray) { BSONObj operand = BSON("$gt" << BSON_ARRAY(5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["$gt"]).isOK()); ASSERT(!gt.matchesBSON(BSON("a" << BSON_ARRAY(4)), NULL)); @@ -717,7 +717,7 @@ TEST(GtOp, MatchesWholeArray) { TEST(GtOp, MatchesNull) { BSONObj operand = BSON("$gt" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["$gt"]).isOK()); ASSERT(!gt.matchesBSON(BSONObj(), NULL)); @@ -729,7 +729,7 @@ TEST(GtOp, MatchesNull) { TEST(GtOp, MatchesDotNotationNull) { BSONObj operand = BSON("$gt" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a.b", operand["$gt"]).isOK()); ASSERT(!gt.matchesBSON(BSONObj(), NULL)); @@ -744,7 +744,7 @@ TEST(GtOp, MatchesDotNotationNull) { TEST(GtOp, MatchesMinKey) { BSONObj operand = BSON("a" << MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["a"]).isOK()); ASSERT(!gt.matchesBSON(BSON("a" << MinKey), NULL)); @@ -754,7 +754,7 @@ TEST(GtOp, MatchesMinKey) { TEST(GtOp, MatchesMaxKey) { BSONObj operand = BSON("a" << MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["a"]).isOK()); ASSERT(!gt.matchesBSON(BSON("a" << MaxKey), NULL)); @@ -764,7 +764,7 @@ TEST(GtOp, MatchesMaxKey) { TEST(GtOp, ElemMatchKey) { BSONObj operand = BSON("$gt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression gt(collator); ASSERT(gt.init("a", operand["$gt"]).isOK()); MatchDetails details; @@ -836,7 +836,7 @@ TEST(GteOp, MatchesElement) { BSONObj notMatch = BSON("a" << 4); BSONObj notMatchWrongType = BSON("a" << "foo"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("", operand["$gte"]).isOK()); ASSERT(gte.matchesSingleElement(match.firstElement())); @@ -847,14 +847,14 @@ TEST(GteOp, MatchesElement) { TEST(GteOp, InvalidEooOperand) { BSONObj operand; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(!gte.init("", operand.firstElement()).isOK()); } TEST(GteOp, MatchesScalar) { BSONObj operand = BSON("$gte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["$gte"]).isOK()); ASSERT(gte.matchesBSON(BSON("a" << 5.5), NULL)); @@ -863,7 +863,7 @@ TEST(GteOp, MatchesScalar) { TEST(GteOp, MatchesArrayValue) { BSONObj operand = BSON("$gte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["$gte"]).isOK()); ASSERT(gte.matchesBSON(BSON("a" << BSON_ARRAY(4 << 5.5)), NULL)); @@ -872,7 +872,7 @@ TEST(GteOp, MatchesArrayValue) { TEST(GteOp, MatchesWholeArray) { BSONObj operand = BSON("$gte" << BSON_ARRAY(5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["$gte"]).isOK()); ASSERT(!gte.matchesBSON(BSON("a" << BSON_ARRAY(4)), NULL)); @@ -887,7 +887,7 @@ TEST(GteOp, MatchesWholeArray) { TEST(GteOp, MatchesNull) { BSONObj operand = BSON("$gte" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["$gte"]).isOK()); ASSERT(gte.matchesBSON(BSONObj(), NULL)); @@ -899,7 +899,7 @@ TEST(GteOp, MatchesNull) { TEST(GteOp, MatchesDotNotationNull) { BSONObj operand = BSON("$gte" << BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a.b", operand["$gte"]).isOK()); ASSERT(gte.matchesBSON(BSONObj(), NULL)); @@ -914,7 +914,7 @@ TEST(GteOp, MatchesDotNotationNull) { TEST(GteOp, MatchesMinKey) { BSONObj operand = BSON("a" << MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["a"]).isOK()); ASSERT(gte.matchesBSON(BSON("a" << MinKey), NULL)); @@ -924,7 +924,7 @@ TEST(GteOp, MatchesMinKey) { TEST(GteOp, MatchesMaxKey) { BSONObj operand = BSON("a" << MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["a"]).isOK()); ASSERT(gte.matchesBSON(BSON("a" << MaxKey), NULL)); @@ -934,7 +934,7 @@ TEST(GteOp, MatchesMaxKey) { TEST(GteOp, ElemMatchKey) { BSONObj operand = BSON("$gte" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression gte(collator); ASSERT(gte.init("a", operand["$gte"]).isOK()); MatchDetails details; @@ -1551,7 +1551,7 @@ TEST(InMatchExpression, MatchesElementSingle) { BSONArray operand = BSON_ARRAY(1); BSONObj match = BSON("a" << 1); BSONObj notMatch = BSON("a" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.getArrayFilterEntries()->addEquality(operand.firstElement()); ASSERT(in.matchesSingleElement(match["a"])); @@ -1559,7 +1559,7 @@ TEST(InMatchExpression, MatchesElementSingle) { } TEST(InMatchExpression, MatchesEmpty) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); @@ -1571,7 +1571,7 @@ TEST(InMatchExpression, MatchesEmpty) { TEST(InMatchExpression, MatchesElementMultiple) { BSONObj operand = BSON_ARRAY(1 << "r" << true << 1); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.getArrayFilterEntries()->addEquality(operand[0]); in.getArrayFilterEntries()->addEquality(operand[1]); @@ -1592,7 +1592,7 @@ TEST(InMatchExpression, MatchesElementMultiple) { TEST(InMatchExpression, MatchesScalar) { BSONObj operand = BSON_ARRAY(5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1603,7 +1603,7 @@ TEST(InMatchExpression, MatchesScalar) { TEST(InMatchExpression, MatchesArrayValue) { BSONObj operand = BSON_ARRAY(5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1616,7 +1616,7 @@ TEST(InMatchExpression, MatchesArrayValue) { TEST(InMatchExpression, MatchesNull) { BSONObj operand = BSON_ARRAY(BSONNULL); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1631,7 +1631,7 @@ TEST(InMatchExpression, MatchesNull) { TEST(InMatchExpression, MatchesUndefined) { BSONObj operand = BSON_ARRAY(BSONUndefined); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); Status s = in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1640,7 +1640,7 @@ TEST(InMatchExpression, MatchesUndefined) { TEST(InMatchExpression, MatchesMinKey) { BSONObj operand = BSON_ARRAY(MinKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1652,7 +1652,7 @@ TEST(InMatchExpression, MatchesMinKey) { TEST(InMatchExpression, MatchesMaxKey) { BSONObj operand = BSON_ARRAY(MaxKey); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand.firstElement()); @@ -1664,7 +1664,7 @@ TEST(InMatchExpression, MatchesMaxKey) { TEST(InMatchExpression, MatchesFullArray) { BSONObj operand = BSON_ARRAY(BSON_ARRAY(1 << 2) << 4 << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand[0]); @@ -1679,7 +1679,7 @@ TEST(InMatchExpression, MatchesFullArray) { TEST(InMatchExpression, ElemMatchKey) { BSONObj operand = BSON_ARRAY(5 << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.init("a"); in.getArrayFilterEntries()->addEquality(operand[0]); @@ -1716,7 +1716,7 @@ TEST(InMatchExpression, StringMatchingWithNullCollatorUsesBinaryComparison) { BSONArray operand = BSON_ARRAY("string"); BSONObj notMatch = BSON("a" << "string2"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; InMatchExpression in(collator); in.getArrayFilterEntries()->addEquality(operand.firstElement()); ASSERT(!in.matchesSingleElement(notMatch["a"])); diff --git a/src/mongo/db/matcher/expression_parser.cpp b/src/mongo/db/matcher/expression_parser.cpp index a650ff2e88d..0c9e0187936 100644 --- a/src/mongo/db/matcher/expression_parser.cpp +++ b/src/mongo/db/matcher/expression_parser.cpp @@ -348,7 +348,7 @@ StatusWithMatchExpression MatchExpressionParser::_parse(const BSONObj& obj, int mongoutils::str::equals("id", rest) || mongoutils::str::equals("db", rest)) { // DBRef fields. // 'id' is collation-aware. 'ref' and 'db' are compared using binary comparison. - CollatorInterface* collator = (str::equals("id", rest) ? _collator : nullptr); + const CollatorInterface* collator = (str::equals("id", rest) ? _collator : nullptr); std::unique_ptr<ComparisonMatchExpression> eq = stdx::make_unique<EqualityMatchExpression>(collator); Status s = eq->init(e.fieldName(), e); diff --git a/src/mongo/db/matcher/expression_parser.h b/src/mongo/db/matcher/expression_parser.h index 0bde5027338..61a712b7d92 100644 --- a/src/mongo/db/matcher/expression_parser.h +++ b/src/mongo/db/matcher/expression_parser.h @@ -52,13 +52,14 @@ public: */ static StatusWithMatchExpression parse(const BSONObj& obj, const ExtensionsCallback& extensionsCallback, - CollatorInterface* collator) { + const CollatorInterface* collator) { // The 0 initializes the match expression tree depth. return MatchExpressionParser(&extensionsCallback, collator)._parse(obj, 0); } private: - MatchExpressionParser(const ExtensionsCallback* extensionsCallback, CollatorInterface* collator) + MatchExpressionParser(const ExtensionsCallback* extensionsCallback, + const CollatorInterface* collator) : _extensionsCallback(extensionsCallback), _collator(collator) {} /** @@ -155,7 +156,7 @@ private: // Collator that constructed collation-aware MatchExpressions will use. // We do not own this pointer - it has to live as long as the parser is active. - CollatorInterface* _collator; + const CollatorInterface* _collator; }; typedef stdx::function<StatusWithMatchExpression( diff --git a/src/mongo/db/matcher/expression_parser_array_test.cpp b/src/mongo/db/matcher/expression_parser_array_test.cpp index c215ea33c9b..e37f6e8adc6 100644 --- a/src/mongo/db/matcher/expression_parser_array_test.cpp +++ b/src/mongo/db/matcher/expression_parser_array_test.cpp @@ -47,7 +47,7 @@ using std::string; TEST(MatchExpressionParserArrayTest, Size1) { BSONObj query = BSON("x" << BSON("$size" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -60,7 +60,7 @@ TEST(MatchExpressionParserArrayTest, Size1) { TEST(MatchExpressionParserArrayTest, SizeAsLong) { BSONObj query = BSON("x" << BSON("$size" << 2LL)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -73,7 +73,7 @@ TEST(MatchExpressionParserArrayTest, SizeAsLong) { TEST(MatchExpressionParserArrayTest, SizeAsNegativeLong) { BSONObj query = BSON("x" << BSON("$size" << -2LL)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -81,7 +81,7 @@ TEST(MatchExpressionParserArrayTest, SizeAsNegativeLong) { TEST(MatchExpressionParserArrayTest, SizeTooLarge) { BSONObj query = BSON("x" << BSON("$size" << std::numeric_limits<long long>::max())); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -90,7 +90,7 @@ TEST(MatchExpressionParserArrayTest, SizeTooLarge) { TEST(MatchExpressionParserArrayTest, SizeAsString) { BSONObj query = BSON("x" << BSON("$size" << "a")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -98,7 +98,7 @@ TEST(MatchExpressionParserArrayTest, SizeAsString) { TEST(MatchExpressionParserArrayTest, SizeWithIntegralDouble) { BSONObj query = BSON("x" << BSON("$size" << 2.0)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -111,7 +111,7 @@ TEST(MatchExpressionParserArrayTest, SizeWithIntegralDouble) { TEST(MatchExpressionParserArrayTest, SizeWithNegativeIntegralDouble) { BSONObj query = BSON("x" << BSON("$size" << -2.0)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -119,7 +119,7 @@ TEST(MatchExpressionParserArrayTest, SizeWithNegativeIntegralDouble) { TEST(MatchExpressionParserArrayTest, SizeWithDouble) { BSONObj query = BSON("x" << BSON("$size" << 2.5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -127,7 +127,7 @@ TEST(MatchExpressionParserArrayTest, SizeWithDouble) { TEST(MatchExpressionParserArrayTest, SizeWithNegative) { BSONObj query = BSON("x" << BSON("$size" << -2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -135,7 +135,7 @@ TEST(MatchExpressionParserArrayTest, SizeWithNegative) { TEST(MatchExpressionParserArrayTest, SizeBad) { BSONObj query = BSON("x" << BSON("$size" << BSONNULL)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -145,7 +145,7 @@ TEST(MatchExpressionParserArrayTest, SizeBad) { TEST(MatchExpressionParserArrayTest, ElemMatchArr1) { BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("x" << 1 << "y" << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -159,7 +159,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchArr1) { TEST(MatchExpressionParserArrayTest, ElemMatchAnd) { BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("$and" << BSON_ARRAY(BSON("x" << 1 << "y" << 2))))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -172,7 +172,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchAnd) { TEST(MatchExpressionParserArrayTest, ElemMatchNor) { BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("$nor" << BSON_ARRAY(BSON("x" << 1))))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -186,7 +186,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchNor) { TEST(MatchExpressionParserArrayTest, ElemMatchOr) { BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("$or" << BSON_ARRAY(BSON("x" << 1 << "y" << 2))))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -199,7 +199,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchOr) { TEST(MatchExpressionParserArrayTest, ElemMatchVal1) { BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("$gt" << 5))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -223,7 +223,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef1) { << "db"); BSONObj query = BSON("x" << BSON("$elemMatch" << BSON("$eq" << match))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -246,7 +246,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef2) { << "db"); BSONObj query = BSON("x" << BSON("$elemMatch" << match)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -268,7 +268,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef3) { << "$id" << oidx << "foo" << 12345); BSONObj query = BSON("x" << BSON("$elemMatch" << match)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -302,7 +302,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef4) { << "db"); BSONObj query = BSON("x" << BSON("$elemMatch" << matchOutOfOrder)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -327,7 +327,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef5) { << "$id" << oidx << "foo" << 12345); BSONObj query = BSON("x" << BSON("$elemMatch" << matchOutOfOrder)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -357,7 +357,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef6) { << "$id" << oid << "foo" << 12345); BSONObj query = BSON("x" << BSON("$elemMatch" << matchMissingID)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -386,7 +386,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef7) { << "$id" << oidx << "foo" << 12345); BSONObj query = BSON("x" << BSON("$elemMatch" << matchMissingRef)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -420,7 +420,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef8) { << "foo" << 12345); BSONObj query = BSON("x" << BSON("$elemMatch" << matchDBOnly)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -440,7 +440,7 @@ TEST(MatchExpressionParserArrayTest, ElemMatchDBRef8) { TEST(MatchExpressionParserArrayTest, All1) { BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(1 << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -458,7 +458,7 @@ TEST(MatchExpressionParserArrayTest, All1) { TEST(MatchExpressionParserArrayTest, AllNull) { BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(BSONNULL))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -474,7 +474,7 @@ TEST(MatchExpressionParserArrayTest, AllNull) { TEST(MatchExpressionParserArrayTest, AllBadArg) { BSONObj query = BSON("x" << BSON("$all" << 1)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -489,7 +489,7 @@ TEST(MatchExpressionParserArrayTest, AllBadRegexArg) { BSONObj query = BSON("x" << operand.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -504,7 +504,7 @@ TEST(MatchExpressionParserArrayTest, AllRegex1) { all.appendArray("$all", allArray.obj()); BSONObj query = BSON("a" << all.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -532,7 +532,7 @@ TEST(MatchExpressionParserArrayTest, AllRegex2) { all.appendArray("$all", allArray.obj()); BSONObj query = BSON("a" << all.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -551,7 +551,7 @@ TEST(MatchExpressionParserArrayTest, AllRegex2) { TEST(MatchExpressionParserArrayTest, AllNonArray) { BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(5))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -569,7 +569,7 @@ TEST(MatchExpressionParserArrayTest, AllNonArray) { TEST(MatchExpressionParserArrayTest, AllElemMatch1) { BSONObj internal = BSON("x" << 1 << "y" << 2); BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(BSON("$elemMatch" << internal)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -591,7 +591,7 @@ TEST(MatchExpressionParserArrayTest, AllElemMatch1) { TEST(MatchExpressionParserArrayTest, AllElemMatch2) { BSONObj internal = BSON("z" << 1); BSONObj query = BSON("x.y" << BSON("$all" << BSON_ARRAY(BSON("$elemMatch" << internal)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -628,7 +628,7 @@ TEST(MatchExpressionParserArrayTest, AllElemMatch2) { // are correct. TEST(MatchExpressionParserArrayTest, AllElemMatch3) { BSONObj query = fromjson("{x: {$all: [{$elemMatch: {y: 1, z: 1}}]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -665,7 +665,7 @@ TEST(MatchExpressionParserArrayTest, AllElemMatchBad) { BSONObj internal = BSON("x" << 1 << "y" << 2); BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(BSON("$elemMatch" << internal) << 5))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -679,7 +679,7 @@ TEST(MatchExpressionParserArrayTest, AllElemMatchBad) { TEST(MatchExpressionParserArrayTest, AllElemMatchBadMixed) { // $elemMatch first, equality second. BSONObj bad1 = fromjson("{x: {$all: [{$elemMatch: {y: 1}}, 3]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result1 = MatchExpressionParser::parse(bad1, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result1.isOK()); @@ -706,7 +706,7 @@ TEST(MatchExpressionParserArrayTest, AllElemMatchBadMixed) { // $all with empty string. TEST(MatchExpressionParserArrayTest, AllEmptyString) { BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(""))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -732,7 +732,7 @@ TEST(MatchExpressionParserArrayTest, AllISODate) { const Date_t& notMatch = notMatchResult.getValue(); BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY(match))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -749,7 +749,7 @@ TEST(MatchExpressionParserArrayTest, AllISODate) { // $all on array element with empty string. TEST(MatchExpressionParserArrayTest, AllDottedEmptyString) { BSONObj query = BSON("x.1" << BSON("$all" << BSON_ARRAY(""))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -777,7 +777,7 @@ TEST(MatchExpressionParserArrayTest, AllDottedISODate) { const Date_t& notMatch = notMatchResult.getValue(); BSONObj query = BSON("x.1" << BSON("$all" << BSON_ARRAY(match))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -795,7 +795,7 @@ TEST(MatchExpressionParserArrayTest, AllDottedISODate) { TEST(MatchExpressionParserArrayTest, AllStringNullCollation) { BSONObj query = BSON("x" << BSON("$all" << BSON_ARRAY("string"))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); diff --git a/src/mongo/db/matcher/expression_parser_geo_test.cpp b/src/mongo/db/matcher/expression_parser_geo_test.cpp index 5724cff0d51..b4450c41785 100644 --- a/src/mongo/db/matcher/expression_parser_geo_test.cpp +++ b/src/mongo/db/matcher/expression_parser_geo_test.cpp @@ -43,7 +43,7 @@ namespace mongo { TEST(MatchExpressionParserGeo, WithinBox) { BSONObj query = fromjson("{a:{$within:{$box:[{x: 4, y:4},[6,6]]}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -60,7 +60,7 @@ TEST(MatchExpressionParserGeoNear, ParseNear) { "{loc:{$near:{$maxDistance:100, " "$geometry:{type:\"Point\", coordinates:[0,0]}}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -78,7 +78,7 @@ TEST(MatchExpressionParserGeoNear, ParseNearExtraField) { "{loc:{$near:{$maxDistance:100, " "$geometry:{type:\"Point\", coordinates:[0,0]}}, foo: 1}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); @@ -93,7 +93,7 @@ TEST(MatchExpressionParserGeoNear, ParseNearExtraField) { TEST(MatchExpressionParserGeoNear, ParseValidNear) { BSONObj query = fromjson("{loc: {$near: [0,0], $maxDistance: 100, $minDistance: 50}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -109,42 +109,42 @@ TEST(MatchExpressionParserGeoNear, ParseValidNear) { TEST(MatchExpressionParserGeoNear, ParseInvalidNear) { { BSONObj query = fromjson("{loc: {$maxDistance: 100, $near: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$minDistance: 100, $near: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$near: [0,0], $maxDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$near: [0,0], $minDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$near: [0,0], $eq: 40}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$eq: 40, $near: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -152,21 +152,21 @@ TEST(MatchExpressionParserGeoNear, ParseInvalidNear) { { BSONObj query = fromjson( "{loc: {$near: [0,0], $geoWithin: {$geometry: {type: \"Polygon\", coordinates: []}}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$near: {$foo: 1}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$minDistance: 10}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -176,7 +176,7 @@ TEST(MatchExpressionParserGeoNear, ParseInvalidNear) { TEST(MatchExpressionParserGeoNear, ParseValidGeoNear) { BSONObj query = fromjson("{loc: {$geoNear: [0,0], $maxDistance: 100, $minDistance: 50}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -192,35 +192,35 @@ TEST(MatchExpressionParserGeoNear, ParseValidGeoNear) { TEST(MatchExpressionParserGeoNear, ParseInvalidGeoNear) { { BSONObj query = fromjson("{loc: {$maxDistance: 100, $geoNear: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$minDistance: 100, $geoNear: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$geoNear: [0,0], $eq: 1}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$geoNear: [0,0], $maxDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$geoNear: [0,0], $minDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); @@ -230,7 +230,7 @@ TEST(MatchExpressionParserGeoNear, ParseInvalidGeoNear) { TEST(MatchExpressionParserGeoNear, ParseValidNearSphere) { BSONObj query = fromjson("{loc: {$nearSphere: [0,0], $maxDistance: 100, $minDistance: 50}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -246,35 +246,35 @@ TEST(MatchExpressionParserGeoNear, ParseValidNearSphere) { TEST(MatchExpressionParserGeoNear, ParseInvalidNearSphere) { { BSONObj query = fromjson("{loc: {$maxDistance: 100, $nearSphere: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$minDistance: 100, $nearSphere: [0,0]}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } { BSONObj query = fromjson("{loc: {$nearSphere: [0,0], $maxDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$nearSphere: [0,0], $minDistance: {}}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); } { BSONObj query = fromjson("{loc: {$nearSphere: [0,0], $eq: 1}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_THROWS( MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator), UserException); diff --git a/src/mongo/db/matcher/expression_parser_leaf_test.cpp b/src/mongo/db/matcher/expression_parser_leaf_test.cpp index b3a3639defd..a6836126ef4 100644 --- a/src/mongo/db/matcher/expression_parser_leaf_test.cpp +++ b/src/mongo/db/matcher/expression_parser_leaf_test.cpp @@ -51,7 +51,7 @@ using std::string; TEST(MatchExpressionParserLeafTest, NullCollation) { BSONObj query = BSON("x" << "string"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -75,7 +75,7 @@ TEST(MatchExpressionParserLeafTest, Collation) { TEST(MatchExpressionParserLeafTest, SimpleEQ2) { BSONObj query = BSON("x" << BSON("$eq" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -87,7 +87,7 @@ TEST(MatchExpressionParserLeafTest, SimpleEQ2) { TEST(MatchExpressionParserLeafTest, SimpleEQUndefined) { BSONObj query = BSON("x" << BSON("$eq" << BSONUndefined)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -96,7 +96,7 @@ TEST(MatchExpressionParserLeafTest, SimpleEQUndefined) { TEST(MatchExpressionParserLeafTest, EQNullCollation) { BSONObj query = BSON("x" << BSON("$eq" << "string")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -120,7 +120,7 @@ TEST(MatchExpressionParserLeafTest, EQCollation) { TEST(MatchExpressionParserLeafTest, SimpleGT1) { BSONObj query = BSON("x" << BSON("$gt" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -132,7 +132,7 @@ TEST(MatchExpressionParserLeafTest, SimpleGT1) { TEST(MatchExpressionParserLeafTest, GTNullCollation) { BSONObj query = BSON("x" << BSON("$gt" << "abc")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -156,7 +156,7 @@ TEST(MatchExpressionParserLeafTest, GTCollation) { TEST(MatchExpressionParserLeafTest, SimpleLT1) { BSONObj query = BSON("x" << BSON("$lt" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -169,7 +169,7 @@ TEST(MatchExpressionParserLeafTest, SimpleLT1) { TEST(MatchExpressionParserLeafTest, LTNullCollation) { BSONObj query = BSON("x" << BSON("$lt" << "abc")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -193,7 +193,7 @@ TEST(MatchExpressionParserLeafTest, LTCollation) { TEST(MatchExpressionParserLeafTest, SimpleGTE1) { BSONObj query = BSON("x" << BSON("$gte" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -206,7 +206,7 @@ TEST(MatchExpressionParserLeafTest, SimpleGTE1) { TEST(MatchExpressionParserLeafTest, GTENullCollation) { BSONObj query = BSON("x" << BSON("$gte" << "abc")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -230,7 +230,7 @@ TEST(MatchExpressionParserLeafTest, GTECollation) { TEST(MatchExpressionParserLeafTest, SimpleLTE1) { BSONObj query = BSON("x" << BSON("$lte" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -243,7 +243,7 @@ TEST(MatchExpressionParserLeafTest, SimpleLTE1) { TEST(MatchExpressionParserLeafTest, LTENullCollation) { BSONObj query = BSON("x" << BSON("$lte" << "abc")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -267,7 +267,7 @@ TEST(MatchExpressionParserLeafTest, LTECollation) { TEST(MatchExpressionParserLeafTest, SimpleNE1) { BSONObj query = BSON("x" << BSON("$ne" << 2)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -280,7 +280,7 @@ TEST(MatchExpressionParserLeafTest, SimpleNE1) { TEST(MatchExpressionParserLeafTest, NENullCollation) { BSONObj query = BSON("x" << BSON("$ne" << "string")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -308,7 +308,7 @@ TEST(MatchExpressionParserLeafTest, NECollation) { TEST(MatchExpressionParserLeafTest, SimpleModBad1) { BSONObj query = BSON("x" << BSON("$mod" << BSON_ARRAY(3 << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -336,7 +336,7 @@ TEST(MatchExpressionParserLeafTest, SimpleModBad1) { TEST(MatchExpressionParserLeafTest, SimpleMod1) { BSONObj query = BSON("x" << BSON("$mod" << BSON_ARRAY(3 << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -348,7 +348,7 @@ TEST(MatchExpressionParserLeafTest, SimpleMod1) { TEST(MatchExpressionParserLeafTest, SimpleModNotNumber) { BSONObj query = BSON("x" << BSON("$mod" << BSON_ARRAY(2 << "r"))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -363,7 +363,7 @@ TEST(MatchExpressionParserLeafTest, SimpleModNotNumber) { TEST(MatchExpressionParserLeafTest, IdCollation) { BSONObj query = BSON("$id" << "string"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -410,7 +410,7 @@ TEST(MatchExpressionParserLeafTest, DbCollation) { TEST(MatchExpressionParserLeafTest, SimpleIN1) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(2 << 3))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -422,7 +422,7 @@ TEST(MatchExpressionParserLeafTest, SimpleIN1) { TEST(MatchExpressionParserLeafTest, INNullCollation) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY("string"))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -448,7 +448,7 @@ TEST(MatchExpressionParserLeafTest, INSingleDBRef) { << "coll" << "$id" << oid << "$db" << "db")))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -512,7 +512,7 @@ TEST(MatchExpressionParserLeafTest, INMultipleDBRef) { << "coll" << "$id" << oid << "$db" << "db")))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -613,7 +613,7 @@ TEST(MatchExpressionParserLeafTest, INDBRefWithOptionalField1) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSON("$ref" << "coll" << "$id" << oid << "foo" << 12345)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -640,7 +640,7 @@ TEST(MatchExpressionParserLeafTest, INInvalidDBRefs) { // missing $id BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSON("$ref" << "coll")))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); @@ -669,7 +669,7 @@ TEST(MatchExpressionParserLeafTest, INInvalidDBRefs) { TEST(MatchExpressionParserLeafTest, INExpressionDocument) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSON("$foo" << 1)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -677,7 +677,7 @@ TEST(MatchExpressionParserLeafTest, INExpressionDocument) { TEST(MatchExpressionParserLeafTest, INNotArray) { BSONObj query = BSON("x" << BSON("$in" << 5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -685,7 +685,7 @@ TEST(MatchExpressionParserLeafTest, INNotArray) { TEST(MatchExpressionParserLeafTest, INUndefined) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSONUndefined))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -693,7 +693,7 @@ TEST(MatchExpressionParserLeafTest, INUndefined) { TEST(MatchExpressionParserLeafTest, INNotElemMatch) { BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSON("$elemMatch" << 1)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -706,7 +706,7 @@ TEST(MatchExpressionParserLeafTest, INRegexTooLong) { BSONObjBuilder operand; operand.appendArray("$in", inArray.obj()); BSONObj query = BSON("x" << operand.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -715,7 +715,7 @@ TEST(MatchExpressionParserLeafTest, INRegexTooLong) { TEST(MatchExpressionParserLeafTest, INRegexTooLong2) { string tooLargePattern(50 * 1000, 'z'); BSONObj query = BSON("x" << BSON("$in" << BSON_ARRAY(BSON("$regex" << tooLargePattern)))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -730,7 +730,7 @@ TEST(MatchExpressionParserLeafTest, INRegexStuff) { operand.appendArray("$in", inArray.obj()); BSONObj query = BSON("a" << operand.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -757,7 +757,7 @@ TEST(MatchExpressionParserLeafTest, INRegexStuff) { TEST(MatchExpressionParserLeafTest, SimpleNIN1) { BSONObj query = BSON("x" << BSON("$nin" << BSON_ARRAY(2 << 3))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -769,7 +769,7 @@ TEST(MatchExpressionParserLeafTest, SimpleNIN1) { TEST(MatchExpressionParserLeafTest, NINNotArray) { BSONObj query = BSON("x" << BSON("$nin" << 5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -777,7 +777,7 @@ TEST(MatchExpressionParserLeafTest, NINNotArray) { TEST(MatchExpressionParserLeafTest, NINNullCollation) { BSONObj query = BSON("x" << BSON("$nin" << BSON_ARRAY("string"))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -805,7 +805,7 @@ TEST(MatchExpressionParserLeafTest, Regex1) { BSONObjBuilder b; b.appendRegex("x", "abc", "i"); BSONObj query = b.obj(); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -823,7 +823,7 @@ TEST(MatchExpressionParserLeafTest, Regex2) { << "abc" << "$options" << "i")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -841,7 +841,7 @@ TEST(MatchExpressionParserLeafTest, Regex3) { << "i" << "$regex" << "abc")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); log() << "result: " << result.getStatus() << endl; @@ -861,7 +861,7 @@ TEST(MatchExpressionParserLeafTest, RegexBad) { << "abc" << "$optionas" << "i")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -889,7 +889,7 @@ TEST(MatchExpressionParserLeafTest, RegexBad) { TEST(MatchExpressionParserLeafTest, RegexEmbeddedNULByte) { BSONObj query = BSON("x" << BSON("$regex" << "^a\\x00b")); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -904,7 +904,7 @@ TEST(MatchExpressionParserLeafTest, ExistsYes1) { BSONObjBuilder b; b.appendBool("$exists", true); BSONObj query = BSON("x" << b.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -919,7 +919,7 @@ TEST(MatchExpressionParserLeafTest, ExistsNO1) { BSONObjBuilder b; b.appendBool("$exists", false); BSONObj query = BSON("x" << b.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -932,7 +932,7 @@ TEST(MatchExpressionParserLeafTest, ExistsNO1) { TEST(MatchExpressionParserLeafTest, Type1) { BSONObj query = BSON("x" << BSON("$type" << String)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -944,7 +944,7 @@ TEST(MatchExpressionParserLeafTest, Type1) { TEST(MatchExpressionParserLeafTest, Type2) { BSONObj query = BSON("x" << BSON("$type" << (double)NumberDouble)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -955,7 +955,7 @@ TEST(MatchExpressionParserLeafTest, Type2) { TEST(MatchExpressionParserLeafTest, TypeDoubleOperator) { BSONObj query = BSON("x" << BSON("$type" << 1.5)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -967,7 +967,7 @@ TEST(MatchExpressionParserLeafTest, TypeDoubleOperator) { TEST(MatchExpressionParserLeafTest, TypeDecimalOperator) { if (Decimal128::enabled) { BSONObj query = BSON("x" << BSON("$type" << mongo::NumberDecimal)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -979,7 +979,7 @@ TEST(MatchExpressionParserLeafTest, TypeDecimalOperator) { TEST(MatchExpressionParserLeafTest, TypeNull) { BSONObj query = BSON("x" << BSON("$type" << jstNULL)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -995,7 +995,7 @@ TEST(MatchExpressionParserLeafTest, TypeBadType) { BSONObjBuilder b; b.append("$type", (JSTypeMax + 1)); BSONObj query = BSON("x" << b.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_NOT_OK(result.getStatus()); @@ -1003,14 +1003,14 @@ TEST(MatchExpressionParserLeafTest, TypeBadType) { TEST(MatchExpressionParserLeafTest, TypeBad) { BSONObj query = BSON("x" << BSON("$type" << BSON("x" << 1))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); } TEST(MatchExpressionParserLeafTest, TypeBadString) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_NOT_OK(MatchExpressionParser::parse(fromjson("{a: {$type: null}}"), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1030,7 +1030,7 @@ TEST(MatchExpressionParserLeafTest, TypeBadString) { } TEST(MatchExpressionParserLeafTest, TypeStringnameDouble) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumberDouble = MatchExpressionParser::parse( fromjson("{a: {$type: 'double'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeNumberDouble.getStatus()); @@ -1043,7 +1043,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameDouble) { TEST(MatchExpressionParserLeafTest, TypeStringNameNumberDecimal) { if (Decimal128::enabled) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumberDecimal = MatchExpressionParser::parse( fromjson("{a: {$type: 'decimal'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeNumberDecimal.getStatus()); @@ -1056,7 +1056,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringNameNumberDecimal) { } TEST(MatchExpressionParserLeafTest, TypeStringnameNumberInt) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumberInt = MatchExpressionParser::parse( fromjson("{a: {$type: 'int'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeNumberInt.getStatus()); @@ -1068,7 +1068,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameNumberInt) { } TEST(MatchExpressionParserLeafTest, TypeStringnameNumberLong) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumberLong = MatchExpressionParser::parse( fromjson("{a: {$type: 'long'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeNumberLong.getStatus()); @@ -1080,7 +1080,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameNumberLong) { } TEST(MatchExpressionParserLeafTest, TypeStringnameString) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeString = MatchExpressionParser::parse( fromjson("{a: {$type: 'string'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeString.getStatus()); @@ -1091,7 +1091,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameString) { } TEST(MatchExpressionParserLeafTest, TypeStringnamejstOID) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typejstOID = MatchExpressionParser::parse( fromjson("{a: {$type: 'objectId'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typejstOID.getStatus()); @@ -1102,7 +1102,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnamejstOID) { } TEST(MatchExpressionParserLeafTest, TypeStringnamejstNULL) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typejstNULL = MatchExpressionParser::parse( fromjson("{a: {$type: 'null'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typejstNULL.getStatus()); @@ -1114,7 +1114,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnamejstNULL) { } TEST(MatchExpressionParserLeafTest, TypeStringnameBool) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeBool = MatchExpressionParser::parse( fromjson("{a: {$type: 'bool'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeBool.getStatus()); @@ -1125,7 +1125,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameBool) { } TEST(MatchExpressionParserLeafTest, TypeStringnameObject) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeObject = MatchExpressionParser::parse( fromjson("{a: {$type: 'object'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeObject.getStatus()); @@ -1136,7 +1136,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameObject) { } TEST(MatchExpressionParserLeafTest, TypeStringnameArray) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeArray = MatchExpressionParser::parse( fromjson("{a: {$type: 'array'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeArray.getStatus()); @@ -1147,7 +1147,7 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameArray) { } TEST(MatchExpressionParserLeafTest, TypeStringnameNumber) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumber = MatchExpressionParser::parse( fromjson("{a: {$type: 'number'}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(typeNumber.getStatus()); @@ -1159,21 +1159,21 @@ TEST(MatchExpressionParserLeafTest, TypeStringnameNumber) { } TEST(MatchExpressionParserLeafTest, InvalidTypeCodeLessThanMinKeyFailsToParse) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumber = MatchExpressionParser::parse( fromjson("{a: {$type: -20}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_NOT_OK(typeNumber.getStatus()); } TEST(MatchExpressionParserLeafTest, InvalidTypeCodeGreaterThanMaxKeyFailsToParse) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumber = MatchExpressionParser::parse( fromjson("{a: {$type: 400}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_NOT_OK(typeNumber.getStatus()); } TEST(MatchExpressionParserLeafTest, InvalidTypeCodeUnusedBetweenMinAndMaxFailsToParse) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression typeNumber = MatchExpressionParser::parse( fromjson("{a: {$type: 62}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT_NOT_OK(typeNumber.getStatus()); @@ -1187,7 +1187,7 @@ TEST(MatchExpressionParserLeafTest, ValidTypeCodesParseSuccessfully) { for (auto type : validTypes) { BSONObj predicate = BSON("a" << BSON("$type" << type)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; auto expression = MatchExpressionParser::parse( predicate, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(expression.getStatus()); @@ -1199,7 +1199,7 @@ TEST(MatchExpressionParserLeafTest, ValidTypeCodesParseSuccessfully) { TEST(MatchExpressionParserTest, BitTestMatchExpressionValidMask) { const double k2Power53 = scalbn(1, 32); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_OK(MatchExpressionParser::parse(BSON("a" << BSON("$bitsAllSet" << 54)), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1264,7 +1264,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionValidArray) { ASSERT_EQ(BSONType::NumberLong, bsonArrayLongLong[2].type()); ASSERT_EQ(BSONType::NumberLong, bsonArrayLongLong[3].type()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_OK(MatchExpressionParser::parse(BSON("a" << BSON("$bitsAllSet" << BSON_ARRAY(0))), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1327,7 +1327,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionValidArray) { } TEST(MatchExpressionParserTest, BitTestMatchExpressionValidBinData) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_OK( MatchExpressionParser::parse( fromjson("{a: {$bitsAllSet: {$binary: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAA', $type: '00'}}}"), @@ -1356,7 +1356,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionValidBinData) { } TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidMaskType) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_NOT_OK(MatchExpressionParser::parse(fromjson("{a: {$bitsAllSet: null}}"), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1425,7 +1425,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidMaskType) { TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidMaskValue) { const double kLongLongMaxAsDouble = scalbn(1, std::numeric_limits<long long>::digits); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_NOT_OK(MatchExpressionParser::parse(fromjson("{a: {$bitsAllSet: NaN}}"), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1500,7 +1500,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidMaskValue) { } TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidArray) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_NOT_OK(MatchExpressionParser::parse(fromjson("{a: {$bitsAllSet: [null]}}"), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); @@ -1615,7 +1615,7 @@ TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidArray) { } TEST(MatchExpressionParserTest, BitTestMatchExpressionInvalidArrayValue) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ASSERT_NOT_OK(MatchExpressionParser::parse(fromjson("{a: {$bitsAllSet: [-54]}}"), ExtensionsCallbackDisallowExtensions(), collator).getStatus()); diff --git a/src/mongo/db/matcher/expression_parser_test.cpp b/src/mongo/db/matcher/expression_parser_test.cpp index 35b55c0b9f6..d715bf46cfc 100644 --- a/src/mongo/db/matcher/expression_parser_test.cpp +++ b/src/mongo/db/matcher/expression_parser_test.cpp @@ -42,7 +42,7 @@ namespace mongo { TEST(MatchExpressionParserTest, SimpleEQ1) { BSONObj query = BSON("x" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -53,7 +53,7 @@ TEST(MatchExpressionParserTest, SimpleEQ1) { TEST(MatchExpressionParserTest, Multiple1) { BSONObj query = BSON("x" << 5 << "y" << BSON("$gt" << 5 << "$lt" << 8)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -67,7 +67,7 @@ TEST(MatchExpressionParserTest, Multiple1) { TEST(AtomicMatchExpressionTest, AtomicOperator1) { BSONObj query = BSON("x" << 5 << "$atomic" << BSON("$gt" << 5 << "$lt" << 8)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -83,7 +83,7 @@ TEST(AtomicMatchExpressionTest, AtomicOperator1) { TEST(MatchExpressionParserTest, MinDistanceWithoutNearFailsToParse) { BSONObj query = fromjson("{loc: {$minDistance: 10}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); diff --git a/src/mongo/db/matcher/expression_parser_tree_test.cpp b/src/mongo/db/matcher/expression_parser_tree_test.cpp index 01e52c33841..e3c17b7bc91 100644 --- a/src/mongo/db/matcher/expression_parser_tree_test.cpp +++ b/src/mongo/db/matcher/expression_parser_tree_test.cpp @@ -42,7 +42,7 @@ namespace mongo { TEST(MatchExpressionParserTreeTest, OR1) { BSONObj query = BSON("$or" << BSON_ARRAY(BSON("x" << 1) << BSON("y" << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -56,7 +56,7 @@ TEST(MatchExpressionParserTreeTest, OR1) { TEST(MatchExpressionParserTreeTest, OREmbedded) { BSONObj query1 = BSON("$or" << BSON_ARRAY(BSON("x" << 1) << BSON("y" << 2))); BSONObj query2 = BSON("$or" << BSON_ARRAY(query1)); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query2, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -70,7 +70,7 @@ TEST(MatchExpressionParserTreeTest, OREmbedded) { TEST(MatchExpressionParserTreeTest, AND1) { BSONObj query = BSON("$and" << BSON_ARRAY(BSON("x" << 1) << BSON("y" << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -85,7 +85,7 @@ TEST(MatchExpressionParserTreeTest, AND1) { TEST(MatchExpressionParserTreeTest, NOREmbedded) { BSONObj query = BSON("$nor" << BSON_ARRAY(BSON("x" << 1) << BSON("y" << 2))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -98,7 +98,7 @@ TEST(MatchExpressionParserTreeTest, NOREmbedded) { TEST(MatchExpressionParserTreeTest, NOT1) { BSONObj query = BSON("x" << BSON("$not" << BSON("$gt" << 5))); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); @@ -121,7 +121,7 @@ TEST(MatchExpressionParserTreeTest, MaximumTreeDepthNotExceed) { } BSONObj query = fromjson(ss.str()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(result.isOK()); @@ -141,7 +141,7 @@ TEST(MatchExpressionParserTreeTest, MaximumTreeDepthExceed) { } BSONObj query = fromjson(ss.str()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -162,7 +162,7 @@ TEST(MatchExpressionParserTreeTest, MaximumTreeDepthExceededNestedNots) { } BSONObj query = fromjson(ss.str()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -182,7 +182,7 @@ TEST(MatchExpressionParserTreeTest, MaximumTreeDepthExceededNestedElemMatch) { } BSONObj query = fromjson(ss.str()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_FALSE(result.isOK()); @@ -192,7 +192,7 @@ TEST(MatchExpressionParserLeafTest, NotRegex1) { BSONObjBuilder b; b.appendRegex("$not", "abc", "i"); BSONObj query = BSON("x" << b.obj()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression result = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(result.isOK()); diff --git a/src/mongo/db/matcher/expression_serialization_test.cpp b/src/mongo/db/matcher/expression_serialization_test.cpp index 43f6f6ebf25..3a764e420cd 100644 --- a/src/mongo/db/matcher/expression_serialization_test.cpp +++ b/src/mongo/db/matcher/expression_serialization_test.cpp @@ -51,7 +51,7 @@ BSONObj serialize(MatchExpression* match) { } TEST(SerializeBasic, AndExpressionWithOneChildSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$and: [{x: 0}]}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -66,7 +66,7 @@ TEST(SerializeBasic, AndExpressionWithOneChildSerializesCorrectly) { } TEST(SerializeBasic, AndExpressionWithTwoChildrenSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$and: [{x: 1}, {x: 2}]}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -81,7 +81,7 @@ TEST(SerializeBasic, AndExpressionWithTwoChildrenSerializesCorrectly) { } TEST(SerializeBasic, AndExpressionWithTwoIdenticalChildrenSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$and: [{x: 1}, {x: 1}]}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -96,7 +96,7 @@ TEST(SerializeBasic, AndExpressionWithTwoIdenticalChildrenSerializesCorrectly) { } TEST(SerializeBasic, ExpressionOr) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$or: [{x: 'A'}, {x: 'B'}]}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -111,7 +111,7 @@ TEST(SerializeBasic, ExpressionOr) { } TEST(SerializeBasic, ExpressionElemMatchObjectSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$elemMatch: {a: {$gt: 0}, b: {$gt: 0}}}}"), ExtensionsCallbackNoop(), collator); @@ -129,7 +129,7 @@ TEST(SerializeBasic, ExpressionElemMatchObjectSerializesCorrectly) { } TEST(SerializeBasic, ExpressionElemMatchObjectWithEmptyStringSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{'': {$elemMatch: {a: {$gt: 0}, b: {$gt: 0}}}}"), ExtensionsCallbackNoop(), collator); @@ -147,7 +147,7 @@ TEST(SerializeBasic, ExpressionElemMatchObjectWithEmptyStringSerializesCorrectly } TEST(SerializeBasic, ExpressionElemMatchValueSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson("{x: {$elemMatch: {$lt: 1, $gt: -1}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( @@ -166,7 +166,7 @@ TEST(SerializeBasic, ExpressionElemMatchValueSerializesCorrectly) { } TEST(SerializeBasic, ExpressionElemMatchValueWithEmptyStringSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson("{x: {$elemMatch: {$lt: 1, $gt: -1}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( @@ -185,7 +185,7 @@ TEST(SerializeBasic, ExpressionElemMatchValueWithEmptyStringSerializesCorrectly) } TEST(SerializeBasic, ExpressionSizeSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$size: 2}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -200,7 +200,7 @@ TEST(SerializeBasic, ExpressionSizeSerializesCorrectly) { } TEST(SerializeBasic, ExpressionAllSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$all: [1, 2]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -215,7 +215,7 @@ TEST(SerializeBasic, ExpressionAllSerializesCorrectly) { } TEST(SerializeBasic, ExpressionAllWithEmptyArraySerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$all: []}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -227,7 +227,7 @@ TEST(SerializeBasic, ExpressionAllWithEmptyArraySerializesCorrectly) { } TEST(SerializeBasic, ExpressionAllWithRegex) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson("{x: {$all: [/a.b.c/, /.d.e./]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( @@ -243,7 +243,7 @@ TEST(SerializeBasic, ExpressionAllWithRegex) { } TEST(SerializeBasic, ExpressionEqSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$eq: {a: 1}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -261,7 +261,7 @@ TEST(SerializeBasic, ExpressionEqSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNeSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$ne: {a: 1}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -276,7 +276,7 @@ TEST(SerializeBasic, ExpressionNeSerializesCorrectly) { } TEST(SerializeBasic, ExpressionLtSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$lt: 3}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -291,7 +291,7 @@ TEST(SerializeBasic, ExpressionLtSerializesCorrectly) { } TEST(SerializeBasic, ExpressionGtSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$gt: 3}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -306,7 +306,7 @@ TEST(SerializeBasic, ExpressionGtSerializesCorrectly) { } TEST(SerializeBasic, ExpressionGteSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$gte: 3}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -321,7 +321,7 @@ TEST(SerializeBasic, ExpressionGteSerializesCorrectly) { } TEST(SerializeBasic, ExpressionLteSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$lte: 3}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -336,7 +336,7 @@ TEST(SerializeBasic, ExpressionLteSerializesCorrectly) { } TEST(SerializeBasic, ExpressionRegexWithObjSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$regex: 'a.b'}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -351,7 +351,7 @@ TEST(SerializeBasic, ExpressionRegexWithObjSerializesCorrectly) { } TEST(SerializeBasic, ExpressionRegexWithValueSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: /a.b/i}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -366,7 +366,7 @@ TEST(SerializeBasic, ExpressionRegexWithValueSerializesCorrectly) { } TEST(SerializeBasic, ExpressionRegexWithValueAndOptionsSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: /a.b/}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -381,7 +381,7 @@ TEST(SerializeBasic, ExpressionRegexWithValueAndOptionsSerializesCorrectly) { } TEST(SerializeBasic, ExpressionRegexWithEqObjSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$eq: {$regex: 'a.b'}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -399,7 +399,7 @@ TEST(SerializeBasic, ExpressionRegexWithEqObjSerializesCorrectly) { } TEST(SerializeBasic, ExpressionModSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$mod: [2, 1]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -414,7 +414,7 @@ TEST(SerializeBasic, ExpressionModSerializesCorrectly) { } TEST(SerializeBasic, ExpressionExistsTrueSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$exists: true}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -429,7 +429,7 @@ TEST(SerializeBasic, ExpressionExistsTrueSerializesCorrectly) { } TEST(SerializeBasic, ExpressionExistsFalseSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$exists: false}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -444,7 +444,7 @@ TEST(SerializeBasic, ExpressionExistsFalseSerializesCorrectly) { } TEST(SerializeBasic, ExpressionInSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$in: [1, 2, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -462,7 +462,7 @@ TEST(SerializeBasic, ExpressionInSerializesCorrectly) { } TEST(SerializeBasic, ExpressionInWithEmptyArraySerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$in: []}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -474,7 +474,7 @@ TEST(SerializeBasic, ExpressionInWithEmptyArraySerializesCorrectly) { } TEST(SerializeBasic, ExpressionInWithRegexSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$in: [/\\d+/, /\\w+/]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -492,7 +492,7 @@ TEST(SerializeBasic, ExpressionInWithRegexSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNinSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$nin: [1, 2, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -510,7 +510,7 @@ TEST(SerializeBasic, ExpressionNinSerializesCorrectly) { } TEST(SerializeBasic, ExpressionBitsAllSetSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$bitsAllSet: [1, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -525,7 +525,7 @@ TEST(SerializeBasic, ExpressionBitsAllSetSerializesCorrectly) { } TEST(SerializeBasic, ExpressionBitsAllClearSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$bitsAllClear: [1, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -540,7 +540,7 @@ TEST(SerializeBasic, ExpressionBitsAllClearSerializesCorrectly) { } TEST(SerializeBasic, ExpressionBitsAnySetSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$bitsAnySet: [1, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -555,7 +555,7 @@ TEST(SerializeBasic, ExpressionBitsAnySetSerializesCorrectly) { } TEST(SerializeBasic, ExpressionBitsAnyClearSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$bitsAnyClear: [1, 3]}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -573,7 +573,7 @@ TEST(SerializeBasic, ExpressionBitsAnyClearSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$not: {$eq: 3}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -588,7 +588,7 @@ TEST(SerializeBasic, ExpressionNotSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithMultipleChildrenSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$not: {$lt: 1, $gt: 3}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -604,7 +604,7 @@ TEST(SerializeBasic, ExpressionNotWithMultipleChildrenSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithBitTestSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson("{x: {$not: {$bitsAnySet: [1, 3]}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( @@ -620,7 +620,7 @@ TEST(SerializeBasic, ExpressionNotWithBitTestSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithRegexObjSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$not: {$regex: 'a.b'}}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -635,7 +635,7 @@ TEST(SerializeBasic, ExpressionNotWithRegexObjSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithRegexValueSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$not: /a.b/}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -650,7 +650,7 @@ TEST(SerializeBasic, ExpressionNotWithRegexValueSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithRegexValueAndOptionsSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$not: /a.b/i}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -665,7 +665,7 @@ TEST(SerializeBasic, ExpressionNotWithRegexValueAndOptionsSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNotWithGeoSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson( "{x: {$not: {$geoIntersects: {$geometry: {type: 'Polygon', " "coordinates: [[[0,0], [5,0], " @@ -696,7 +696,7 @@ TEST(SerializeBasic, ExpressionNotWithGeoSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNorSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson("{$nor: [{x: 3}, {x: {$lt: 1}}]}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( @@ -715,7 +715,7 @@ TEST(SerializeBasic, ExpressionNorSerializesCorrectly) { } TEST(SerializeBasic, ExpressionTypeSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$type: 2}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -730,7 +730,7 @@ TEST(SerializeBasic, ExpressionTypeSerializesCorrectly) { } TEST(SerializeBasic, ExpressionTypeWithNumberSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{x: {$type: 'number'}}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -745,7 +745,7 @@ TEST(SerializeBasic, ExpressionTypeWithNumberSerializesCorrectly) { } TEST(SerializeBasic, ExpressionEmptySerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -757,7 +757,7 @@ TEST(SerializeBasic, ExpressionEmptySerializesCorrectly) { } TEST(SerializeBasic, ExpressionWhereSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$where: 'this.a == this.b'}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -767,7 +767,7 @@ TEST(SerializeBasic, ExpressionWhereSerializesCorrectly) { } TEST(SerializeBasic, ExpressionWhereWithScopeSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(BSON("$where" << BSONCodeWScope("this.a == this.b", BSON("x" << 3))), ExtensionsCallbackNoop(), collator); @@ -779,7 +779,7 @@ TEST(SerializeBasic, ExpressionWhereWithScopeSerializesCorrectly) { } TEST(SerializeBasic, ExpressionCommentSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$comment: 'Hello'}"), ExtensionsCallbackNoop(), collator); Matcher reserialized( serialize(original.getMatchExpression()), ExtensionsCallbackNoop(), collator); @@ -794,7 +794,7 @@ TEST(SerializeBasic, ExpressionCommentSerializesCorrectly) { } TEST(SerializeBasic, ExpressionGeoWithinSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson( "{x: {$geoWithin: {$geometry: " @@ -817,7 +817,7 @@ TEST(SerializeBasic, ExpressionGeoWithinSerializesCorrectly) { } TEST(SerializeBasic, ExpressionGeoIntersectsSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson( "{x: {$geoIntersects: {$geometry: {type: 'Polygon', coordinates: [[[0,0], [5,0], [5, " @@ -847,7 +847,7 @@ TEST(SerializeBasic, ExpressionGeoIntersectsSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNearSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson( "{x: {$near: {$geometry: {type: 'Point', coordinates: [0, 0]}, $maxDistance: 10, " @@ -864,7 +864,7 @@ TEST(SerializeBasic, ExpressionNearSerializesCorrectly) { } TEST(SerializeBasic, ExpressionNearSphereSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original( fromjson( "{x: {$nearSphere: {$geometry: {type: 'Point', coordinates: [0, 0]}, $maxDistance: 10, " @@ -881,7 +881,7 @@ TEST(SerializeBasic, ExpressionNearSphereSerializesCorrectly) { } TEST(SerializeBasic, ExpressionTextSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$text: {$search: 'a', $language: 'en', $caseSensitive: true}}"), ExtensionsCallbackNoop(), collator); @@ -895,7 +895,7 @@ TEST(SerializeBasic, ExpressionTextSerializesCorrectly) { } TEST(SerializeBasic, ExpressionTextWithDefaultLanguageSerializesCorrectly) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; Matcher original(fromjson("{$text: {$search: 'a', $caseSensitive: false}}"), ExtensionsCallbackNoop(), collator); diff --git a/src/mongo/db/matcher/expression_test.cpp b/src/mongo/db/matcher/expression_test.cpp index 57e8f1c8f7f..1ca7eefa856 100644 --- a/src/mongo/db/matcher/expression_test.cpp +++ b/src/mongo/db/matcher/expression_test.cpp @@ -47,7 +47,7 @@ TEST(MatchExpressionTest, Parse1) { TEST(LeafMatchExpressionTest, Equal1) { BSONObj temp = BSON("x" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression e(collator); e.init("x", temp["x"]); @@ -67,7 +67,7 @@ TEST(LeafMatchExpressionTest, Comp1) { BSONObj temp = BSON("x" << 5); { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTEMatchExpression e(collator); e.init("x", temp["x"]); ASSERT_TRUE(e.matchesBSON(fromjson("{ x : 5 }"))); @@ -77,7 +77,7 @@ TEST(LeafMatchExpressionTest, Comp1) { } { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; LTMatchExpression e(collator); e.init("x", temp["x"]); ASSERT_FALSE(e.matchesBSON(fromjson("{ x : 5 }"))); @@ -87,7 +87,7 @@ TEST(LeafMatchExpressionTest, Comp1) { } { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTEMatchExpression e(collator); e.init("x", temp["x"]); ASSERT_TRUE(e.matchesBSON(fromjson("{ x : 5 }"))); @@ -97,7 +97,7 @@ TEST(LeafMatchExpressionTest, Comp1) { } { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; GTMatchExpression e(collator); e.init("x", temp["x"]); ASSERT_FALSE(e.matchesBSON(fromjson("{ x : 5 }"))); diff --git a/src/mongo/db/matcher/expression_tree_test.cpp b/src/mongo/db/matcher/expression_tree_test.cpp index e8aa987ab32..9799f25ccc4 100644 --- a/src/mongo/db/matcher/expression_tree_test.cpp +++ b/src/mongo/db/matcher/expression_tree_test.cpp @@ -42,7 +42,7 @@ using std::unique_ptr; TEST(NotMatchExpression, MatchesScalar) { BSONObj baseOperand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> lt(new LTMatchExpression(collator)); ASSERT(lt->init("a", baseOperand["$lt"]).isOK()); NotMatchExpression notOp; @@ -53,7 +53,7 @@ TEST(NotMatchExpression, MatchesScalar) { TEST(NotMatchExpression, MatchesArray) { BSONObj baseOperand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> lt(new LTMatchExpression(collator)); ASSERT(lt->init("a", baseOperand["$lt"]).isOK()); NotMatchExpression notOp; @@ -66,7 +66,7 @@ TEST(NotMatchExpression, MatchesArray) { TEST(NotMatchExpression, ElemMatchKey) { BSONObj baseOperand = BSON("$lt" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> lt(new LTMatchExpression(collator)); ASSERT(lt->init("a", baseOperand["$lt"]).isOK()); NotMatchExpression notOp; @@ -130,7 +130,7 @@ TEST(AndOp, MatchesElementThreeClauses) { BSONObj notMatch3 = BSON("a" << "r"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new LTMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["$lt"]).isOK()); unique_ptr<ComparisonMatchExpression> sub2(new GTMatchExpression(collator)); @@ -151,7 +151,7 @@ TEST(AndOp, MatchesElementThreeClauses) { TEST(AndOp, MatchesSingleClause) { BSONObj baseOperand = BSON("$ne" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("a", baseOperand["$ne"]).isOK()); unique_ptr<NotMatchExpression> ne(new NotMatchExpression()); @@ -171,7 +171,7 @@ TEST(AndOp, MatchesThreeClauses) { BSONObj baseOperand2 = BSON("$lt" << 10); BSONObj baseOperand3 = BSON("$lt" << 100); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new GTMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["$gt"]).isOK()); @@ -197,7 +197,7 @@ TEST(AndOp, ElemMatchKey) { BSONObj baseOperand1 = BSON("a" << 1); BSONObj baseOperand2 = BSON("b" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new EqualityMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["a"]).isOK()); @@ -318,7 +318,7 @@ TEST( OrOp, MatchesElementThreeClauses ) { */ TEST(OrOp, MatchesSingleClause) { BSONObj baseOperand = BSON("$ne" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("a", baseOperand["$ne"]).isOK()); unique_ptr<NotMatchExpression> ne(new NotMatchExpression()); @@ -337,7 +337,7 @@ TEST(OrOp, MatchesThreeClauses) { BSONObj baseOperand1 = BSON("$gt" << 10); BSONObj baseOperand2 = BSON("$lt" << 0); BSONObj baseOperand3 = BSON("b" << 100); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new GTMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["$gt"]).isOK()); unique_ptr<ComparisonMatchExpression> sub2(new LTMatchExpression(collator)); @@ -362,7 +362,7 @@ TEST(OrOp, MatchesThreeClauses) { TEST(OrOp, ElemMatchKey) { BSONObj baseOperand1 = BSON("a" << 1); BSONObj baseOperand2 = BSON("b" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new EqualityMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["a"]).isOK()); unique_ptr<ComparisonMatchExpression> sub2(new EqualityMatchExpression(collator)); @@ -482,7 +482,7 @@ TEST( NorOp, MatchesElementThreeClauses ) { TEST(NorOp, MatchesSingleClause) { BSONObj baseOperand = BSON("$ne" << 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> eq(new EqualityMatchExpression(collator)); ASSERT(eq->init("a", baseOperand["$ne"]).isOK()); unique_ptr<NotMatchExpression> ne(new NotMatchExpression()); @@ -502,7 +502,7 @@ TEST(NorOp, MatchesThreeClauses) { BSONObj baseOperand2 = BSON("$lt" << 0); BSONObj baseOperand3 = BSON("b" << 100); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new GTMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["$gt"]).isOK()); unique_ptr<ComparisonMatchExpression> sub2(new LTMatchExpression(collator)); @@ -527,7 +527,7 @@ TEST(NorOp, MatchesThreeClauses) { TEST(NorOp, ElemMatchKey) { BSONObj baseOperand1 = BSON("a" << 1); BSONObj baseOperand2 = BSON("b" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; unique_ptr<ComparisonMatchExpression> sub1(new EqualityMatchExpression(collator)); ASSERT(sub1->init("a", baseOperand1["a"]).isOK()); unique_ptr<ComparisonMatchExpression> sub2(new EqualityMatchExpression(collator)); @@ -552,7 +552,7 @@ TEST(NorOp, ElemMatchKey) { TEST(NorOp, Equivalent) { BSONObj baseOperand1 = BSON("a" << 1); BSONObj baseOperand2 = BSON("b" << 2); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; EqualityMatchExpression sub1(collator); ASSERT(sub1.init("a", baseOperand1["a"]).isOK()); EqualityMatchExpression sub2(collator); @@ -568,20 +568,4 @@ TEST(NorOp, Equivalent) { ASSERT(e1.equivalent(&e1)); ASSERT(!e1.equivalent(&e2)); } - -/** -TEST( NorOp, MatchesIndexKey ) { - BSONObj baseOperand = BSON( "a" << 5 ); - unique_ptr<ComparisonMatchExpression> eq( new ComparisonMatchExpression() ); - ASSERT( eq->init( "a", baseOperand[ "a" ] ).isOK() ); - OwnedPointerVector<MatchMatchExpression> subMatchExpressions; - subMatchExpressions.mutableVector().push_back( eq.release() ); - NorOp norOp; - ASSERT( norOp.init( &subMatchExpressions ).isOK() ); - IndexSpec indexSpec( BSON( "a" << 1 ) ); - BSONObj indexKey = BSON( "" << "7" ); - ASSERT( MatchMatchExpression::PartialMatchResult_Unknown == - norOp.matchesIndexKey( indexKey, indexSpec ) ); -} -*/ } diff --git a/src/mongo/db/matcher/matcher.cpp b/src/mongo/db/matcher/matcher.cpp index 0668848c4ad..6fa7eec44b5 100644 --- a/src/mongo/db/matcher/matcher.cpp +++ b/src/mongo/db/matcher/matcher.cpp @@ -43,7 +43,7 @@ namespace mongo { Matcher::Matcher(const BSONObj& pattern, const ExtensionsCallback& extensionsCallback, - CollatorInterface* collator) + const CollatorInterface* collator) : _pattern(pattern) { StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse(pattern, extensionsCallback, collator); diff --git a/src/mongo/db/matcher/matcher.h b/src/mongo/db/matcher/matcher.h index 3d64908036e..e37a6a0a3b5 100644 --- a/src/mongo/db/matcher/matcher.h +++ b/src/mongo/db/matcher/matcher.h @@ -55,7 +55,7 @@ public: */ explicit Matcher(const BSONObj& pattern, const ExtensionsCallback& extensionsCallback, - CollatorInterface* collator); + const CollatorInterface* collator); bool matches(const BSONObj& doc, MatchDetails* details = NULL) const; diff --git a/src/mongo/db/ops/modifier_interface.h b/src/mongo/db/ops/modifier_interface.h index 6afe4547034..4eeaa773fe8 100644 --- a/src/mongo/db/ops/modifier_interface.h +++ b/src/mongo/db/ops/modifier_interface.h @@ -154,19 +154,19 @@ public: */ struct ModifierInterface::Options { Options() = default; - Options(bool repl, bool ofs, CollatorInterface* collator) + Options(bool repl, bool ofs, const CollatorInterface* collator) : fromReplication(repl), enforceOkForStorage(ofs), collator(collator) {} - static Options normal(CollatorInterface* collator = nullptr) { + static Options normal(const CollatorInterface* collator = nullptr) { return Options(false, true, collator); } - static Options fromRepl(CollatorInterface* collator = nullptr) { + static Options fromRepl(const CollatorInterface* collator = nullptr) { return Options(true, false, collator); } bool fromReplication = false; bool enforceOkForStorage = true; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; }; struct ModifierInterface::ExecInfo { diff --git a/src/mongo/db/ops/modifier_pull.h b/src/mongo/db/ops/modifier_pull.h index f6618f17155..a8238ea60eb 100644 --- a/src/mongo/db/ops/modifier_pull.h +++ b/src/mongo/db/ops/modifier_pull.h @@ -80,7 +80,7 @@ private: // The collator which must be used for matching strings. Null if we should use a simple binary // comparison. - CollatorInterface* _collator = nullptr; + const CollatorInterface* _collator = nullptr; struct PreparedState; std::unique_ptr<PreparedState> _preparedState; diff --git a/src/mongo/db/ops/modifier_pull_test.cpp b/src/mongo/db/ops/modifier_pull_test.cpp index 64c99ab83c5..d4d2fe12bda 100644 --- a/src/mongo/db/ops/modifier_pull_test.cpp +++ b/src/mongo/db/ops/modifier_pull_test.cpp @@ -64,7 +64,7 @@ public: ModifierInterface::Options::normal())); } - Mod(BSONObj modObj, CollatorInterface* collator) : _modObj(modObj), _mod() { + Mod(BSONObj modObj, const CollatorInterface* collator) : _modObj(modObj), _mod() { ASSERT_OK(_mod.init(_modObj["$pull"].embeddedObject().firstElement(), ModifierInterface::Options::normal(collator))); } diff --git a/src/mongo/db/ops/path_support_test.cpp b/src/mongo/db/ops/path_support_test.cpp index a5d5e060de9..01345564ccd 100644 --- a/src/mongo/db/ops/path_support_test.cpp +++ b/src/mongo/db/ops/path_support_test.cpp @@ -521,7 +521,7 @@ TEST_F(ArrayDoc, NonNumericPathInArray) { // static MatchExpression* makeExpr(const BSONObj& exprBSON) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; return MatchExpressionParser::parse(exprBSON, ExtensionsCallbackDisallowExtensions(), collator) .getValue() .release(); diff --git a/src/mongo/db/query/canonical_query_test.cpp b/src/mongo/db/query/canonical_query_test.cpp index dcfbefcaf77..05c95409f7e 100644 --- a/src/mongo/db/query/canonical_query_test.cpp +++ b/src/mongo/db/query/canonical_query_test.cpp @@ -51,7 +51,7 @@ static const NamespaceString nss("testdb.testcoll"); * and return the MatchExpression*. */ MatchExpression* parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackNoop(), collator); if (!status.isOK()) { diff --git a/src/mongo/db/query/collation/collation_index_key.cpp b/src/mongo/db/query/collation/collation_index_key.cpp index 8d30061d8a9..eb25acc3f79 100644 --- a/src/mongo/db/query/collation/collation_index_key.cpp +++ b/src/mongo/db/query/collation/collation_index_key.cpp @@ -37,14 +37,15 @@ namespace mongo { // TODO SERVER-23172: Update this to consider strings inside nested objects or arrays. -bool CollationIndexKey::shouldUseCollationIndexKey(BSONElement elt, CollatorInterface* collator) { +bool CollationIndexKey::shouldUseCollationIndexKey(BSONElement elt, + const CollatorInterface* collator) { return collator && elt.type() == BSONType::String; } // TODO SERVER-23172: Update this to convert strings inside nested objects or arrays to their // corresponding comparison keys. void CollationIndexKey::collationAwareIndexKeyAppend(BSONElement elt, - CollatorInterface* collator, + const CollatorInterface* collator, BSONObjBuilder* out) { if (shouldUseCollationIndexKey(elt, collator)) { auto comparisonKey = collator->getComparisonKey(elt.valueStringData()); diff --git a/src/mongo/db/query/collation/collation_index_key.h b/src/mongo/db/query/collation/collation_index_key.h index 480ab464934..7d86935b11a 100644 --- a/src/mongo/db/query/collation/collation_index_key.h +++ b/src/mongo/db/query/collation/collation_index_key.h @@ -43,14 +43,14 @@ public: /** * Returns true if the index key for 'elt' should be a comparison key generated by 'collator'. */ - static bool shouldUseCollationIndexKey(BSONElement elt, CollatorInterface* collator); + static bool shouldUseCollationIndexKey(BSONElement elt, const CollatorInterface* collator); /** * Appends 'elt' to 'out' with an empty field name, converting strings to comparison keys * generated by 'collator' if necessary. */ static void collationAwareIndexKeyAppend(BSONElement elt, - CollatorInterface* collator, + const CollatorInterface* collator, BSONObjBuilder* out); }; diff --git a/src/mongo/db/query/collation/collator_interface.h b/src/mongo/db/query/collation/collator_interface.h index 962ccadb718..c86e1390fa5 100644 --- a/src/mongo/db/query/collation/collator_interface.h +++ b/src/mongo/db/query/collation/collator_interface.h @@ -95,13 +95,13 @@ public: * 0 if 'left' is greater than 'right' w.r.t. the collation, and 0 if 'left' and 'right' are * equal w.r.t. the collation. */ - virtual int compare(StringData left, StringData right) = 0; + virtual int compare(StringData left, StringData right) const = 0; /** * Returns the comparison key for 'stringData', according to this collation. See ComparisonKey's * comments for details. */ - virtual ComparisonKey getComparisonKey(StringData stringData) = 0; + virtual ComparisonKey getComparisonKey(StringData stringData) const = 0; /** * Returns whether this collation has the same matching and sorting semantics as 'other'. diff --git a/src/mongo/db/query/collation/collator_interface_icu.cpp b/src/mongo/db/query/collation/collator_interface_icu.cpp index 7a6dbc2df8f..01895284cbe 100644 --- a/src/mongo/db/query/collation/collator_interface_icu.cpp +++ b/src/mongo/db/query/collation/collator_interface_icu.cpp @@ -40,7 +40,7 @@ CollatorInterfaceICU::CollatorInterfaceICU(CollationSpec spec, std::unique_ptr<icu::Collator> collator) : CollatorInterface(std::move(spec)), _collator(std::move(collator)) {} -int CollatorInterfaceICU::compare(StringData left, StringData right) { +int CollatorInterfaceICU::compare(StringData left, StringData right) const { UErrorCode status = U_ZERO_ERROR; auto compareResult = _collator->compareUTF8(icu::StringPiece(left.rawData(), left.size()), icu::StringPiece(right.rawData(), right.size()), @@ -63,7 +63,8 @@ int CollatorInterfaceICU::compare(StringData left, StringData right) { MONGO_UNREACHABLE; } -CollatorInterface::ComparisonKey CollatorInterfaceICU::getComparisonKey(StringData stringData) { +CollatorInterface::ComparisonKey CollatorInterfaceICU::getComparisonKey( + StringData stringData) const { // A StringPiece is ICU's StringData. They are logically the same abstraction. const icu::StringPiece stringPiece(stringData.rawData(), stringData.size()); diff --git a/src/mongo/db/query/collation/collator_interface_icu.h b/src/mongo/db/query/collation/collator_interface_icu.h index d4e3c15e804..a706ee1341d 100644 --- a/src/mongo/db/query/collation/collator_interface_icu.h +++ b/src/mongo/db/query/collation/collator_interface_icu.h @@ -43,9 +43,9 @@ class CollatorInterfaceICU final : public CollatorInterface { public: CollatorInterfaceICU(CollationSpec spec, std::unique_ptr<icu::Collator> collator); - int compare(StringData left, StringData right) final; + int compare(StringData left, StringData right) const final; - ComparisonKey getComparisonKey(StringData stringData) final; + ComparisonKey getComparisonKey(StringData stringData) const final; private: // The ICU implementation of the collator to which we delegate interesting work. Const methods diff --git a/src/mongo/db/query/collation/collator_interface_mock.cpp b/src/mongo/db/query/collation/collator_interface_mock.cpp index 42a8234bb67..e6bf1799f38 100644 --- a/src/mongo/db/query/collation/collator_interface_mock.cpp +++ b/src/mongo/db/query/collation/collator_interface_mock.cpp @@ -54,7 +54,7 @@ std::string mockTypeToString(CollatorInterfaceMock::MockType type) { CollatorInterfaceMock::CollatorInterfaceMock(MockType mockType) : CollatorInterface(CollationSpec(mockTypeToString(mockType))), _mockType(mockType) {} -int CollatorInterfaceMock::compare(StringData left, StringData right) { +int CollatorInterfaceMock::compare(StringData left, StringData right) const { switch (_mockType) { case MockType::kReverseString: { std::string leftString = left.toString(); @@ -72,7 +72,8 @@ int CollatorInterfaceMock::compare(StringData left, StringData right) { MONGO_UNREACHABLE; } -CollatorInterface::ComparisonKey CollatorInterfaceMock::getComparisonKey(StringData stringData) { +CollatorInterface::ComparisonKey CollatorInterfaceMock::getComparisonKey( + StringData stringData) const { switch (_mockType) { case MockType::kReverseString: { std::string keyDataString = stringData.toString(); diff --git a/src/mongo/db/query/collation/collator_interface_mock.h b/src/mongo/db/query/collation/collator_interface_mock.h index 9175358c8aa..a5191502d0c 100644 --- a/src/mongo/db/query/collation/collator_interface_mock.h +++ b/src/mongo/db/query/collation/collator_interface_mock.h @@ -57,9 +57,9 @@ public: */ CollatorInterfaceMock(MockType mockType); - int compare(StringData left, StringData right) final; + int compare(StringData left, StringData right) const final; - ComparisonKey getComparisonKey(StringData stringData) final; + ComparisonKey getComparisonKey(StringData stringData) const final; private: const MockType _mockType; diff --git a/src/mongo/db/query/index_bounds_builder.cpp b/src/mongo/db/query/index_bounds_builder.cpp index 859caf4b737..40ea382c8f8 100644 --- a/src/mongo/db/query/index_bounds_builder.cpp +++ b/src/mongo/db/query/index_bounds_builder.cpp @@ -769,7 +769,8 @@ Interval IndexBoundsBuilder::makePointInterval(double d) { } // static -BSONObj IndexBoundsBuilder::objFromElement(const BSONElement& elt, CollatorInterface* collator) { +BSONObj IndexBoundsBuilder::objFromElement(const BSONElement& elt, + const CollatorInterface* collator) { BSONObjBuilder bob; CollationIndexKey::collationAwareIndexKeyAppend(elt, collator, &bob); return bob.obj(); diff --git a/src/mongo/db/query/index_bounds_builder.h b/src/mongo/db/query/index_bounds_builder.h index 2a1adbd1241..b37901f6d2d 100644 --- a/src/mongo/db/query/index_bounds_builder.h +++ b/src/mongo/db/query/index_bounds_builder.h @@ -131,7 +131,7 @@ public: * string, and 'collator' is non-null, the result contains the collator-generated comparison key * rather than the original string. */ - static BSONObj objFromElement(const BSONElement& elt, CollatorInterface* collator); + static BSONObj objFromElement(const BSONElement& elt, const CollatorInterface* collator); /** * Swap start/end in the provided interval. diff --git a/src/mongo/db/query/index_bounds_builder_test.cpp b/src/mongo/db/query/index_bounds_builder_test.cpp index 3380562599b..4d93b8b63c9 100644 --- a/src/mongo/db/query/index_bounds_builder_test.cpp +++ b/src/mongo/db/query/index_bounds_builder_test.cpp @@ -59,7 +59,7 @@ double NaN = numeric_limits<double>::quiet_NaN(); * Utility function to create MatchExpression */ MatchExpression* parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(status.isOK()); diff --git a/src/mongo/db/query/index_entry.h b/src/mongo/db/query/index_entry.h index 8af72ce93db..7b336515954 100644 --- a/src/mongo/db/query/index_entry.h +++ b/src/mongo/db/query/index_entry.h @@ -125,7 +125,7 @@ struct IndexEntry { // Null if this index orders strings according to the simple binary compare. If non-null, // represents the collator used to generate index keys for indexed strings. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; }; } // namespace mongo diff --git a/src/mongo/db/query/parsed_projection.cpp b/src/mongo/db/query/parsed_projection.cpp index 199b9abe557..f3ebf7736b0 100644 --- a/src/mongo/db/query/parsed_projection.cpp +++ b/src/mongo/db/query/parsed_projection.cpp @@ -127,7 +127,7 @@ Status ParsedProjection::make(const BSONObj& spec, // only parsing here in order to ensure that the elemMatch projection is valid. // // TODO: Is there a faster way of validating the elemMatchObj? - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse(elemMatchObj, extensionsCallback, collator); if (!statusWithMatcher.isOK()) { diff --git a/src/mongo/db/query/parsed_projection_test.cpp b/src/mongo/db/query/parsed_projection_test.cpp index 5b246d8f4d4..90f1b9bfb5c 100644 --- a/src/mongo/db/query/parsed_projection_test.cpp +++ b/src/mongo/db/query/parsed_projection_test.cpp @@ -47,7 +47,7 @@ using namespace mongo; // unique_ptr<ParsedProjection> createParsedProjection(const BSONObj& query, const BSONObj& projObj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(statusWithMatcher.isOK()); @@ -76,7 +76,7 @@ unique_ptr<ParsedProjection> createParsedProjection(const char* queryStr, const void assertInvalidProjection(const char* queryStr, const char* projStr) { BSONObj query = fromjson(queryStr); BSONObj projObj = fromjson(projStr); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(statusWithMatcher.isOK()); diff --git a/src/mongo/db/query/plan_cache_indexability_test.cpp b/src/mongo/db/query/plan_cache_indexability_test.cpp index 9d64ea157c2..48abdc58c89 100644 --- a/src/mongo/db/query/plan_cache_indexability_test.cpp +++ b/src/mongo/db/query/plan_cache_indexability_test.cpp @@ -36,7 +36,7 @@ namespace mongo { namespace { std::unique_ptr<MatchExpression> parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); if (!status.isOK()) { diff --git a/src/mongo/db/query/plan_cache_test.cpp b/src/mongo/db/query/plan_cache_test.cpp index 51ae170d3ae..61e803af8af 100644 --- a/src/mongo/db/query/plan_cache_test.cpp +++ b/src/mongo/db/query/plan_cache_test.cpp @@ -151,7 +151,7 @@ unique_ptr<CanonicalQuery> canonicalize(const char* queryStr, * Utility function to create MatchExpression */ unique_ptr<MatchExpression> parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); if (!status.isOK()) { diff --git a/src/mongo/db/query/planner_ixselect_test.cpp b/src/mongo/db/query/planner_ixselect_test.cpp index 47c64a049ae..14c46e47970 100644 --- a/src/mongo/db/query/planner_ixselect_test.cpp +++ b/src/mongo/db/query/planner_ixselect_test.cpp @@ -53,7 +53,7 @@ using std::vector; * Utility function to create MatchExpression */ unique_ptr<MatchExpression> parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_TRUE(status.isOK()); diff --git a/src/mongo/db/query/query_planner_params.h b/src/mongo/db/query/query_planner_params.h index cfba6b82b50..b9bbfead272 100644 --- a/src/mongo/db/query/query_planner_params.h +++ b/src/mongo/db/query/query_planner_params.h @@ -121,7 +121,7 @@ struct QueryPlannerParams { // The collation which this query must respect. Distinct from the CollatorInterfaces attached to // the IndexEntry instances, which give the physical properties of the indices rather than the // logical collation which the query must use. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; }; } // namespace mongo diff --git a/src/mongo/db/query/query_planner_test_fixture.cpp b/src/mongo/db/query/query_planner_test_fixture.cpp index 288c010c8dd..0e336528b45 100644 --- a/src/mongo/db/query/query_planner_test_fixture.cpp +++ b/src/mongo/db/query/query_planner_test_fixture.cpp @@ -122,7 +122,7 @@ void QueryPlannerTest::addIndex(BSONObj keyPattern, const MultikeyPaths& multike params.indices.push_back(entry); } -void QueryPlannerTest::addIndex(BSONObj keyPattern, CollatorInterface* collator) { +void QueryPlannerTest::addIndex(BSONObj keyPattern, const CollatorInterface* collator) { const bool sparse = false; const bool unique = false; const bool multikey = false; @@ -374,7 +374,7 @@ void QueryPlannerTest::assertHasOneSolutionOf(const std::vector<std::string>& so } std::unique_ptr<MatchExpression> QueryPlannerTest::parseMatchExpression(const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression status = MatchExpressionParser::parse(obj, ExtensionsCallbackDisallowExtensions(), collator); if (!status.isOK()) { diff --git a/src/mongo/db/query/query_planner_test_fixture.h b/src/mongo/db/query/query_planner_test_fixture.h index 5ef2490e171..0a2bfcc8b1a 100644 --- a/src/mongo/db/query/query_planner_test_fixture.h +++ b/src/mongo/db/query/query_planner_test_fixture.h @@ -63,7 +63,7 @@ protected: void addIndex(BSONObj keyPattern, const MultikeyPaths& multikeyPaths); - void addIndex(BSONObj keyPattern, CollatorInterface* collator); + void addIndex(BSONObj keyPattern, const CollatorInterface* collator); // // Execute planner. diff --git a/src/mongo/db/query/query_planner_test_lib.cpp b/src/mongo/db/query/query_planner_test_lib.cpp index ba0bc5d569a..f6ef22bb610 100644 --- a/src/mongo/db/query/query_planner_test_lib.cpp +++ b/src/mongo/db/query/query_planner_test_lib.cpp @@ -52,7 +52,7 @@ bool filterMatches(const BSONObj& testFilter, const QuerySolutionNode* trueFilte if (NULL == trueFilterNode->filter) { return false; } - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse(testFilter, ExtensionsCallbackDisallowExtensions(), collator); if (!statusWithMatcher.isOK()) { diff --git a/src/mongo/db/query/query_solution_test.cpp b/src/mongo/db/query/query_solution_test.cpp index 913a76609f0..ac1b6abbac1 100644 --- a/src/mongo/db/query/query_solution_test.cpp +++ b/src/mongo/db/query/query_solution_test.cpp @@ -251,7 +251,7 @@ TEST(QuerySolutionTest, IntervalListSomePoints) { std::unique_ptr<ParsedProjection> createParsedProjection(const BSONObj& query, const BSONObj& projObj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression queryMatchExpr = MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(queryMatchExpr.isOK()); diff --git a/src/mongo/dbtests/matchertests.cpp b/src/mongo/dbtests/matchertests.cpp index ce24738b325..73b5c728511 100644 --- a/src/mongo/dbtests/matchertests.cpp +++ b/src/mongo/dbtests/matchertests.cpp @@ -62,7 +62,7 @@ class Basic { public: void run() { BSONObj query = fromjson("{\"a\":\"b\"}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(m.matches(fromjson("{\"a\":\"b\"}"))); } @@ -73,7 +73,7 @@ class DoubleEqual { public: void run() { BSONObj query = fromjson("{\"a\":5}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(query, ExtensionsCallbackDisallowExtensions(), collator); ASSERT(m.matches(fromjson("{\"a\":5}"))); } @@ -85,7 +85,7 @@ public: void run() { BSONObjBuilder query; query.append("a", 5); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(query.done(), ExtensionsCallbackDisallowExtensions(), collator); ASSERT(m.matches(fromjson("{\"a\":5}"))); } @@ -96,7 +96,7 @@ class MixedNumericGt { public: void run() { BSONObj query = fromjson("{\"a\":{\"$gt\":4}}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(query, ExtensionsCallbackDisallowExtensions(), collator); BSONObjBuilder b; b.append("a", 5); @@ -112,7 +112,7 @@ public: ASSERT_EQUALS(4, query["a"].embeddedObject()["$in"].embeddedObject()["0"].number()); ASSERT_EQUALS(NumberInt, query["a"].embeddedObject()["$in"].embeddedObject()["0"].type()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(query, ExtensionsCallbackDisallowExtensions(), collator); { @@ -140,7 +140,7 @@ template <typename M> class MixedNumericEmbedded { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(BSON("a" << BSON("x" << 1)), ExtensionsCallbackDisallowExtensions(), collator); ASSERT(m.matches(BSON("a" << BSON("x" << 1)))); ASSERT(m.matches(BSON("a" << BSON("x" << 1.0)))); @@ -151,7 +151,7 @@ template <typename M> class Size { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(fromjson("{a:{$size:4}}"), ExtensionsCallbackDisallowExtensions(), collator); ASSERT(m.matches(fromjson("{a:[1,2,3,4]}"))); ASSERT(!m.matches(fromjson("{a:[1,2,3]}"))); @@ -164,7 +164,7 @@ template <typename M> class WithinBox { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(fromjson("{loc:{$within:{$box:[{x: 4, y:4},[6,6]]}}}"), ExtensionsCallbackDisallowExtensions(), collator); @@ -180,7 +180,7 @@ template <typename M> class WithinPolygon { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(fromjson("{loc:{$within:{$polygon:[{x:0,y:0},[0,5],[5,5],[5,0]]}}}"), ExtensionsCallbackDisallowExtensions(), collator); @@ -196,7 +196,7 @@ template <typename M> class WithinCenter { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(fromjson("{loc:{$within:{$center:[{x:30,y:30},10]}}}"), ExtensionsCallbackDisallowExtensions(), collator); @@ -215,7 +215,7 @@ template <typename M> class ElemMatchKey { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M matcher(BSON("a.b" << 1), ExtensionsCallbackDisallowExtensions(), collator); MatchDetails details; details.requestElemMatchKey(); @@ -236,7 +236,7 @@ public: const NamespaceString nss("unittests.matchertests"); AutoGetCollectionForRead ctx(&txn, nss); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(BSON("$where" << "function(){ return this.a == 1; }"), ExtensionsCallbackReal(&txn, &nss), @@ -250,7 +250,7 @@ template <typename M> class TimingBase { public: long dotime(const BSONObj& patt, const BSONObj& obj) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M m(patt, ExtensionsCallbackDisallowExtensions(), collator); Timer t; for (int i = 0; i < 900000; i++) { @@ -281,7 +281,7 @@ template <typename M> class NullCollator { public: void run() { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; M matcher(BSON("a" << "string"), ExtensionsCallbackDisallowExtensions(), diff --git a/src/mongo/dbtests/namespacetests.cpp b/src/mongo/dbtests/namespacetests.cpp index e7f7a1220db..b6d29ca2ddd 100644 --- a/src/mongo/dbtests/namespacetests.cpp +++ b/src/mongo/dbtests/namespacetests.cpp @@ -101,7 +101,7 @@ public: // Call getKeys on the nullObj. BSONObjSet nullFieldKeySet; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ExpressionKeysPrivate::getHashKeys(nullObj, "a", 0, 0, false, collator, &nullFieldKeySet); BSONElement nullFieldFromKey = nullFieldKeySet.begin()->firstElement(); @@ -128,7 +128,7 @@ public: BSONObj nullObj = BSON("a" << BSONNULL); BSONObjSet nullFieldKeySet; - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; ExpressionKeysPrivate::getHashKeys( nullObj, "a", 0x5eed, 0, false, collator, &nullFieldKeySet); BSONElement nullFieldFromKey = nullFieldKeySet.begin()->firstElement(); diff --git a/src/mongo/dbtests/query_stage_collscan.cpp b/src/mongo/dbtests/query_stage_collscan.cpp index cac7a702028..e8825f1bb44 100644 --- a/src/mongo/dbtests/query_stage_collscan.cpp +++ b/src/mongo/dbtests/query_stage_collscan.cpp @@ -90,7 +90,7 @@ public: params.tailable = false; // Make the filter. - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( filterObj, ExtensionsCallbackDisallowExtensions(), collator); verify(statusWithMatcher.isOK()); diff --git a/src/mongo/dbtests/query_stage_count.cpp b/src/mongo/dbtests/query_stage_count.cpp index 82a645bdcde..e24e4047ce2 100644 --- a/src/mongo/dbtests/query_stage_count.cpp +++ b/src/mongo/dbtests/query_stage_count.cpp @@ -145,7 +145,7 @@ public: unique_ptr<WorkingSet> ws(new WorkingSet); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( request.getQuery(), ExtensionsCallbackDisallowExtensions(), collator); ASSERT(statusWithMatcher.isOK()); diff --git a/src/mongo/dbtests/query_stage_ensure_sorted.cpp b/src/mongo/dbtests/query_stage_ensure_sorted.cpp index 3f8825b70cc..8ba3b552eeb 100644 --- a/src/mongo/dbtests/query_stage_ensure_sorted.cpp +++ b/src/mongo/dbtests/query_stage_ensure_sorted.cpp @@ -68,7 +68,7 @@ TEST(QueryStageEnsureSorted, EnsureSortedEmptyWorkingSet) { void testWork(const char* patternStr, const char* inputStr, const char* expectedStr, - CollatorInterface* collator = nullptr) { + const CollatorInterface* collator = nullptr) { WorkingSet ws; auto queuedDataStage = stdx::make_unique<QueuedDataStage>(nullptr, &ws); BSONObj inputObj = fromjson(inputStr); @@ -157,7 +157,7 @@ TEST(QueryStageEnsureSorted, EnsureSortedCompoundKey) { } TEST(QueryStageEnsureSorted, EnsureSortedStringsNullCollator) { - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; testWork("{a: 1}", "{input: [{a: 'abc'}, {a: 'cba'}]}", "{output: [{a: 'abc'}, {a: 'cba'}]}", diff --git a/src/mongo/dbtests/query_stage_fetch.cpp b/src/mongo/dbtests/query_stage_fetch.cpp index 60158a3fd92..fef93098606 100644 --- a/src/mongo/dbtests/query_stage_fetch.cpp +++ b/src/mongo/dbtests/query_stage_fetch.cpp @@ -195,7 +195,7 @@ public: // Make the filter. BSONObj filterObj = BSON("foo" << 6); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( filterObj, ExtensionsCallbackDisallowExtensions(), collator); verify(statusWithMatcher.isOK()); diff --git a/src/mongo/dbtests/query_stage_multiplan.cpp b/src/mongo/dbtests/query_stage_multiplan.cpp index ae5b128824a..8d16a859578 100644 --- a/src/mongo/dbtests/query_stage_multiplan.cpp +++ b/src/mongo/dbtests/query_stage_multiplan.cpp @@ -152,7 +152,7 @@ public: // Make the filter. BSONObj filterObj = BSON("foo" << 7); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( filterObj, ExtensionsCallbackDisallowExtensions(), collator); verify(statusWithMatcher.isOK()); diff --git a/src/mongo/dbtests/query_stage_subplan.cpp b/src/mongo/dbtests/query_stage_subplan.cpp index b703c0bf74c..490069c7cae 100644 --- a/src/mongo/dbtests/query_stage_subplan.cpp +++ b/src/mongo/dbtests/query_stage_subplan.cpp @@ -449,7 +449,7 @@ public: // Rewrite (AND (OR a b) e) => (OR (AND a e) (AND b e)) { BSONObj queryObj = fromjson("{$or:[{a:1}, {b:1}], e:1}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression expr = MatchExpressionParser::parse( queryObj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(expr.getStatus()); @@ -467,7 +467,7 @@ public: // Rewrite (AND (OR a b) e f) => (OR (AND a e f) (AND b e f)) { BSONObj queryObj = fromjson("{$or:[{a:1}, {b:1}], e:1, f:1}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression expr = MatchExpressionParser::parse( queryObj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(expr.getStatus()); @@ -485,7 +485,7 @@ public: // Rewrite (AND (OR (AND a b) (AND c d) e f) => (OR (AND a b e f) (AND c d e f)) { BSONObj queryObj = fromjson("{$or:[{a:1,b:1}, {c:1,d:1}], e:1,f:1}"); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression expr = MatchExpressionParser::parse( queryObj, ExtensionsCallbackDisallowExtensions(), collator); ASSERT_OK(expr.getStatus()); diff --git a/src/mongo/dbtests/query_stage_tests.cpp b/src/mongo/dbtests/query_stage_tests.cpp index acd5010e01c..2347a49e429 100644 --- a/src/mongo/dbtests/query_stage_tests.cpp +++ b/src/mongo/dbtests/query_stage_tests.cpp @@ -80,7 +80,7 @@ public: int countResults(const IndexScanParams& params, BSONObj filterObj = BSONObj()) { AutoGetCollectionForRead ctx(&_txn, ns()); - CollatorInterface* collator = nullptr; + const CollatorInterface* collator = nullptr; StatusWithMatchExpression statusWithMatcher = MatchExpressionParser::parse( filterObj, ExtensionsCallbackDisallowExtensions(), collator); verify(statusWithMatcher.isOK()); |