summaryrefslogtreecommitdiff
path: root/jstests/core/idhack.js
diff options
context:
space:
mode:
authorAnna Wawrzyniak <anna.wawrzyniak@mongodb.com>2022-10-12 14:45:02 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-12 16:15:24 +0000
commit2e51cfe597385fadd4d7610ada1111b00dccb14f (patch)
tree242f32d6841e1eaed65c8928474e4e9eef262ffb /jstests/core/idhack.js
parent57746791113c36c0c6a010da2deb580ea3cb97ad (diff)
downloadmongo-2e51cfe597385fadd4d7610ada1111b00dccb14f.tar.gz
SERVER-66435 Always use classic engine for IDhack plans
Diffstat (limited to 'jstests/core/idhack.js')
-rw-r--r--jstests/core/idhack.js16
1 files changed, 7 insertions, 9 deletions
diff --git a/jstests/core/idhack.js b/jstests/core/idhack.js
index 69c157221e0..e60bd9c8a50 100644
--- a/jstests/core/idhack.js
+++ b/jstests/core/idhack.js
@@ -11,7 +11,7 @@ t.drop();
// Include helpers for analyzing explain output.
load("jstests/libs/analyze_plan.js");
-load("jstests/libs/sbe_explain_helpers.js");
+load("jstests/libs/sbe_util.js"); // For checkSBEEnabled.
assert.commandWorked(t.insert({_id: {x: 1}, z: 1}));
assert.commandWorked(t.insert({_id: {x: 2}, z: 2}));
@@ -40,34 +40,32 @@ let explain = t.find(query).explain("allPlansExecution");
assert.eq(1, explain.executionStats.nReturned, explain);
assert.eq(1, explain.executionStats.totalKeysExamined, explain);
let winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(
- isIdhack(db, winningPlan), isIdIndexScan(db, winningPlan, "FETCH"), db, winningPlan);
+assert(isIdhack(db, winningPlan), winningPlan);
// ID hack cannot be used with hint().
t.createIndex({_id: 1, a: 1});
explain = t.find(query).hint({_id: 1, a: 1}).explain();
winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(!isIdhack(db, winningPlan), isIxscan(db, winningPlan), db, winningPlan);
+assert(!isIdhack(db, winningPlan), winningPlan);
// ID hack cannot be used with skip().
explain = t.find(query).skip(1).explain();
winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(!isIdhack(db, winningPlan), isIxscan(db, winningPlan), db, winningPlan);
+assert(!isIdhack(db, winningPlan), winningPlan);
// ID hack cannot be used with a regex predicate.
assert.commandWorked(t.insert({_id: "abc"}));
explain = t.find({_id: /abc/}).explain();
assert.eq({_id: "abc"}, t.findOne({_id: /abc/}));
winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(!isIdhack(db, winningPlan), isIxscan(db, winningPlan), db, winningPlan);
+assert(!isIdhack(db, winningPlan), winningPlan);
// Covered query returning _id field only can be handled by ID hack.
const isSbeEnabled = checkSBEEnabled(db, ["featureFlagSbeFull"]);
const parentStage = isSbeEnabled ? "PROJECTION_COVERED" : "FETCH";
explain = t.find(query, {_id: 1}).explain();
winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(
- isIdhack(db, winningPlan), isIdIndexScan(db, winningPlan, parentStage), db, winningPlan);
+assert(isIdhack(db, winningPlan), winningPlan);
// Check doc from covered ID hack query.
assert.eq({_id: {x: 2}}, t.findOne(query, {_id: 1}), explain);
@@ -116,5 +114,5 @@ assert.eq(0, t.find({_id: 1}).hint({_id: 1}).min({_id: 2}).itcount());
explain = t.find({_id: 2}).hint({_id: 1}).min({_id: 1}).max({_id: 3}).explain();
winningPlan = getWinningPlan(explain.queryPlanner);
-engineSpecificAssertion(!isIdhack(db, winningPlan), isIxscan(db, winningPlan), db, winningPlan);
+assert(!isIdhack(db, winningPlan), winningPlan);
})();