summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline
diff options
context:
space:
mode:
authorDerick Rethans <github@derickrethans.nl>2017-08-08 10:04:59 +0100
committerDerick Rethans <github@derickrethans.nl>2017-08-08 10:04:59 +0100
commit8962beb1b8f8ca869a9f7ccdc4a7eeab2b84c2f4 (patch)
treea115c5ff17fd81bd613e349c335911dc9203954b /src/mongo/db/pipeline
parent43eb68b4223f682887c41853eecf67eaf4058049 (diff)
downloadmongo-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.cpp33
-rw-r--r--src/mongo/db/pipeline/expression.h4
-rw-r--r--src/mongo/db/pipeline/expression_test.cpp6
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()));