SERVER-705 make v8 timestamp fields consistent with sm
This commit is contained in:
@@ -124,7 +124,7 @@ namespace mongo {
|
||||
case mongo::Timestamp: {
|
||||
Local<v8::Object> sub = v8::Object::New();
|
||||
|
||||
sub->Set( v8::String::New( "time" ) , v8::Date::New( f.timestampTime() ) );
|
||||
sub->Set( v8::String::New( "t" ) , v8::Date::New( f.timestampTime() ) );
|
||||
sub->Set( v8::String::New( "i" ) , v8::Number::New( f.timestampInc() ) );
|
||||
|
||||
o->Set( v8::String::New( f.fieldName() ) , sub );
|
||||
@@ -213,7 +213,7 @@ namespace mongo {
|
||||
case mongo::Timestamp: {
|
||||
Local<v8::Object> sub = v8::Object::New();
|
||||
|
||||
sub->Set( v8::String::New( "time" ) , v8::Date::New( f.timestampTime() ) );
|
||||
sub->Set( v8::String::New( "t" ) , v8::Date::New( f.timestampTime() ) );
|
||||
sub->Set( v8::String::New( "i" ) , v8::Number::New( f.timestampInc() ) );
|
||||
|
||||
return sub;
|
||||
@@ -273,6 +273,27 @@ namespace mongo {
|
||||
}
|
||||
|
||||
if ( value->IsObject() ){
|
||||
// The user could potentially modify the fields of these special objects,
|
||||
// wreaking havoc when we attempt to reinterpret them. Not doing any validation
|
||||
// for now...
|
||||
Local< v8::Object > obj = value->ToObject();
|
||||
if ( obj->InternalFieldCount() && obj->GetInternalField( 0 )->IsNumber() ) {
|
||||
switch( obj->GetInternalField( 0 )->ToInt32()->Value() ) { // NOTE Uint32's Value() gave me a linking error, so going with this instead
|
||||
case Timestamp:
|
||||
b.appendTimestamp( sname.c_str(),
|
||||
Date_t( v8::Date::Cast( *obj->Get( v8::String::New( "t" ) ) )->NumberValue() ),
|
||||
obj->Get( v8::String::New( "i" ) )->ToInt32()->Value() );
|
||||
return;
|
||||
case MinKey:
|
||||
b.appendMinKey( sname.c_str() );
|
||||
return;
|
||||
case MaxKey:
|
||||
b.appendMaxKey( sname.c_str() );
|
||||
return;
|
||||
default:
|
||||
assert( "invalid internal field" == 0 );
|
||||
}
|
||||
}
|
||||
string s = toSTLString( value );
|
||||
if ( s.size() && s[0] == '/' ){
|
||||
s = s.substr( 1 );
|
||||
|
||||
Reference in New Issue
Block a user