mirror of https://github.com/mongodb/mongo
27 lines
967 B
JavaScript
27 lines
967 B
JavaScript
/**
|
|
* Test the behavior of very, very long regex patterns.
|
|
*/
|
|
(function() {
|
|
"use strict";
|
|
|
|
const coll = db.regex_limit;
|
|
coll.drop();
|
|
|
|
const kMaxRegexPatternLen = 32761;
|
|
|
|
// Populate the collection with a document containing a very long string.
|
|
assert.commandWorked(coll.insert({z: "c".repeat(100000)}));
|
|
|
|
// Test that a regex exactly at the maximum allowable pattern length can find a document.
|
|
const patternMaxLen = "c".repeat(kMaxRegexPatternLen);
|
|
assert.eq(1, coll.find({z: {$regex: patternMaxLen}}).itcount());
|
|
assert.eq(1, coll.find({z: {$in: [new RegExp(patternMaxLen)]}}).itcount());
|
|
|
|
// Test that a regex pattern exceeding the limit fails.
|
|
const patternTooLong = "c".repeat(kMaxRegexPatternLen + 1);
|
|
assert.commandFailedWithCode(coll.runCommand("find", {filter: {z: {$regex: patternTooLong}}}),
|
|
51091);
|
|
assert.commandFailedWithCode(
|
|
coll.runCommand("find", {filter: {z: {$in: [new RegExp(patternTooLong)]}}}), 51091);
|
|
}());
|