summaryrefslogtreecommitdiff
path: root/jstests/core/index/unique_index_insert.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/index/unique_index_insert.js')
-rw-r--r--jstests/core/index/unique_index_insert.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/jstests/core/index/unique_index_insert.js b/jstests/core/index/unique_index_insert.js
new file mode 100644
index 00000000000..32495406f63
--- /dev/null
+++ b/jstests/core/index/unique_index_insert.js
@@ -0,0 +1,37 @@
+/**
+ * Regression test confirming unique index constraints are upheld. See SERVER-58943 for details.
+ *
+ * @tags: [
+ * cannot_create_unique_index_when_using_hashed_shard_key,
+ * does_not_support_transactions
+ * ]
+ */
+(function() {
+"use strict";
+const dbName = "unique_index_insert";
+const collName = "test";
+const testDB = db.getSiblingDB("unique_index_insert");
+
+testDB[collName].drop();
+const coll = testDB[collName];
+
+assert.commandWorked(coll.createIndex({i: 1, x: -1}, {unique: true}));
+
+const n = 100;
+const xStr = "x".repeat(50000);
+
+const bulk = coll.initializeUnorderedBulkOp();
+for (let i = 0; i < n; i++) {
+ bulk.insert({i, x: xStr});
+}
+assert.commandWorked(bulk.execute());
+
+assert.eq(coll.find().itcount(), 100);
+
+const maxIters = 2;
+for (let iter = 0; iter < maxIters; iter++) {
+ for (let i = 0; i < n; i++) {
+ assert.commandFailed(coll.insert({i, x: xStr}), `Failed with i ${i}, iter ${iter}`);
+ }
+}
+}());