Sorting on an empty field name causes a flood of assertions which do not clearly indicate that the sort criteria is invalid. Note that in the following case, the only index is the default index on _id. Also note this query was sent via DBDirectClient.
Simplified Query:
{ query: { arrayField: "To the man who only has a hammer, everything he encounters begins to look like a nail. anything" }, orderby: { : -1 } }
From generated C++ code (which is a bit convoluted):
struct GeneratedQuery980 { static Query getQuery() { return sortedQuery; } static BSONObj* getProjection() { return NULL; } static int nToSkip() { return 10; } static int nToLimit() { return -1; } static Query& appendSort(Query& query) { return query.sort(fromjson("{\"\":-1}")); } static Query query; static Query sortedQuery; }; Query GeneratedQuery980::query("{\"arrayField\":'To the man who only has a hammer, everything he encounters begins to look like a nail. anything'}"); Query GeneratedQuery980::sortedQuery = appendSort(GeneratedQuery980::query); ... template <typename Q> struct GeneratedQueryRunner : ClientBase { virtual void run(){ ::mongo::unittest::ScopedProbe::lastQuery = Q::getQuery(); ::mongo::unittest::ScopedProbe::lastLimit = Q::nToLimit(); ::mongo::unittest::ScopedProbe::lastSkip = Q::nToSkip(); ::mongo::unittest::ScopedProbe::lastProjection = Q::getProjection(); ::mongo::unittest::ScopedProbe::lastCount = -1; auto_ptr<DBClientCursor> cursor = _client.query(kNameSpace, Q::getQuery(), Q::nToLimit(), Q::nToSkip(), Q::getProjection()); ASSERT(!error()); int count = 0; while (cursor->more()) { ++count; cursor->next(); } ::mongo::unittest::ScopedProbe::lastCount = count; } }; ... class All : public Suite { public: All() : Suite( "GeneratedQueries" ) { } void setupTests() { add< GeneratedQueryRunner<GeneratedQuery980> >(); } } myall;
Output:
2014-01-19T05:16:14.652-0800 [testsuite] going to run test: GeneratedTests::GeneratedQueryRunner<GeneratedTests::GeneratedQuery980> 2014-01-19T05:16:14.652-0800 [testsuite] Assertion failure !e.eoo() src/mongo/bson/bsonobjbuilder.h 93 2014-01-19T05:16:14.663-0800 [testsuite] 0x1497186 0x1456888 0x143e72f 0x9f2763 0x1104acd 0x1105091 0x11025ec 0x10aadbb 0x10ab42f 0x10ad5ce 0x10aa733 0x1218f29 0x1209108 0x1116547 0x111803f 0xf3408d 0xf24150 0x110e56d 0xb3ce41 0x143a4d3 ./test(_ZN5mongo15printStackTraceERSo+0x26) [0x1497186] ./test(_ZN5mongo10logContextEPKc+0x188) [0x1456888] ./test(_ZN5mongo12verifyFailedEPKcS1_j+0xef) [0x143e72f] ./test() [0x9f2763] ./test(_ZNK5mongo19BtreeKeyGeneratorV120getKeysImplWithArrayESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EEjSB_+0x59d) [0x1104acd] ./test(_ZNK5mongo19BtreeKeyGeneratorV111getKeysImplESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EE+0x151) [0x1105091] ./test(_ZNK5mongo17BtreeKeyGenerator7getKeysERKNS_7BSONObjEPSt3setIS1_NS_10BSONObjCmpESaIS1_EE+0x1cc) [0x11025ec] ./test(_ZNK5mongo21SortStageKeyGenerator11getBtreeKeyERKNS_7BSONObjE+0xab) [0x10aadbb] ./test(_ZNK5mongo21SortStageKeyGenerator10getSortKeyERKNS_16WorkingSetMemberE+0x2f) [0x10ab42f] ./test(_ZN5mongo9SortStage4workEPm+0x38e) [0x10ad5ce] ./test(_ZN5mongo9SkipStage4workEPm+0x33) [0x10aa733] ./test(_ZN5mongo12PlanExecutor7getNextEPNS_7BSONObjEPNS_7DiskLocE+0xb9) [0x1218f29] ./test(_ZN5mongo11newRunQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0x878) [0x1209108] ./test(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x5e7) [0x1116547] ./test(_ZN5mongo14DBDirectClient4callERNS_7MessageES2_bPSs+0x9f) [0x111803f] ./test(_ZN5mongo14DBClientCursor4initEv+0x9d) [0xf3408d] ./test(_ZN5mongo12DBClientBase5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x270) [0xf24150] ./test(_ZN5mongo14DBDirectClient5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x4d) [0x110e56d] ./test(_ZN5mongo8unittest5Suite13runTestObjectIN14GeneratedTests20GeneratedQueryRunnerINS3_17GeneratedQuery980EEEEEvv+0x101) [0xb3ce41] ./test(_ZN5mongo8unittest5Suite3runERKSsi+0x3a3) [0x143a4d3] 2014-01-19T05:16:14.663-0800 [testsuite] Assertion failure !e.eoo() src/mongo/bson/bsonobjbuilder.h 93 2014-01-19T05:16:14.674-0800 [testsuite] 0x1497186 0x1456888 0x143e72f 0x9f2763 0x1104acd 0x1105091 0x11025ec 0x10aadbb 0x10ab42f 0x10ad5ce 0x10aa733 0x1218f29 0x1209108 0x1116547 0x111803f 0xf3408d 0xf24150 0x110e56d 0xb3ce41 0x143a4d3 ./test(_ZN5mongo15printStackTraceERSo+0x26) [0x1497186] ./test(_ZN5mongo10logContextEPKc+0x188) [0x1456888] ./test(_ZN5mongo12verifyFailedEPKcS1_j+0xef) [0x143e72f] ./test() [0x9f2763] ./test(_ZNK5mongo19BtreeKeyGeneratorV120getKeysImplWithArrayESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EEjSB_+0x59d) [0x1104acd] ./test(_ZNK5mongo19BtreeKeyGeneratorV111getKeysImplESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EE+0x151) [0x1105091] ./test(_ZNK5mongo17BtreeKeyGenerator7getKeysERKNS_7BSONObjEPSt3setIS1_NS_10BSONObjCmpESaIS1_EE+0x1cc) [0x11025ec] ./test(_ZNK5mongo21SortStageKeyGenerator11getBtreeKeyERKNS_7BSONObjE+0xab) [0x10aadbb] ./test(_ZNK5mongo21SortStageKeyGenerator10getSortKeyERKNS_16WorkingSetMemberE+0x2f) [0x10ab42f] ./test(_ZN5mongo9SortStage4workEPm+0x38e) [0x10ad5ce] ./test(_ZN5mongo9SkipStage4workEPm+0x33) [0x10aa733] ./test(_ZN5mongo12PlanExecutor7getNextEPNS_7BSONObjEPNS_7DiskLocE+0xb9) [0x1218f29] ./test(_ZN5mongo11newRunQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0x878) [0x1209108] ./test(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x5e7) [0x1116547] ./test(_ZN5mongo14DBDirectClient4callERNS_7MessageES2_bPSs+0x9f) [0x111803f] ./test(_ZN5mongo14DBClientCursor4initEv+0x9d) [0xf3408d] ./test(_ZN5mongo12DBClientBase5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x270) [0xf24150] ./test(_ZN5mongo14DBDirectClient5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x4d) [0x110e56d] ./test(_ZN5mongo8unittest5Suite13runTestObjectIN14GeneratedTests20GeneratedQueryRunnerINS3_17GeneratedQuery980EEEEEvv+0x101) [0xb3ce41] ./test(_ZN5mongo8unittest5Suite3runERKSsi+0x3a3) [0x143a4d3] 2014-01-19T05:16:14.674-0800 [testsuite] Assertion failure !e.eoo() src/mongo/bson/bsonobjbuilder.h 93 2014-01-19T05:16:14.685-0800 [testsuite] 0x1497186 0x1456888 0x143e72f 0x9f2763 0x1104acd 0x1105091 0x11025ec 0x10aadbb 0x10ab42f 0x10ad5ce 0x10aa733 0x1218f29 0x1209108 0x1116547 0x111803f 0xf3408d 0xf24150 0x110e56d 0xb3ce41 0x143a4d3 ./test(_ZN5mongo15printStackTraceERSo+0x26) [0x1497186] ./test(_ZN5mongo10logContextEPKc+0x188) [0x1456888] ./test(_ZN5mongo12verifyFailedEPKcS1_j+0xef) [0x143e72f] ./test() [0x9f2763] ./test(_ZNK5mongo19BtreeKeyGeneratorV120getKeysImplWithArrayESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EEjSB_+0x59d) [0x1104acd] ./test(_ZNK5mongo19BtreeKeyGeneratorV111getKeysImplESt6vectorIPKcSaIS3_EES1_INS_11BSONElementESaIS6_EERKNS_7BSONObjEPSt3setIS9_NS_10BSONObjCmpESaIS9_EE+0x151) [0x1105091] ./test(_ZNK5mongo17BtreeKeyGenerator7getKeysERKNS_7BSONObjEPSt3setIS1_NS_10BSONObjCmpESaIS1_EE+0x1cc) [0x11025ec] ./test(_ZNK5mongo21SortStageKeyGenerator11getBtreeKeyERKNS_7BSONObjE+0xab) [0x10aadbb] ./test(_ZNK5mongo21SortStageKeyGenerator10getSortKeyERKNS_16WorkingSetMemberE+0x2f) [0x10ab42f] ./test(_ZN5mongo9SortStage4workEPm+0x38e) [0x10ad5ce] ./test(_ZN5mongo9SkipStage4workEPm+0x33) [0x10aa733] ./test(_ZN5mongo12PlanExecutor7getNextEPNS_7BSONObjEPNS_7DiskLocE+0xb9) [0x1218f29] ./test(_ZN5mongo11newRunQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0x878) [0x1209108] ./test(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x5e7) [0x1116547] ./test(_ZN5mongo14DBDirectClient4callERNS_7MessageES2_bPSs+0x9f) [0x111803f] ./test(_ZN5mongo14DBClientCursor4initEv+0x9d) [0xf3408d] ./test(_ZN5mongo12DBClientBase5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x270) [0xf24150] ./test(_ZN5mongo14DBDirectClient5queryERKSsNS_5QueryEiiPKNS_7BSONObjEii+0x4d) [0x110e56d] ./test(_ZN5mongo8unittest5Suite13runTestObjectIN14GeneratedTests20GeneratedQueryRunnerINS3_17GeneratedQuery980EEEEEvv+0x101) [0xb3ce41] ./test(_ZN5mongo8unittest5Suite3runERKSsi+0x3a3) [0x143a4d3] 2014-01-19T05:16:14.685-0800 [testsuite] FAIL: GeneratedTests::GeneratedQueryRunner<GeneratedTests::GeneratedQuery980> Expected: !error() @src/mongo/dbtests/QA401.cpp:83