diff options
author | Derick Rethans <github@derickrethans.nl> | 2017-08-08 10:04:59 +0100 |
---|---|---|
committer | Derick Rethans <github@derickrethans.nl> | 2017-08-08 10:04:59 +0100 |
commit | 8962beb1b8f8ca869a9f7ccdc4a7eeab2b84c2f4 (patch) | |
tree | a115c5ff17fd81bd613e349c335911dc9203954b /src/mongo/db/pipeline | |
parent | 43eb68b4223f682887c41853eecf67eaf4058049 (diff) | |
download | mongo-8962beb1b8f8ca869a9f7ccdc4a7eeab2b84c2f4.tar.gz |
SERVER-30524 dateFromParts should expect "millisecond" instead of "milliseconds"
Diffstat (limited to 'src/mongo/db/pipeline')
-rw-r--r-- | src/mongo/db/pipeline/expression.cpp | 33 | ||||
-rw-r--r-- | src/mongo/db/pipeline/expression.h | 4 | ||||
-rw-r--r-- | src/mongo/db/pipeline/expression_test.cpp | 6 |
3 files changed, 21 insertions, 22 deletions
diff --git a/src/mongo/db/pipeline/expression.cpp b/src/mongo/db/pipeline/expression.cpp index 309d7f0a0c5..6e5ab270f46 100644 --- a/src/mongo/db/pipeline/expression.cpp +++ b/src/mongo/db/pipeline/expression.cpp @@ -1015,7 +1015,7 @@ intrusive_ptr<Expression> ExpressionDateFromParts::parse( BSONElement hourElem; BSONElement minuteElem; BSONElement secondElem; - BSONElement millisecondsElem; + BSONElement millisecondElem; BSONElement isoYearElem; BSONElement isoWeekYearElem; BSONElement isoDayOfWeekElem; @@ -1037,8 +1037,8 @@ intrusive_ptr<Expression> ExpressionDateFromParts::parse( minuteElem = arg; } else if (field == "second"_sd) { secondElem = arg; - } else if (field == "milliseconds"_sd) { - millisecondsElem = arg; + } else if (field == "millisecond"_sd) { + millisecondElem = arg; } else if (field == "isoYear"_sd) { isoYearElem = arg; } else if (field == "isoWeekYear"_sd) { @@ -1074,7 +1074,7 @@ intrusive_ptr<Expression> ExpressionDateFromParts::parse( hourElem ? parseOperand(expCtx, hourElem, vps) : nullptr, minuteElem ? parseOperand(expCtx, minuteElem, vps) : nullptr, secondElem ? parseOperand(expCtx, secondElem, vps) : nullptr, - millisecondsElem ? parseOperand(expCtx, millisecondsElem, vps) : nullptr, + millisecondElem ? parseOperand(expCtx, millisecondElem, vps) : nullptr, isoYearElem ? parseOperand(expCtx, isoYearElem, vps) : nullptr, isoWeekYearElem ? parseOperand(expCtx, isoWeekYearElem, vps) : nullptr, isoDayOfWeekElem ? parseOperand(expCtx, isoDayOfWeekElem, vps) : nullptr, @@ -1089,7 +1089,7 @@ ExpressionDateFromParts::ExpressionDateFromParts( intrusive_ptr<Expression> hour, intrusive_ptr<Expression> minute, intrusive_ptr<Expression> second, - intrusive_ptr<Expression> milliseconds, + intrusive_ptr<Expression> millisecond, intrusive_ptr<Expression> isoYear, intrusive_ptr<Expression> isoWeekYear, intrusive_ptr<Expression> isoDayOfWeek, @@ -1101,7 +1101,7 @@ ExpressionDateFromParts::ExpressionDateFromParts( _hour(hour), _minute(minute), _second(second), - _milliseconds(milliseconds), + _millisecond(millisecond), _isoYear(isoYear), _isoWeekYear(isoWeekYear), _isoDayOfWeek(isoDayOfWeek), @@ -1126,8 +1126,8 @@ intrusive_ptr<Expression> ExpressionDateFromParts::optimize() { if (_second) { _second = _second->optimize(); } - if (_milliseconds) { - _milliseconds = _milliseconds->optimize(); + if (_millisecond) { + _millisecond = _millisecond->optimize(); } if (_isoYear) { _isoYear = _isoYear->optimize(); @@ -1148,7 +1148,7 @@ intrusive_ptr<Expression> ExpressionDateFromParts::optimize() { _hour, _minute, _second, - _milliseconds, + _millisecond, _isoYear, _isoWeekYear, _isoDayOfWeek, @@ -1169,7 +1169,7 @@ Value ExpressionDateFromParts::serialize(bool explain) const { {"hour", _hour ? _hour->serialize(explain) : Value()}, {"minute", _minute ? _minute->serialize(explain) : Value()}, {"second", _second ? _second->serialize(explain) : Value()}, - {"milliseconds", _milliseconds ? _milliseconds->serialize(explain) : Value()}, + {"millisecond", _millisecond ? _millisecond->serialize(explain) : Value()}, {"isoYear", _isoYear ? _isoYear->serialize(explain) : Value()}, {"isoWeekYear", _isoWeekYear ? _isoWeekYear->serialize(explain) : Value()}, {"isoDayOfWeek", _isoDayOfWeek ? _isoDayOfWeek->serialize(explain) : Value()}, @@ -1230,13 +1230,12 @@ bool ExpressionDateFromParts::evaluateNumberWithinRange(const Document& root, } Value ExpressionDateFromParts::evaluate(const Document& root) const { - int hour, minute, second, milliseconds; + int hour, minute, second, millisecond; if (!evaluateNumberWithinRange(root, _hour, "hour"_sd, 0, 0, 24, &hour) || !evaluateNumberWithinRange(root, _minute, "minute"_sd, 0, 0, 59, &minute) || !evaluateNumberWithinRange(root, _second, "second"_sd, 0, 0, 59, &second) || - !evaluateNumberWithinRange( - root, _milliseconds, "milliseconds"_sd, 0, 0, 999, &milliseconds)) { + !evaluateNumberWithinRange(root, _millisecond, "millisecond"_sd, 0, 0, 999, &millisecond)) { return Value(BSONNULL); } @@ -1257,7 +1256,7 @@ Value ExpressionDateFromParts::evaluate(const Document& root) const { } return Value( - timeZone->createFromDateParts(year, month, day, hour, minute, second, milliseconds)); + timeZone->createFromDateParts(year, month, day, hour, minute, second, millisecond)); } if (_isoYear) { @@ -1272,7 +1271,7 @@ Value ExpressionDateFromParts::evaluate(const Document& root) const { } return Value(timeZone->createFromIso8601DateParts( - isoYear, isoWeekYear, isoDayOfWeek, hour, minute, second, milliseconds)); + isoYear, isoWeekYear, isoDayOfWeek, hour, minute, second, millisecond)); } MONGO_UNREACHABLE; @@ -1297,8 +1296,8 @@ void ExpressionDateFromParts::addDependencies(DepsTracker* deps) const { if (_second) { _second->addDependencies(deps); } - if (_milliseconds) { - _milliseconds->addDependencies(deps); + if (_millisecond) { + _millisecond->addDependencies(deps); } if (_isoYear) { _isoYear->addDependencies(deps); diff --git a/src/mongo/db/pipeline/expression.h b/src/mongo/db/pipeline/expression.h index 687e518d36f..ab82e3139e7 100644 --- a/src/mongo/db/pipeline/expression.h +++ b/src/mongo/db/pipeline/expression.h @@ -869,7 +869,7 @@ private: boost::intrusive_ptr<Expression> hour, boost::intrusive_ptr<Expression> minute, boost::intrusive_ptr<Expression> second, - boost::intrusive_ptr<Expression> milliseconds, + boost::intrusive_ptr<Expression> millisecond, boost::intrusive_ptr<Expression> isoYear, boost::intrusive_ptr<Expression> isoWeekYear, boost::intrusive_ptr<Expression> isoDayOfWeek, @@ -893,7 +893,7 @@ private: boost::intrusive_ptr<Expression> _hour; boost::intrusive_ptr<Expression> _minute; boost::intrusive_ptr<Expression> _second; - boost::intrusive_ptr<Expression> _milliseconds; + boost::intrusive_ptr<Expression> _millisecond; boost::intrusive_ptr<Expression> _isoYear; boost::intrusive_ptr<Expression> _isoWeekYear; boost::intrusive_ptr<Expression> _isoDayOfWeek; diff --git a/src/mongo/db/pipeline/expression_test.cpp b/src/mongo/db/pipeline/expression_test.cpp index bfc75516b2e..22180869ccb 100644 --- a/src/mongo/db/pipeline/expression_test.cpp +++ b/src/mongo/db/pipeline/expression_test.cpp @@ -4390,7 +4390,7 @@ TEST_F(ExpressionDateFromPartsTest, SerializesToObjectSyntax) { "year" << 2017 << "month" << 6 << "day" << 27 << "hour" << 14 << "minute" << 37 << "second" << 15 - << "milliseconds" + << "millisecond" << 414 << "timezone" << "America/Los_Angeles")); @@ -4403,7 +4403,7 @@ TEST_F(ExpressionDateFromPartsTest, SerializesToObjectSyntax) { {"hour", Document{{"$const", 14}}}, {"minute", Document{{"$const", 37}}}, {"second", Document{{"$const", 15}}}, - {"milliseconds", Document{{"$const", 414}}}, + {"millisecond", Document{{"$const", 414}}}, {"timezone", Document{{"$const", "America/Los_Angeles"_sd}}}}}}); ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization); ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization); @@ -4433,7 +4433,7 @@ TEST_F(ExpressionDateFromPartsTest, OptimizesToConstantIfAllInputsAreConstant) { // Test that it becomes a constant if both year and milliseconds are provided, and year is an // expressions which evaluate to a constant, with milliseconds a constant spec = BSON("$dateFromParts" << BSON( - "year" << BSON("$add" << BSON_ARRAY(1900 << 107)) << "milliseconds" << 514)); + "year" << BSON("$add" << BSON_ARRAY(1900 << 107)) << "millisecond" << 514)); dateExp = Expression::parseExpression(expCtx, spec, expCtx->variablesParseState); ASSERT(dynamic_cast<ExpressionConstant*>(dateExp->optimize().get())); |