summaryrefslogtreecommitdiff
path: root/jstests/core/query/sort/sortc.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/query/sort/sortc.js')
-rw-r--r--jstests/core/query/sort/sortc.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/jstests/core/query/sort/sortc.js b/jstests/core/query/sort/sortc.js
new file mode 100644
index 00000000000..975b3acf764
--- /dev/null
+++ b/jstests/core/query/sort/sortc.js
@@ -0,0 +1,34 @@
+// Test sorting with skipping and multiple candidate query plans.
+(function() {
+"use strict";
+
+const coll = db.jstests_sortc;
+coll.drop();
+
+assert.commandWorked(coll.insert({a: 1}));
+assert.commandWorked(coll.insert({a: 2}));
+
+function checkA(a, sort, skip, query) {
+ query = query || {};
+ assert.eq(a, coll.find(query).sort(sort).skip(skip)[0].a);
+}
+
+function checkSortAndSkip() {
+ checkA(1, {a: 1}, 0);
+ checkA(2, {a: 1}, 1);
+
+ checkA(1, {a: 1}, 0, {a: {$gt: 0}, b: null});
+ checkA(2, {a: 1}, 1, {a: {$gt: 0}, b: null});
+
+ checkA(2, {a: -1}, 0);
+ checkA(1, {a: -1}, 1);
+
+ checkA(2, {a: -1}, 0, {a: {$gt: 0}, b: null});
+ checkA(1, {a: -1}, 1, {a: {$gt: 0}, b: null});
+}
+
+checkSortAndSkip();
+
+assert.commandWorked(coll.createIndex({a: 1}));
+checkSortAndSkip();
+}());