summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2009-10-15 15:45:02 -0400
committerEliot Horowitz <eliot@10gen.com>2009-10-15 15:45:02 -0400
commit81082c8d7f0ca1207c39b4535c020214ce4728eb (patch)
tree93e26cfa929a2bd6d0cca7b9f24e29dbb23e6c52
parent9ff72bdd61f68d56843e67631cc34c6c66167261 (diff)
parent326f612a9862661377b58c707112fa552ea81209 (diff)
downloadmongo-81082c8d7f0ca1207c39b4535c020214ce4728eb.tar.gz
Merge branch 'master' of git@github.com:mongodb/mongo
-rw-r--r--SConstruct2
-rw-r--r--db/jsobj.cpp1
-rw-r--r--db/jsobj.h17
-rw-r--r--dbtests/basictests.cpp2
-rw-r--r--dbtests/jsobjtests.cpp21
-rw-r--r--dbtests/queryoptimizertests.cpp2
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 );