summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/jsobj.cpp16
-rw-r--r--src/mongo/dbtests/jsontests.cpp8
-rw-r--r--src/mongo/tools/export.cpp5
-rw-r--r--src/mongo/util/time_support.cpp9
-rw-r--r--src/mongo/util/time_support.h2
-rw-r--r--src/mongo/util/time_support_test.cpp13
6 files changed, 3 insertions, 50 deletions
diff --git a/src/mongo/db/jsobj.cpp b/src/mongo/db/jsobj.cpp
index 69424fa5683..ee7b929ec4e 100644
--- a/src/mongo/db/jsobj.cpp
+++ b/src/mongo/db/jsobj.cpp
@@ -223,13 +223,7 @@ namespace mongo {
if (format == Strict) {
Date_t d = date();
s << "{ \"$date\" : ";
- // The two cases in which we cannot convert Date_t::millis to an ISO Date string are
- // when the date is too large to format (SERVER-13760), and when the date is before
- // the epoch (SERVER-11273). Since Date_t internally stores millis as an unsigned
- // long long, despite the fact that it is logically signed (SERVER-8573), this check
- // handles both the case where Date_t::millis is too large, and the case where
- // Date_t::millis is negative (before the epoch).
- if (d.millis > Date_t::maxFormatableDate) {
+ if (static_cast<long long>(d.millis) < 0) {
s << "{ \"$numberLong\" : \"" << static_cast<long long>(d.millis) << "\" }";
}
else {
@@ -241,13 +235,7 @@ namespace mongo {
s << "Date( ";
if (pretty) {
Date_t d = date();
- // The two cases in which we cannot convert Date_t::millis to an ISO Date string
- // are when the date is too large to format (SERVER-13760), and when the date is
- // before the epoch (SERVER-11273). Since Date_t internally stores millis as an
- // unsigned long long, despite the fact that it is logically signed
- // (SERVER-8573), this check handles both the case where Date_t::millis is too
- // large, and the case where Date_t::millis is negative (before the epoch).
- if (d.millis > Date_t::maxFormatableDate) {
+ if (static_cast<long long>(d.millis) < 0) {
// FIXME: This is not parseable by the shell, since it may not fit in a
// float
s << d.millis;
diff --git a/src/mongo/dbtests/jsontests.cpp b/src/mongo/dbtests/jsontests.cpp
index a8e17ca4ba5..c5d63739207 100644
--- a/src/mongo/dbtests/jsontests.cpp
+++ b/src/mongo/dbtests/jsontests.cpp
@@ -418,14 +418,6 @@ namespace JsonTests {
built.jsonString( Strict ) );
ASSERT_EQUALS( "{ \"a\" : Date( 0 ) }", built.jsonString( TenGen ) );
ASSERT_EQUALS( "{ \"a\" : Date( 0 ) }", built.jsonString( JS ) );
-
- // Test dates above our maximum formattable date. See SERVER-13760.
- BSONObjBuilder b2;
- b2.appendDate("a", 32535262800000ULL);
- BSONObj built2 = b2.done();
- ASSERT_EQUALS(
- "{ \"a\" : { \"$date\" : { \"$numberLong\" : \"32535262800000\" } } }",
- built2.jsonString( Strict ) );
}
private:
diff --git a/src/mongo/tools/export.cpp b/src/mongo/tools/export.cpp
index cc7c362889f..5e9bca22432 100644
--- a/src/mongo/tools/export.cpp
+++ b/src/mongo/tools/export.cpp
@@ -92,10 +92,7 @@ public:
case jstOID:
return "ObjectID(" + object.OID().toString() + ")"; // OIDs are always 24 bytes
case Date:
- // We need to check if we can actually format this date. See SERVER-13760.
- return object.Date().millis > Date_t::maxFormatableDate ?
- csvEscape(object.jsonString(Strict, false)) :
- dateToISOStringUTC(object.Date());
+ return dateToISOStringUTC(object.Date());
case Timestamp:
return csvEscape(object.jsonString(Strict, false));
case RegEx:
diff --git a/src/mongo/util/time_support.cpp b/src/mongo/util/time_support.cpp
index 3b3900c55b7..a21a2a4ad6f 100644
--- a/src/mongo/util/time_support.cpp
+++ b/src/mongo/util/time_support.cpp
@@ -54,14 +54,6 @@
namespace mongo {
-namespace {
- const bool isTimeTSmall = (sizeof(time_t) == sizeof(int32_t));
-} // namespace
-
- const Date_t Date_t::maxFormatableDate = isTimeTSmall ?
- 2147483647000ULL : // "2038-01-19T03:14:07Z"
- 32535215999000ULL; // "3000-12-31T23:59:59Z"
-
// jsTime_virtual_skew is just for testing. a test command manipulates it.
long long jsTime_virtual_skew = 0;
boost::thread_specific_ptr<long long> jsTime_virtual_thread_skew;
@@ -138,7 +130,6 @@ namespace {
};
void _dateToISOString(Date_t date, bool local, DateStringBuffer* result) {
- invariant(date.millis <= Date_t::maxFormatableDate);
static const int bufSize = DateStringBuffer::dataCapacity;
char* const buf = result->data;
struct tm t;
diff --git a/src/mongo/util/time_support.h b/src/mongo/util/time_support.h
index 590ed77a2ef..284aa7a811e 100644
--- a/src/mongo/util/time_support.h
+++ b/src/mongo/util/time_support.h
@@ -57,8 +57,6 @@ namespace mongo {
int64_t asInt64() const {
return static_cast<int64_t>(millis);
}
-
- static const Date_t maxFormatableDate;
};
// uses ISO 8601 dates without trailing Z
diff --git a/src/mongo/util/time_support_test.cpp b/src/mongo/util/time_support_test.cpp
index e1e76072b6a..d8ea2235291 100644
--- a/src/mongo/util/time_support_test.cpp
+++ b/src/mongo/util/time_support_test.cpp
@@ -180,10 +180,6 @@ namespace {
swull = dateFromISOString("2058-02-20T18:29:11.100Z");
ASSERT_OK(swull.getStatus());
ASSERT_EQUALS(swull.getValue(), 2781455351100ULL);
-
- swull = dateFromISOString("3001-01-01T08:00:00.000Z");
- ASSERT_OK(swull.getStatus());
- ASSERT_EQUALS(swull.getValue(), 32535244800000ULL);
}
swull = dateFromISOString("2013-02-20T18:29:11.100Z");
@@ -254,15 +250,6 @@ namespace {
swull = dateFromISOString("2058-02-20T13:29:11.100-0500");
ASSERT_OK(swull.getStatus());
ASSERT_EQUALS(swull.getValue(), 2781455351100ULL);
-
- swull = dateFromISOString("3000-12-31T23:59:59Z");
- ASSERT_OK(swull.getStatus());
- ASSERT_EQUALS(swull.getValue(), 32535215999000ULL);
- }
- else {
- swull = dateFromISOString("2038-01-19T03:14:07Z");
- ASSERT_OK(swull.getStatus());
- ASSERT_EQUALS(swull.getValue(), 2147483647000ULL);
}
swull = dateFromISOString("2013-02-20T13:29:11.100-0500");