summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Rassi <rassi@10gen.com>2013-05-30 12:21:13 -0400
committerJason Rassi <rassi@10gen.com>2013-05-30 12:25:11 -0400
commit57a80ea1d0ae34124a5c408466834eda31e4578f (patch)
tree00881d0cbab1039f41f286ed5d4a8abf4e5fbe85 /src
parent29623818ca553d7231a8eb7274ffb16f233670e8 (diff)
downloadmongo-57a80ea1d0ae34124a5c408466834eda31e4578f.tar.gz
SERVER-9796 FTSSpec::fixSpec() should not re-order _fts* fields
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/fts/fts_spec.cpp3
-rw-r--r--src/mongo/db/fts/fts_spec_test.cpp6
2 files changed, 7 insertions, 2 deletions
diff --git a/src/mongo/db/fts/fts_spec.cpp b/src/mongo/db/fts/fts_spec.cpp
index 238065983cb..eb534f10a3e 100644
--- a/src/mongo/db/fts/fts_spec.cpp
+++ b/src/mongo/db/fts/fts_spec.cpp
@@ -301,7 +301,8 @@ namespace mongo {
BSONElement e = i.next();
if ( str::equals( e.fieldName(), "_fts" ) ||
str::equals( e.fieldName(), "_ftsx" ) ) {
- continue;
+ addedFtsStuff = true;
+ b.append( e );
}
else if ( e.type() == String &&
( str::equals( "fts", e.valuestr() ) ||
diff --git a/src/mongo/db/fts/fts_spec_test.cpp b/src/mongo/db/fts/fts_spec_test.cpp
index 541bd4a56d8..df4ff719f02 100644
--- a/src/mongo/db/fts/fts_spec_test.cpp
+++ b/src/mongo/db/fts/fts_spec_test.cpp
@@ -97,10 +97,14 @@ namespace mongo {
TEST( FTSSpec, Extra2 ) {
BSONObj user = BSON( "key" << BSON( "data" << "fts" << "x" << 1 ) );
- FTSSpec spec( FTSSpec::fixSpec( user ) );
+ BSONObj fixed = FTSSpec::fixSpec( user );
+ FTSSpec spec( fixed );
ASSERT_EQUALS( 0U, spec.numExtraBefore() );
ASSERT_EQUALS( 1U, spec.numExtraAfter() );
ASSERT_EQUALS( StringData("x"), spec.extraAfter(0) );
+
+ BSONObj fixed2 = FTSSpec::fixSpec( fixed );
+ ASSERT_EQUALS( fixed, fixed2 );
}
TEST( FTSSpec, Extra3 ) {