summaryrefslogtreecommitdiff
path: root/jstests/core/query/sort/sort4.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/query/sort/sort4.js')
-rw-r--r--jstests/core/query/sort/sort4.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/jstests/core/query/sort/sort4.js b/jstests/core/query/sort/sort4.js
new file mode 100644
index 00000000000..e74df1f4bd6
--- /dev/null
+++ b/jstests/core/query/sort/sort4.js
@@ -0,0 +1,45 @@
+(function() {
+"use strict";
+
+const coll = db.sort4;
+coll.drop();
+
+function nice(sort, correct, extra) {
+ const c = coll.find().sort(sort);
+ let s = "";
+ c.forEach(function(z) {
+ if (s.length) {
+ s += ",";
+ }
+ s += z.name;
+ if (z.prename) {
+ s += z.prename;
+ }
+ });
+ if (correct) {
+ assert.eq(correct, s, tojson(sort) + "(" + extra + ")");
+ }
+ return s;
+}
+
+assert.commandWorked(coll.insert({name: 'A', prename: 'B'}));
+assert.commandWorked(coll.insert({name: 'A', prename: 'C'}));
+assert.commandWorked(coll.insert({name: 'B', prename: 'B'}));
+assert.commandWorked(coll.insert({name: 'B', prename: 'D'}));
+
+nice({name: 1, prename: 1}, "AB,AC,BB,BD", "s3");
+nice({prename: 1, name: 1}, "AB,BB,AC,BD", "s3");
+
+assert.commandWorked(coll.insert({name: 'A'}));
+nice({name: 1, prename: 1}, "A,AB,AC,BB,BD", "e1");
+
+assert.commandWorked(coll.insert({name: 'C'}));
+nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2"); // SERVER-282
+
+assert.commandWorked(coll.createIndex({name: 1, prename: 1}));
+nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ia"); // SERVER-282
+
+assert.commandWorked(coll.dropIndexes());
+assert.commandWorked(coll.createIndex({name: 1}));
+nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ib"); // SERVER-282
+}());