diff options
Diffstat (limited to 'jstests/core/query/distinct/distinct4.js')
-rw-r--r-- | jstests/core/query/distinct/distinct4.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/jstests/core/query/distinct/distinct4.js b/jstests/core/query/distinct/distinct4.js new file mode 100644 index 00000000000..a66022ecbaa --- /dev/null +++ b/jstests/core/query/distinct/distinct4.js @@ -0,0 +1,54 @@ +// Vaildate input to distinct command. SERVER-12642 + +(function() { +"use strict"; + +var t = db.distinct4; + +t.drop(); +t.save({a: null}); +t.save({a: 1}); +t.save({a: 1}); +t.save({a: 2}); +t.save({a: 3}); + +// first argument should be a string or error + +// from shell helper +assert.throws(function() { + t.distinct({a: 1}); +}); + +// from command interface +assert.commandFailedWithCode(t.runCommand("distinct", {"key": {a: 1}}), ErrorCodes.TypeMismatch); + +// second argument should be a document or error + +// from shell helper +assert.throws(function() { + t.distinct('a', '1'); +}); + +// from command interface +assert.commandFailedWithCode(t.runCommand("distinct", {"key": "a", "query": "a"}), + ErrorCodes.TypeMismatch); + +// empty query clause should not cause error + +// from shell helper +var a = assert.doesNotThrow(function() { + return t.distinct('a'); +}); +// [ null, 1, 2, 3 ] +assert.eq(4, a.length, tojson(a)); +assert.contains(null, a); +assert.contains(1, a); +assert.contains(2, a); +assert.contains(3, a); + +// from command interface +assert.commandWorked(t.runCommand("distinct", {"key": "a"})); + +// embedded nulls are prohibited in the key field +assert.commandFailedWithCode(t.runCommand("distinct", {"key": "a\0b"}), 31032); +})(); |