diff options
author | Shaun Verch <shaun.verch@mongodb.com> | 2014-05-21 14:54:26 -0400 |
---|---|---|
committer | Shaun Verch <shaun.verch@mongodb.com> | 2014-05-21 14:54:26 -0400 |
commit | b162d4c90ed069602ea2dbdac74771d2d97c14ee (patch) | |
tree | e4e1d8b07024a74ff382bcd7f2eaf58786b0f108 | |
parent | 3b97c0870427f676cf3ffbddabc5df8b1fa44fa5 (diff) | |
download | mongo-b162d4c90ed069602ea2dbdac74771d2d97c14ee.tar.gz |
Revert "SERVER-13760 Do not call dateToISOString if date is not formatable"
This reverts commit 3b97c0870427f676cf3ffbddabc5df8b1fa44fa5.
-rw-r--r-- | src/mongo/db/jsobj.cpp | 16 | ||||
-rw-r--r-- | src/mongo/dbtests/jsontests.cpp | 8 | ||||
-rw-r--r-- | src/mongo/tools/export.cpp | 5 | ||||
-rw-r--r-- | src/mongo/util/time_support.cpp | 9 | ||||
-rw-r--r-- | src/mongo/util/time_support.h | 2 | ||||
-rw-r--r-- | src/mongo/util/time_support_test.cpp | 13 |
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"); |