summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/expression.h')
-rw-r--r--src/mongo/db/pipeline/expression.h131
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;