diff options
author | Ben Becker <ben.becker@10gen.com> | 2013-03-12 11:39:15 -0700 |
---|---|---|
committer | Dan Pasette <dan@10gen.com> | 2013-03-28 18:36:12 -0400 |
commit | 7ec1528ae3b136da4ff37b07a0dea57f2795d387 (patch) | |
tree | 47865084f6bdc9fc89f2ee250aa0e8a8fc3c7fbd | |
parent | 182955c65bcd2db6f63e9b9dd0909422772b9e52 (diff) | |
download | mongo-7ec1528ae3b136da4ff37b07a0dea57f2795d387.tar.gz |
SERVER-8799: handle symbol BSON type as string in v8
-rw-r--r-- | src/mongo/dbtests/jstests.cpp | 16 | ||||
-rw-r--r-- | src/mongo/scripting/engine_v8.cpp | 2 |
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: |