diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-10-15 15:45:02 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-10-15 15:45:02 -0400 |
commit | 81082c8d7f0ca1207c39b4535c020214ce4728eb (patch) | |
tree | 93e26cfa929a2bd6d0cca7b9f24e29dbb23e6c52 | |
parent | 9ff72bdd61f68d56843e67631cc34c6c66167261 (diff) | |
parent | 326f612a9862661377b58c707112fa552ea81209 (diff) | |
download | mongo-81082c8d7f0ca1207c39b4535c020214ce4728eb.tar.gz |
Merge branch 'master' of git@github.com:mongodb/mongo
-rw-r--r-- | SConstruct | 2 | ||||
-rw-r--r-- | db/jsobj.cpp | 1 | ||||
-rw-r--r-- | db/jsobj.h | 17 | ||||
-rw-r--r-- | dbtests/basictests.cpp | 2 | ||||
-rw-r--r-- | dbtests/jsobjtests.cpp | 21 | ||||
-rw-r--r-- | dbtests/queryoptimizertests.cpp | 2 |
6 files changed, 39 insertions, 6 deletions
diff --git a/SConstruct b/SConstruct index 33ffbc51f00..760b243a981 100644 --- a/SConstruct +++ b/SConstruct @@ -725,7 +725,7 @@ def doConfigure( myenv , needJava=True , needPcre=True , shell=False ): if usesm: - myCheckLib( [ "js" , "mozjs" ] , True ) + myCheckLib( [ "mozjs" , "js" ] , True ) mozHeader = "js" if bigLibString(myenv).find( "mozjs" ) >= 0: mozHeader = "mozjs" diff --git a/db/jsobj.cpp b/db/jsobj.cpp index dc8eb451d4f..a6b8781fd21 100644 --- a/db/jsobj.cpp +++ b/db/jsobj.cpp @@ -35,6 +35,7 @@ BOOST_STATIC_ASSERT( sizeof(int) == 4 ); BOOST_STATIC_ASSERT( sizeof(long long) == 8 ); BOOST_STATIC_ASSERT( sizeof(double) == 8 ); +BOOST_STATIC_ASSERT( sizeof(mongo::OID) == 12 ); namespace mongo { diff --git a/db/jsobj.h b/db/jsobj.h index 4861980968b..74359dba948 100644 --- a/db/jsobj.h +++ b/db/jsobj.h @@ -112,10 +112,12 @@ namespace mongo { */ class OID { union { - long long a; - unsigned char data[8]; + struct{ + long long a; + unsigned b; + }; + unsigned char data[12]; }; - unsigned b; public: /** initialize to 'null' */ void clear() { a = 0; b = 0; } @@ -1196,6 +1198,15 @@ namespace mongo { void append( const char *fieldName, OID oid ) { appendOID( fieldName, &oid ); } + /** Append a time_t date. + @param dt a C-style 32 bit date value, that is + the number of seconds since January 1, 1970, 00:00:00 GMT + */ + void appendTimeT(const char *fieldName, time_t dt) { + b.append((char) Date); + b.append(fieldName); + b.append(static_cast<unsigned long long>(dt) * 1000); + } /** Append a date. @param dt a Java-style 64 bit date value, that is the number of milliseconds since January 1, 1970, 00:00:00 GMT diff --git a/dbtests/basictests.cpp b/dbtests/basictests.cpp index 1369856e409..ff98b8a70d1 100644 --- a/dbtests/basictests.cpp +++ b/dbtests/basictests.cpp @@ -59,7 +59,7 @@ namespace BasicTests { const char *data = (const char *) _data; string s = base64::encode( data , len ); string out = base64::decode( s ); - ASSERT_EQUALS( out.size() , len ); + ASSERT_EQUALS( out.size() , static_cast<size_t>(len) ); bool broke = false; for ( int i=0; i<len; i++ ){ if ( data[i] != out[i] ) diff --git a/dbtests/jsobjtests.cpp b/dbtests/jsobjtests.cpp index b91078be155..68342eecae1 100644 --- a/dbtests/jsobjtests.cpp +++ b/dbtests/jsobjtests.cpp @@ -724,6 +724,26 @@ namespace JsobjTests { } }; + class TimeTBuilder { + public: + void run() { + unsigned long long before = jsTime(); + time_t now = time(NULL); + unsigned long long after = jsTime(); + + BSONObjBuilder b; + b.appendTimeT("now", now); + BSONObj o = b.obj(); + + ASSERT( o.valid() ); + + BSONElement e = o["now"]; + ASSERT( e.type() == Date ); + ASSERT( e.date()/1000 >= before/1000 ); + ASSERT( e.date()/1000 <= after/1000 ); + } + }; + class MinMaxElementTest { public: @@ -1095,6 +1115,7 @@ namespace JsobjTests { add< ValueStreamTests::ElementAppend >(); add< SubObjectBuilder >(); add< DateNowBuilder >(); + add< TimeTBuilder >(); add< MinMaxElementTest >(); add< ComparatorTest >(); add< ExtractFieldsTest >(); diff --git a/dbtests/queryoptimizertests.cpp b/dbtests/queryoptimizertests.cpp index f167c37e867..39dc16992ea 100644 --- a/dbtests/queryoptimizertests.cpp +++ b/dbtests/queryoptimizertests.cpp @@ -324,7 +324,7 @@ namespace QueryOptimizerTests { client_.ensureIndex( ns(), key, false, name.c_str() ); NamespaceDetails *d = nsd(); for( int i = 0; i < d->nIndexes; ++i ) { - if ( d->indexes[ i ].indexName() == name || d->indexes[ i ].isIdIndex() && IndexDetails::isIdIndexPattern( key ) ) + if ( d->indexes[ i ].indexName() == name || ( d->indexes[ i ].isIdIndex() && IndexDetails::isIdIndexPattern( key ) ) ) return &d->indexes[ i ]; } assert( false ); |