diff options
Diffstat (limited to 'src/mongo/db/pipeline/expression.h')
-rw-r--r-- | src/mongo/db/pipeline/expression.h | 131 |
1 files changed, 65 insertions, 66 deletions
diff --git a/src/mongo/db/pipeline/expression.h b/src/mongo/db/pipeline/expression.h index 4b4bf8287b9..bece437d250 100644 --- a/src/mongo/db/pipeline/expression.h +++ b/src/mongo/db/pipeline/expression.h @@ -247,7 +247,7 @@ public: * Calls parseExpression() on any sub-document (including possibly the entire document) which * consists of a single field name starting with a '$'. */ - static boost::intrusive_ptr<Expression> parseObject(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parseObject(ExpressionContext* expCtx, BSONObj obj, const VariablesParseState& vps); @@ -257,7 +257,7 @@ public: * Throws an error if 'obj' does not contain exactly one field, or if that field's name does not * match a registered expression name. */ - static boost::intrusive_ptr<Expression> parseExpression(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parseExpression(ExpressionContext* expCtx, BSONObj obj, const VariablesParseState& vps); @@ -268,7 +268,7 @@ public: * parseObject(), ExpressionFieldPath::parse(), ExpressionArray::parse(), or * ExpressionConstant::parse() as necessary. */ - static boost::intrusive_ptr<Expression> parseOperand(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parseOperand(ExpressionContext* expCtx, BSONElement exprElement, const VariablesParseState& vps); @@ -369,7 +369,7 @@ public: virtual void validateArguments(const ExpressionVector& args) const {} - static ExpressionVector parseArguments(ExpressionContext* const expCtx, + static ExpressionVector parseArguments(ExpressionContext* expCtx, BSONElement bsonExpr, const VariablesParseState& vps); @@ -596,7 +596,7 @@ public: */ class ExpressionConstant final : public Expression { public: - ExpressionConstant(ExpressionContext* const expCtx, const Value& value); + ExpressionConstant(ExpressionContext* expCtx, const Value& value); boost::intrusive_ptr<Expression> optimize() final; Value evaluate(const Document& root, Variables* variables) const final; @@ -607,10 +607,10 @@ public: /** * Creates a new ExpressionConstant with value 'value'. */ - static boost::intrusive_ptr<ExpressionConstant> create(ExpressionContext* const expCtx, + static boost::intrusive_ptr<ExpressionConstant> create(ExpressionContext* expCtx, const Value& value); - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement bsonExpr, const VariablesParseState& vps); @@ -1121,7 +1121,7 @@ public: Value serialize(bool explain) const final; static boost::intrusive_ptr<ExpressionCoerceToBool> create( - ExpressionContext* const expCtx, boost::intrusive_ptr<Expression> pExpression); + ExpressionContext* expCtx, boost::intrusive_ptr<Expression> pExpression); void acceptVisitor(ExpressionMutableVisitor* visitor) final { return visitor->visit(this); @@ -1135,8 +1135,7 @@ protected: void _doAddDependencies(DepsTracker* deps) const final; private: - ExpressionCoerceToBool(ExpressionContext* const expCtx, - boost::intrusive_ptr<Expression> pExpression); + ExpressionCoerceToBool(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> pExpression); boost::intrusive_ptr<Expression>& pExpression; }; @@ -1170,13 +1169,13 @@ public: return cmpOp; } - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement bsonExpr, const VariablesParseState& vps, CmpOp cmpOp); static boost::intrusive_ptr<ExpressionCompare> create( - ExpressionContext* const expCtx, + ExpressionContext* expCtx, CmpOp cmpOp, const boost::intrusive_ptr<Expression>& exprLeft, const boost::intrusive_ptr<Expression>& exprRight); @@ -1250,7 +1249,7 @@ public: Value evaluate(const Document& root, Variables* variables) const final; const char* getOpName() const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -1268,7 +1267,7 @@ private: class ExpressionDateFromString final : public Expression { public: - ExpressionDateFromString(ExpressionContext* const expCtx, + ExpressionDateFromString(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> dateString, boost::intrusive_ptr<Expression> timeZone, boost::intrusive_ptr<Expression> format, @@ -1279,7 +1278,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -1304,7 +1303,7 @@ private: class ExpressionDateFromParts final : public Expression { public: - ExpressionDateFromParts(ExpressionContext* const expCtx, + ExpressionDateFromParts(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> year, boost::intrusive_ptr<Expression> month, boost::intrusive_ptr<Expression> day, @@ -1321,7 +1320,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -1392,7 +1391,7 @@ public: /** * The iso8601 argument controls whether to output ISO8601 elements or natural calendar. */ - ExpressionDateToParts(ExpressionContext* const expCtx, + ExpressionDateToParts(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> date, boost::intrusive_ptr<Expression> timeZone, boost::intrusive_ptr<Expression> iso8601); @@ -1401,7 +1400,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -1426,7 +1425,7 @@ private: class ExpressionDateToString final : public Expression { public: - ExpressionDateToString(ExpressionContext* const expCtx, + ExpressionDateToString(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> format, boost::intrusive_ptr<Expression> date, boost::intrusive_ptr<Expression> timeZone, @@ -1435,7 +1434,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -1537,7 +1536,7 @@ public: * startOfWeek - expression defining the week start day that resolves to a string Value. Can be * nullptr. */ - ExpressionDateDiff(ExpressionContext* const expCtx, + ExpressionDateDiff(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> startDate, boost::intrusive_ptr<Expression> endDate, boost::intrusive_ptr<Expression> unit, @@ -1546,7 +1545,7 @@ public: boost::intrusive_ptr<Expression> optimize() final; Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); void acceptVisitor(ExpressionMutableVisitor* visitor) final { @@ -1689,19 +1688,19 @@ public: indicator @returns the newly created field path expression */ - static boost::intrusive_ptr<ExpressionFieldPath> deprecatedCreate( - ExpressionContext* const expCtx, const std::string& fieldPath); + static boost::intrusive_ptr<ExpressionFieldPath> deprecatedCreate(ExpressionContext* expCtx, + const std::string& fieldPath); // Parse from the raw std::string from the user with the "$" prefixes. - static boost::intrusive_ptr<ExpressionFieldPath> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<ExpressionFieldPath> parse(ExpressionContext* expCtx, const std::string& raw, const VariablesParseState& vps); // Create from a non-prefixed string. Assumes path not variable. static boost::intrusive_ptr<ExpressionFieldPath> createPathFromString( - ExpressionContext* const expCtx, const std::string& raw, const VariablesParseState& vps); + ExpressionContext* expCtx, const std::string& raw, const VariablesParseState& vps); // Create from a non-prefixed string. Assumes variable not path. static boost::intrusive_ptr<ExpressionFieldPath> createVarFromString( - ExpressionContext* const expCtx, const std::string& raw, const VariablesParseState& vps); + ExpressionContext* expCtx, const std::string& raw, const VariablesParseState& vps); /** * Returns true if this expression logically represents the path 'dottedPath'. For example, if @@ -1745,7 +1744,7 @@ protected: void _doAddDependencies(DepsTracker* deps) const final; private: - ExpressionFieldPath(ExpressionContext* const expCtx, + ExpressionFieldPath(ExpressionContext* expCtx, const std::string& fieldPath, Variables::Id variable); @@ -1778,11 +1777,11 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); - ExpressionFilter(ExpressionContext* const expCtx, + ExpressionFilter(ExpressionContext* expCtx, std::string varName, Variables::Id varId, boost::intrusive_ptr<Expression> input, @@ -2001,7 +2000,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -2032,7 +2031,7 @@ protected: void _doAddDependencies(DepsTracker* deps) const final; private: - ExpressionLet(ExpressionContext* const expCtx, + ExpressionLet(ExpressionContext* expCtx, VariableMap&& vars, std::vector<boost::intrusive_ptr<Expression>> children, std::vector<Variables::Id> orderedVariableIds); @@ -2113,7 +2112,7 @@ public: Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -2133,7 +2132,7 @@ protected: private: ExpressionMap( - ExpressionContext* const expCtx, + ExpressionContext* expCtx, const std::string& varName, // name of variable to set Variables::Id varId, // id of variable to set boost::intrusive_ptr<Expression> input, // yields array to iterate @@ -2147,12 +2146,12 @@ private: class ExpressionMeta final : public Expression { public: - ExpressionMeta(ExpressionContext* const expCtx, DocumentMetadataFields::MetaType metaType); + ExpressionMeta(ExpressionContext* expCtx, DocumentMetadataFields::MetaType metaType); Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -2344,14 +2343,14 @@ public: Value serialize(bool explain) const final; static boost::intrusive_ptr<ExpressionObject> create( - ExpressionContext* const expCtx, + ExpressionContext* expCtx, std::vector<std::pair<std::string, boost::intrusive_ptr<Expression>>>&& expressionsWithChildrenInPlace); /** * Parses and constructs an ExpressionObject from 'obj'. */ - static boost::intrusive_ptr<ExpressionObject> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<ExpressionObject> parse(ExpressionContext* expCtx, BSONObj obj, const VariablesParseState& vps); @@ -2378,7 +2377,7 @@ protected: private: ExpressionObject( - ExpressionContext* const expCtx, + ExpressionContext* expCtx, std::vector<boost::intrusive_ptr<Expression>> children, std::vector<std::pair<std::string, boost::intrusive_ptr<Expression>&>>&& expressions); @@ -2426,7 +2425,7 @@ public: ExpressionPow(ExpressionContext* const expCtx, ExpressionVector&& children) : ExpressionFixedArity<ExpressionPow, 2>(expCtx, std::move(children)) {} - static boost::intrusive_ptr<Expression> create(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> create(ExpressionContext* expCtx, Value base, Value exp); @@ -2481,7 +2480,7 @@ public: Value evaluate(const Document& root, Variables* variables) const final; boost::intrusive_ptr<Expression> optimize() final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); Value serialize(bool explain) const final; @@ -2540,7 +2539,7 @@ class ExpressionReplaceOne final : public ExpressionReplaceBase { public: using ExpressionReplaceBase::ExpressionReplaceBase; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -2571,7 +2570,7 @@ public: expCtx->sbeCompatible = false; } - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -3066,7 +3065,7 @@ public: Value evaluate(const Document& root, Variables* variables) const final; boost::intrusive_ptr<Expression> optimize() final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); Value serialize(bool explain) const final; @@ -3155,7 +3154,7 @@ public: Value evaluate(const Document& root, Variables* variables) const final; boost::intrusive_ptr<Expression> optimize() final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); Value serialize(bool explain) const final; @@ -3214,7 +3213,7 @@ public: ExpressionTrunc(ExpressionContext* const expCtx, ExpressionVector&& children) : ExpressionRangedArity<ExpressionTrunc, 1, 2>(expCtx, std::move(children)) {} - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement elem, const VariablesParseState& vps); Value evaluate(const Document& root, Variables* variables) const final; @@ -3406,7 +3405,7 @@ public: Value evaluate(const Document& root, Variables* variables) const final; boost::intrusive_ptr<Expression> optimize() final; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); Value serialize(bool explain) const final; @@ -3430,7 +3429,7 @@ private: class ExpressionConvert final : public Expression { public: - ExpressionConvert(ExpressionContext* const expCtx, + ExpressionConvert(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> input, boost::intrusive_ptr<Expression> to, boost::intrusive_ptr<Expression> onError, @@ -3439,11 +3438,11 @@ public: * Creates a $convert expression converting from 'input' to the type given by 'toType'. Leaves * 'onNull' and 'onError' unspecified. */ - static boost::intrusive_ptr<Expression> create(ExpressionContext* const, + static boost::intrusive_ptr<Expression> create(ExpressionContext*, boost::intrusive_ptr<Expression> input, BSONType toType); - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); @@ -3604,7 +3603,7 @@ private: class ExpressionRegexFind final : public ExpressionRegex { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); @@ -3623,7 +3622,7 @@ public: class ExpressionRegexFindAll final : public ExpressionRegex { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); @@ -3641,7 +3640,7 @@ public: class ExpressionRegexMatch final : public ExpressionRegex { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vpsIn); @@ -3667,11 +3666,11 @@ class ExpressionRandom final : public Expression { static constexpr double kMaxValue = 1.0; public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement exprElement, const VariablesParseState& vps); - Value serialize(const bool explain) const final; + Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; @@ -3691,7 +3690,7 @@ protected: void _doAddDependencies(DepsTracker* deps) const final override; private: - explicit ExpressionRandom(ExpressionContext* const expCtx); + explicit ExpressionRandom(ExpressionContext* expCtx); double getRandomValue() const; }; @@ -3704,7 +3703,7 @@ public: expCtx->sbeCompatible = false; }; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -3776,7 +3775,7 @@ class ExpressionDateAdd final : public ExpressionDateArithmetics { public: using ExpressionDateArithmetics::ExpressionDateArithmetics; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -3799,7 +3798,7 @@ class ExpressionDateSubtract final : public ExpressionDateArithmetics { public: using ExpressionDateArithmetics::ExpressionDateArithmetics; - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); @@ -3837,7 +3836,7 @@ struct SubstituteFieldPathWalker { */ class ExpressionDateTrunc final : public Expression { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement expr, const VariablesParseState& vps); /** @@ -3850,7 +3849,7 @@ public: * startOfWeek - an expression defining the week start day that resolves to a string Value. Can * be nullptr. */ - ExpressionDateTrunc(ExpressionContext* const expCtx, + ExpressionDateTrunc(ExpressionContext* expCtx, boost::intrusive_ptr<Expression> date, boost::intrusive_ptr<Expression> unit, boost::intrusive_ptr<Expression> binSize, @@ -3925,7 +3924,7 @@ private: class ExpressionGetField final : public Expression { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement exprElement, const VariablesParseState& vps); @@ -3945,7 +3944,7 @@ public: expCtx->sbeCompatible = false; } - Value serialize(const bool explain) const final; + Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; @@ -3971,7 +3970,7 @@ private: class ExpressionSetField final : public Expression { public: - static boost::intrusive_ptr<Expression> parse(ExpressionContext* const expCtx, + static boost::intrusive_ptr<Expression> parse(ExpressionContext* expCtx, BSONElement exprElement, const VariablesParseState& vps); @@ -3990,7 +3989,7 @@ public: expCtx->sbeCompatible = false; } - Value serialize(const bool explain) const final; + Value serialize(bool explain) const final; Value evaluate(const Document& root, Variables* variables) const final; |