Files
mongo/jstests/core/query/explain/explain_delete.js
Nick Zolnierz 668a6f4e9e SERVER-94971 Add query ownership for files under jstests/libs (#27763)
GitOrigin-RevId: 1cd8a1cdb3d45876003ad3ccddd4d466cd9fb66c
2024-10-03 16:08:45 +00:00

48 lines
1.5 KiB
JavaScript

/**
* Tests for explaining the delete command.
*
* @tags: [
* no_selinux,
* requires_fastcount,
* requires_fcv_61,
* requires_non_retryable_writes,
* # Pre-images requires doc-by-doc deletion and this test relies on BATCHED_DELETE
* incompatible_with_preimages_by_default,
* ]
*/
import {checkNWouldDelete} from "jstests/libs/query/analyze_plan.js";
var collName = "jstests_explain_delete";
var t = db[collName];
t.drop();
var explain;
// Explain delete against an empty collection.
assert.commandWorked(db.createCollection(t.getName()));
explain = db.runCommand({explain: {delete: collName, deletes: [{q: {a: 1}, limit: 0}]}});
checkNWouldDelete(explain, 0);
// Add an index but no data, and check that the explain still works.
t.createIndex({a: 1});
explain = db.runCommand({explain: {delete: collName, deletes: [{q: {a: 1}, limit: 0}]}});
checkNWouldDelete(explain, 0);
// Add some copies of the same document.
for (var i = 0; i < 10; i++) {
t.insert({a: 1});
}
assert.eq(10, t.count());
// Run an explain which shows that all 10 documents *would* be deleted.
explain = db.runCommand({explain: {delete: collName, deletes: [{q: {a: 1}, limit: 0}]}});
checkNWouldDelete(explain, 10);
// Make sure all 10 documents are still there.
assert.eq(10, t.count());
// If we run the same thing without the explain, then all 10 docs should be deleted.
var deleteResult = db.runCommand({delete: collName, deletes: [{q: {a: 1}, limit: 0}]});
assert.commandWorked(deleteResult);
assert.eq(0, t.count());