summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Becker <ben.becker@10gen.com>2013-03-12 11:39:15 -0700
committerDan Pasette <dan@10gen.com>2013-03-28 18:36:12 -0400
commit7ec1528ae3b136da4ff37b07a0dea57f2795d387 (patch)
tree47865084f6bdc9fc89f2ee250aa0e8a8fc3c7fbd
parent182955c65bcd2db6f63e9b9dd0909422772b9e52 (diff)
downloadmongo-7ec1528ae3b136da4ff37b07a0dea57f2795d387.tar.gz
SERVER-8799: handle symbol BSON type as string in v8
-rw-r--r--src/mongo/dbtests/jstests.cpp16
-rw-r--r--src/mongo/scripting/engine_v8.cpp2
2 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/dbtests/jstests.cpp b/src/mongo/dbtests/jstests.cpp
index 5e5bd597ee2..568d21a57c5 100644
--- a/src/mongo/dbtests/jstests.cpp
+++ b/src/mongo/dbtests/jstests.cpp
@@ -453,6 +453,22 @@ namespace JSTests {
ASSERT_EQUALS( Array, out.firstElement().type() );
}
+ // symbol
+ {
+ // test mutable object with symbol type
+ BSONObjBuilder builder;
+ builder.appendSymbol("sym", "value");
+ BSONObj in = builder.done();
+ s->setObject( "x", in, false );
+ BSONObj out = s->getObject( "x" );
+ ASSERT_EQUALS( Symbol, out.firstElement().type() );
+
+ // readonly
+ s->setObject( "x", in, true );
+ out = s->getObject( "x" );
+ ASSERT_EQUALS( Symbol, out.firstElement().type() );
+ }
+
delete s;
}
};
diff --git a/src/mongo/scripting/engine_v8.cpp b/src/mongo/scripting/engine_v8.cpp
index f5adc04fd67..b37416778d8 100644
--- a/src/mongo/scripting/engine_v8.cpp
+++ b/src/mongo/scripting/engine_v8.cpp
@@ -1318,6 +1318,7 @@ namespace mongo {
log() << "warning: CodeWScope doesn't transfer to db.eval" << endl;
o->ForceSet(name, newFunction(f.codeWScopeCode()));
break;
+ case mongo::Symbol:
case mongo::String:
o->ForceSet(name, v8::String::New(f.valuestr()));
break;
@@ -1519,6 +1520,7 @@ namespace mongo {
if (!elem.codeWScopeObject().isEmpty())
log() << "warning: CodeWScope doesn't transfer to db.eval" << endl;
return newFunction(elem.codeWScopeCode());
+ case mongo::Symbol:
case mongo::String:
return v8::String::New(elem.valuestr());
case mongo::jstOID: