diff options
author | Mihai Andrei <mihai.andrei@10gen.com> | 2022-05-17 02:12:58 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-05-17 02:38:30 +0000 |
commit | 7ed364e8922e42822c2d1bc2e41a66159eb7ddcb (patch) | |
tree | 02e786c32a59ea572097ab0e9269846dc1d664e1 /jstests | |
parent | 252235fda4d45e85db342bb6437b1587b980b1ed (diff) | |
download | mongo-7ed364e8922e42822c2d1bc2e41a66159eb7ddcb.tar.gz |
SERVER-66445 Make the classic engine the default execution engine
(cherry picked from commit 40109e237a0ffaf41d26b5465920d12bc6a3f304)
Diffstat (limited to 'jstests')
17 files changed, 128 insertions, 99 deletions
diff --git a/jstests/concurrency/fsm_workloads/agg_lookup.js b/jstests/concurrency/fsm_workloads/agg_lookup.js index 9395c503d3c..73a930eb35b 100644 --- a/jstests/concurrency/fsm_workloads/agg_lookup.js +++ b/jstests/concurrency/fsm_workloads/agg_lookup.js @@ -74,7 +74,7 @@ var $config = (function() { getParameter: 1, featureFlagShardedLookup: 1, featureFlagSBELookupPushdown: 1, - internalQueryForceClassicEngine: 1 + internalQueryEnableSlotBasedExecutionEngine: 1 }); const isShardedLookupEnabled = getParam.hasOwnProperty("featureFlagShardedLookup") && getParam.featureFlagShardedLookup.value; @@ -97,9 +97,9 @@ var $config = (function() { assertWhenOwnColl.eq(this.numDocs, db[collName].find().itcount()); const isLookupPushdownEnabled = getParam.hasOwnProperty("featureFlagSBELookupPushdown") && - getParam.hasOwnProperty("internalQueryForceClassicEngine") && + getParam.hasOwnProperty("internalQueryEnableSlotBasedExecutionEngine") && getParam.featureFlagSBELookupPushdown.value && - !getParam.internalQueryForceClassicEngine.value; + getParam.internalQueryEnableSlotBasedExecutionEngine.value; this.allowDiskUse = true; // If $lookup pushdown into SBE is enabled, we select a random join algorithm to use and diff --git a/jstests/concurrency/fsm_workloads/find_flip_sbe_enabled.js b/jstests/concurrency/fsm_workloads/find_flip_sbe_enabled.js index 67883f034cc..b284b75b9e8 100644 --- a/jstests/concurrency/fsm_workloads/find_flip_sbe_enabled.js +++ b/jstests/concurrency/fsm_workloads/find_flip_sbe_enabled.js @@ -1,12 +1,10 @@ 'use strict'; /** - * Sets the internalQueryForceClassicEngine flag to true and false, and + * Sets the internalQueryEnableSlotBasedExecutionEngine flag to true and false, and * asserts that find queries using the plan cache produce the correct results. * * @tags: [ - * # Needed as the setParameter for ForceClassicEngine was introduced in 5.1. - * requires_fcv_51, * # Our test infrastructure prevents tests which use the 'setParameter' command from running in * # stepdown suites, since parameters are local to each mongod in the replica set. * does_not_support_stepdowns, @@ -22,10 +20,10 @@ var $config = (function() { function setup(db, collName, cluster) { const originalParamValue = - db.adminCommand({getParameter: 1, internalQueryForceClassicEngine: 1}); + db.adminCommand({getParameter: 1, internalQueryEnableSlotBasedExecutionEngine: 1}); assertAlways.commandWorked(originalParamValue); - assert(originalParamValue.hasOwnProperty("internalQueryForceClassicEngine")); - this.originalParamValue = originalParamValue.internalQueryForceClassicEngine; + assert(originalParamValue.hasOwnProperty("internalQueryEnableSlotBasedExecutionEngine")); + this.originalParamValue = originalParamValue.internalQueryEnableSlotBasedExecutionEngine; const coll = db.getCollection(getCollectionName(collName)); for (let i = 0; i < 10; ++i) { assertAlways.commandWorked( @@ -37,14 +35,14 @@ var $config = (function() { } let states = (function() { - function setForceClassicEngineOn(db, collName) { - assertAlways.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + function setEnableSlotBasedExecutionEngineOn(db, collName) { + assertAlways.commandWorked(db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); } - function setForceClassicEngineOff(db, collName) { - assertAlways.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + function setEnableSlotBasedExecutionEngineOff(db, collName) { + assertAlways.commandWorked(db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); } function runQueriesAndCheckResults(db, collName) { @@ -79,8 +77,8 @@ var $config = (function() { } return { - setForceClassicEngineOn: setForceClassicEngineOn, - setForceClassicEngineOff: setForceClassicEngineOff, + setEnableSlotBasedExecutionEngineOn: setEnableSlotBasedExecutionEngineOn, + setEnableSlotBasedExecutionEngineOff: setEnableSlotBasedExecutionEngineOff, runQueriesAndCheckResults: runQueriesAndCheckResults, createIndex: createIndex, dropIndex: dropIndex @@ -88,36 +86,36 @@ var $config = (function() { })(); let transitions = { - setForceClassicEngineOn: { - setForceClassicEngineOn: 0.1, - setForceClassicEngineOff: 0.1, + setEnableSlotBasedExecutionEngineOn: { + setEnableSlotBasedExecutionEngineOn: 0.1, + setEnableSlotBasedExecutionEngineOff: 0.1, runQueriesAndCheckResults: 0.8 }, - setForceClassicEngineOff: { - setForceClassicEngineOn: 0.1, - setForceClassicEngineOff: 0.1, + setEnableSlotBasedExecutionEngineOff: { + setEnableSlotBasedExecutionEngineOn: 0.1, + setEnableSlotBasedExecutionEngineOff: 0.1, runQueriesAndCheckResults: 0.8 }, runQueriesAndCheckResults: { - setForceClassicEngineOn: 0.1, - setForceClassicEngineOff: 0.1, + setEnableSlotBasedExecutionEngineOn: 0.1, + setEnableSlotBasedExecutionEngineOff: 0.1, runQueriesAndCheckResults: 0.78, createIndex: 0.02, }, createIndex: { - setForceClassicEngineOn: 0.1, - setForceClassicEngineOff: 0.1, + setEnableSlotBasedExecutionEngineOn: 0.1, + setEnableSlotBasedExecutionEngineOff: 0.1, runQueriesAndCheckResults: 0.78, createIndex: 0.01, dropIndex: 0.01 }, dropIndex: { - setForceClassicEngineOn: 0.1, - setForceClassicEngineOff: 0.1, + setEnableSlotBasedExecutionEngineOn: 0.1, + setEnableSlotBasedExecutionEngineOff: 0.1, runQueriesAndCheckResults: 0.78, createIndex: 0.02, } @@ -127,15 +125,15 @@ var $config = (function() { // Restore the original state of the ForceClassicEngine parameter. const setParam = this.originalParamValue; cluster.executeOnMongodNodes(function(db) { - assertAlways.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: setParam})); + assertAlways.commandWorked(db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: setParam})); }); } return { threadCount: 10, iterations: 100, - startState: 'setForceClassicEngineOn', + startState: 'setEnableSlotBasedExecutionEngineOn', states: states, transitions: transitions, setup: setup, diff --git a/jstests/libs/sbe_util.js b/jstests/libs/sbe_util.js index 2d85bbb4f79..fe623fe6d7e 100644 --- a/jstests/libs/sbe_util.js +++ b/jstests/libs/sbe_util.js @@ -24,8 +24,8 @@ function checkSBEEnabled(theDB, featureFlags = []) { return false; } - // Find a non-mongos node and check whether its forceClassicEngine flag is on. We - // assume either all nodes in the cluster have SBE disabled or none. + // Find a non-mongos node and check whether its SBE flag is on. We assume either + // all nodes in the cluster have SBE disabled or none. for (const node of nodes) { try { const conn = new Mongo(node); @@ -38,16 +38,17 @@ function checkSBEEnabled(theDB, featureFlags = []) { internalQueryForceClassicEngine: 1, internalQueryEnableSlotBasedExecutionEngine: 1 }); - if (getParam.hasOwnProperty("internalQueryForceClassicEngine") && - !getParam.internalQueryForceClassicEngine) { - checkResult = true; - } - // Some versions use a different parameter to enable SBE instead of disabling it. if (getParam.hasOwnProperty("internalQueryEnableSlotBasedExecutionEngine") && getParam.internalQueryEnableSlotBasedExecutionEngine) { checkResult = true; } + // Some versions use a different parameter to disable SBE instead of enabling it. + if (getParam.hasOwnProperty("internalQueryForceClassicEngine") && + !getParam.internalQueryForceClassicEngine) { + checkResult = true; + } + featureFlags.forEach(function(featureFlag) { const featureFlagParam = conn.adminCommand({getParameter: 1, [featureFlag]: 1}); checkResult = checkResult && featureFlagParam.hasOwnProperty(featureFlag) && diff --git a/jstests/multiVersion/targetedTestsLastContinuousFeatures/accumulator_fix_last_continuous.js b/jstests/multiVersion/targetedTestsLastContinuousFeatures/accumulator_fix_last_continuous.js index e63b1d69b59..75699597ffa 100644 --- a/jstests/multiVersion/targetedTestsLastContinuousFeatures/accumulator_fix_last_continuous.js +++ b/jstests/multiVersion/targetedTestsLastContinuousFeatures/accumulator_fix_last_continuous.js @@ -33,19 +33,37 @@ load('jstests/multiVersion/libs/multi_cluster.js'); // For upgradeCluster() st.rs1.getSecondary().getDB(jsTestName()) ]; + function setEngine(db, turnOnSBE) { + // Based on which version we are running, set the appropriate parameter which + // controls the execution engine. + const res = db.adminCommand({ + getParameter: 1, + internalQueryEnableSlotBasedExecutionEngine: 1, + internalQueryForceClassicEngine: 1 + }); + + if (res.hasOwnProperty("internalQueryEnableSlotBasedExecutionEngine")) { + assert.commandWorked( + db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: turnOnSBE}), + `at node ${db.getMongo().host}`); + } else { + assert(res.hasOwnProperty("internalQueryForceClassicEngine")); + assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: !turnOnSBE}), + `at node ${db.getMongo().host}`); + } + } + // Turns to the classic engine at the shards. - dbs.forEach((db) => assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false}), - `at node ${db.getMongo().host}`)); + dbs.forEach((db) => setEngine(db, false /* turnOnSBE */)); // Verifies that the classic engine's results are same as the expected results. const classicRes = coll.aggregate(pipeline).toArray(); verifyThis(classicRes); // Turns to the SBE engine at the shards. - dbs.forEach((db) => assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true}), - `at node ${db.getMongo().host}`)); + dbs.forEach((db) => setEngine(db, true /* turnOnSBE */)); // Verifies that the SBE engine's results are same as the expected results. const sbeRes = coll.aggregate(pipeline).toArray(); diff --git a/jstests/multiVersion/targetedTestsLastLtsFeatures/accumulator_fix_last_lts.js b/jstests/multiVersion/targetedTestsLastLtsFeatures/accumulator_fix_last_lts.js index e8d4bf71c14..8e8d6573796 100644 --- a/jstests/multiVersion/targetedTestsLastLtsFeatures/accumulator_fix_last_lts.js +++ b/jstests/multiVersion/targetedTestsLastLtsFeatures/accumulator_fix_last_lts.js @@ -34,12 +34,14 @@ load('jstests/multiVersion/libs/multi_cluster.js'); // For upgradeCluster() st.rs1.getSecondary().getDB(jsTestName()) ]; - // In the last-lts, we don't have the 'internalQueryForceClassicEngine' query knob. + // In the last-lts, we don't have the 'internalQueryEnableSlotBasedExecutionEngine' + // query knob. if (isGreaterLastContinous) { // Turns to the classic engine at the shards. dbs.forEach( (db) => assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false}), + db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false}), `at node ${db.getMongo().host}`)); } @@ -47,13 +49,14 @@ load('jstests/multiVersion/libs/multi_cluster.js'); // For upgradeCluster() const classicRes = coll.aggregate(pipeline).toArray(); verifyThis(classicRes); - // In the last-lts, we have neither the 'internalQueryForceClassicEngine' query knob - // nor the SBE $group pushdown feature. + // In the last-lts, we have neither the 'internalQueryEnableSlotBasedExecutionEngine' + // query knob nor the SBE $group pushdown feature. if (isGreaterLastContinous) { // Turns to the SBE engine at the shards. dbs.forEach( (db) => assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true}), + db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true}), `at node ${db.getMongo().host}`)); // Verifies that the SBE engine's results are same as the expected results. diff --git a/jstests/noPassthrough/accumulator_bug_fix.js b/jstests/noPassthrough/accumulator_bug_fix.js index be3347f6018..060b4a5fb7d 100644 --- a/jstests/noPassthrough/accumulator_bug_fix.js +++ b/jstests/noPassthrough/accumulator_bug_fix.js @@ -27,7 +27,7 @@ // Turns on the classical engine. assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); const pipeline = [{$group: {_id: "$k", o: accSpec}}, {$group: {_id: "$o"}}]; @@ -76,13 +76,13 @@ // Turns on the classical engine. assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); const classicRes = assert.commandWorked(db.runCommand(aggCmd)).cursor.firstBatch; assert.eq(classicRes, expectedRes, testDesc); // Turns off the classical engine. assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); const sbeRes = assert.commandWorked(db.runCommand(aggCmd)).cursor.firstBatch; assert.eq(sbeRes, expectedRes, testDesc); }; @@ -240,20 +240,20 @@ let verifyShardedAccumulatorResultsOnBothEngine = (testDesc, coll, pipeline, expectedRes) => { // Turns to the classic engine at the shards. - assert.commandWorked( - dbAtShard0.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); - assert.commandWorked( - dbAtShard1.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + assert.commandWorked(dbAtShard0.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); + assert.commandWorked(dbAtShard1.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); // Verifies that the classic engine's results are same as the expected results. const classicRes = coll.aggregate(pipeline).toArray(); assert.eq(classicRes, expectedRes, testDesc); // Turns to the SBE engine at the shards. - assert.commandWorked( - dbAtShard0.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); - assert.commandWorked( - dbAtShard1.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + assert.commandWorked(dbAtShard0.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); + assert.commandWorked(dbAtShard1.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); // Verifies that the SBE engine's results are same as the expected results. const sbeRes = coll.aggregate(pipeline).toArray(); diff --git a/jstests/noPassthrough/agg_group.js b/jstests/noPassthrough/agg_group.js index 234237baf72..885c43852d2 100644 --- a/jstests/noPassthrough/agg_group.js +++ b/jstests/noPassthrough/agg_group.js @@ -42,8 +42,8 @@ st.ensurePrimaryShard(db.getName(), st.shard0.shardName); let assertShardedGroupResultsMatch = (coll, pipeline) => { // Turns to the classic engine at the shard before figuring out its result. - assert.commandWorked( - dbAtShard.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + assert.commandWorked(dbAtShard.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); // Collects the classic engine's result as the expected result, executing the pipeline at the // mongos. @@ -52,8 +52,8 @@ let assertShardedGroupResultsMatch = (coll, pipeline) => { .cursor.firstBatch; // Turns to the SBE engine at the shard. - assert.commandWorked( - dbAtShard.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + assert.commandWorked(dbAtShard.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); // Verifies that the SBE engine's results are same as the expected results, executing the // pipeline at the mongos. diff --git a/jstests/noPassthrough/profile_operation_metrics.js b/jstests/noPassthrough/profile_operation_metrics.js index 41da73e9e50..5ef83ba6d61 100644 --- a/jstests/noPassthrough/profile_operation_metrics.js +++ b/jstests/noPassthrough/profile_operation_metrics.js @@ -20,13 +20,15 @@ const isDebugBuild = (db) => { return db.adminCommand('buildInfo').debug; }; const isGroupPushdownEnabled = (db) => { - const internalQueryForceClassicEngine = - assert.commandWorked(db.adminCommand({getParameter: 1, internalQueryForceClassicEngine: 1})) - .internalQueryForceClassicEngine; + const internalQueryEnableSlotBasedExecutionEngine = + assert + .commandWorked( + db.adminCommand({getParameter: 1, internalQueryEnableSlotBasedExecutionEngine: 1})) + .internalQueryEnableSlotBasedExecutionEngine; const featureFlagSBEGroupPushdown = assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagSBEGroupPushdown: 1})) .featureFlagSBEGroupPushdown.value; - return !internalQueryForceClassicEngine && featureFlagSBEGroupPushdown; + return internalQueryEnableSlotBasedExecutionEngine && featureFlagSBEGroupPushdown; }; const assertMetricsExist = (profilerEntry) => { diff --git a/jstests/noPassthrough/query_engine_stats.js b/jstests/noPassthrough/query_engine_stats.js index 492b4792efe..3e6b0ebe938 100644 --- a/jstests/noPassthrough/query_engine_stats.js +++ b/jstests/noPassthrough/query_engine_stats.js @@ -107,7 +107,8 @@ function compareQueryEngineCounters(expectedCounters) { } // Start with SBE off. -assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); +assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); // Run a find command. let expectedCounters = generateExpectedCounters(engine.find.classic); @@ -142,7 +143,8 @@ compareQueryEngineCounters(expectedCounters); verifyProfiler(queryComment, engine.find.classic); // Turn SBE on. -assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); +assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); // Run a find command. expectedCounters = generateExpectedCounters(engine.find.sbe); diff --git a/jstests/noPassthrough/query_knobs_validation.js b/jstests/noPassthrough/query_knobs_validation.js index d5636ebadaf..cb76a691934 100644 --- a/jstests/noPassthrough/query_knobs_validation.js +++ b/jstests/noPassthrough/query_knobs_validation.js @@ -216,8 +216,8 @@ assertSetParameterSucceeds("internalQuerySlotBasedExecutionMaxStaticIndexScanInt assertSetParameterFails("internalQuerySlotBasedExecutionMaxStaticIndexScanIntervals", 0); assertSetParameterFails("internalQuerySlotBasedExecutionMaxStaticIndexScanIntervals", -1); -assertSetParameterSucceeds("internalQueryForceClassicEngine", true); -assertSetParameterSucceeds("internalQueryForceClassicEngine", false); +assertSetParameterSucceeds("internalQueryEnableSlotBasedExecutionEngine", true); +assertSetParameterSucceeds("internalQueryEnableSlotBasedExecutionEngine", false); assertSetParameterSucceeds("internalQueryCollectionMaxNoOfDocumentsToChooseHashJoin", 1); assertSetParameterFails("internalQueryCollectionMaxNoOfDocumentsToChooseHashJoin", 0); diff --git a/jstests/noPassthrough/sbe_multiplanner_trial_termination.js b/jstests/noPassthrough/sbe_multiplanner_trial_termination.js index 75739587a9f..2d77b962467 100644 --- a/jstests/noPassthrough/sbe_multiplanner_trial_termination.js +++ b/jstests/noPassthrough/sbe_multiplanner_trial_termination.js @@ -54,7 +54,8 @@ assert.commandWorked(db.adminCommand({setParameter: 1, [worksKnob]: trialLengthF // Force the classic engine and run an "allPlansExecution" verbosity explain. Confirm that the trial // period terminates based on the the "collection fraction" as opposed to // 'internalQueryPlanEvaluationWorks'. -assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); +assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); let allPlans = getAllPlansExecution("1"); for (let plan of allPlans) { assert(plan.hasOwnProperty("executionStages"), plan); @@ -92,7 +93,8 @@ assert.gt(getParamRes[worksKnobSbe], numDocs); // default value of SBE's works knob exceeds the size of the collection, we expect the number of // reads to exceed the collection size as well. By construction of the test, this also means that // the trial period length exceeds both 'trialLengthFromCollFrac' and 'trialLengthFromWorksKnob'. -assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); +assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); allPlans = getAllPlansExecution("2"); verifySbeNumReads(allPlans, numDocs, assert.gt); diff --git a/jstests/noPassthrough/sbe_plan_cache_key_reporting.js b/jstests/noPassthrough/sbe_plan_cache_key_reporting.js index 41e242e872b..5c39ec6362e 100644 --- a/jstests/noPassthrough/sbe_plan_cache_key_reporting.js +++ b/jstests/noPassthrough/sbe_plan_cache_key_reporting.js @@ -42,7 +42,7 @@ function runTestAgainstSbeAndClassicEngines(testToRun) { return ["sbe", "classic"].map((engine) => { setupCollection(); assert.commandWorked(db.adminCommand( - {setParameter: 1, internalQueryForceClassicEngine: engine == "classic"})); + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: engine === "sbe"})); return testToRun(engine); }); } @@ -193,9 +193,9 @@ function assertQueryHashAndPlanCacheKey(sbe, classic) { assert.eq(classic.explainVersion, "1", classic); // The query hashes and the plan cache keys ('the keys') are different now because - // 'internalQueryForceClassicEngine' flag is encoded into query shape, once this flag is removed - // from the query shape encoding the keys will be the same until SERVER-61507 is completed, then - // the keys will be different forever. + // 'internalQueryEnableSlotBasedExecutionEngine' flag is encoded into query shape, once this + // flag is removed from the query shape encoding the keys will be the same until SERVER-61507 + // is completed, then the keys will be different forever. assertQueryHashAndPlanCacheKey(sbe.queryPlanner, classic.stages[0]["$cursor"].queryPlanner); })(); @@ -219,9 +219,9 @@ function assertQueryHashAndPlanCacheKey(sbe, classic) { assert.eq(classic.explainVersion, "1", classic); // The query hashes and the plan cache keys ('the keys') are different now because - // 'internalQueryForceClassicEngine' flag is encoded into query shape, once this flag is removed - // from the query shape encoding the keys will be the same until SERVER-61507 is completed, then - // the keys will be different forever. + // 'internalQueryEnableSlotBasedExecutionEngine' flag is encoded into query shape, once this + // flag is removed from the query shape encoding the keys will be the same until SERVER-61507 + // is completed, then the keys will be different forever. assertQueryHashAndPlanCacheKey(sbe.queryPlanner, classic.stages[0]["$cursor"].queryPlanner); })(); diff --git a/jstests/noPassthrough/sbe_plan_cache_memory_debug_info.js b/jstests/noPassthrough/sbe_plan_cache_memory_debug_info.js index df3ac0d3fd9..9c8f6fb5461 100644 --- a/jstests/noPassthrough/sbe_plan_cache_memory_debug_info.js +++ b/jstests/noPassthrough/sbe_plan_cache_memory_debug_info.js @@ -75,7 +75,8 @@ const planCacheSizeAfterSbeStep = getPlanCacheSize(); assert.lt(initialPlanCacheSize, planCacheSizeAfterSbeStep); // Force classic plan cache. -assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); +assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); // Create a new collection for classic queries so we can easily assess its plan cache. const classicColl = createTestCollection("classic"); diff --git a/jstests/noPassthrough/sbe_plan_cache_size_metric.js b/jstests/noPassthrough/sbe_plan_cache_size_metric.js index 4cec6ba7f78..8e37ac8e26e 100644 --- a/jstests/noPassthrough/sbe_plan_cache_size_metric.js +++ b/jstests/noPassthrough/sbe_plan_cache_size_metric.js @@ -76,7 +76,8 @@ if (isSbePlanCacheEnabled) { // Step 2. Insert an entry to Classic Plan Cache. // Force classic plan cache. - assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); assert.eq(1, coll.find(classicQuery).itcount()); assertQueryInPlanCache(coll, classicQuery); // Plan Cache must contain exactly 2 entries. @@ -95,7 +96,7 @@ if (isSbePlanCacheEnabled) { // Step 4. Remove the entry from SBE Plan Cache. // Move back to SBE plan cache. assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); // Clean up SBE Plan Cache assert.commandWorked(db.runCommand({planCacheClear: collectionName, query: sbeQuery})); // Assert metric is decremented back to initial value. diff --git a/jstests/noPassthrough/server_status_multiplanner.js b/jstests/noPassthrough/server_status_multiplanner.js index f185cdb7841..10ac1d67e0a 100644 --- a/jstests/noPassthrough/server_status_multiplanner.js +++ b/jstests/noPassthrough/server_status_multiplanner.js @@ -44,7 +44,8 @@ assert.eq(multiPlannerMetrics.histograms.classicMicros[0].lowerBound, 0); // Run with classic engine and verify metrics. { - assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})); + assert.commandWorked( + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})); assert.commandWorked(coll.find({a: 1, b: 1, c: 1}).explain()); multiPlannerMetrics = db.serverStatus().metrics.query.multiPlanner; @@ -66,7 +67,7 @@ assert.eq(multiPlannerMetrics.histograms.classicMicros[0].lowerBound, 0); // Run with SBE and verify metrics. { assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); assert.commandWorked(coll.find({a: 1, b: 1, c: 1}).explain()); multiPlannerMetrics = db.serverStatus().metrics.query.multiPlanner; diff --git a/jstests/noPassthroughWithMongod/group_pushdown.js b/jstests/noPassthroughWithMongod/group_pushdown.js index adfeda64b74..0b85a84b0eb 100644 --- a/jstests/noPassthroughWithMongod/group_pushdown.js +++ b/jstests/noPassthroughWithMongod/group_pushdown.js @@ -79,7 +79,7 @@ let assertResultsMatchWithAndWithoutGroupPushdown = function( assertGroupPushdown(coll, pipeline, expectedResults, expectedGroupCountInExplain); // Turn sbe off. - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true}); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false}); // Sanity check the results when no pushdown happens. let resultNoGroupPushdown = coll.aggregate(pipeline).toArray(); @@ -87,7 +87,7 @@ let assertResultsMatchWithAndWithoutGroupPushdown = function( // Turn sbe on which will allow $group stages that contain supported accumulators to be pushed // down under certain conditions. - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false}); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true}); let resultWithGroupPushdown = coll.aggregate(pipeline).toArray(); assert.sameMembers(resultNoGroupPushdown, resultWithGroupPushdown); @@ -100,7 +100,7 @@ let assertResultsMatchWithAndWithoutProjectPushdown = function( {coll: coll, pipeline: pipeline, expectProjectToBePushedDown: expectProjectToBePushedDown}); // Turn sbe off. - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true}); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false}); // Sanity check the results when no project pushdown happens. let resultNoProjectPushdown = coll.aggregate(pipeline).toArray(); @@ -108,17 +108,17 @@ let assertResultsMatchWithAndWithoutProjectPushdown = function( // Turn sbe on which will allow $group stages that contain supported accumulators to be pushed // down under certain conditions. - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false}); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true}); let resultWithProjectPushdown = coll.aggregate(pipeline).toArray(); assert.sameMembers(resultNoProjectPushdown, resultWithProjectPushdown); }; let assertShardedGroupResultsMatch = function(coll, pipeline, expectedGroupCountInExplain = 1) { - const originalClassicEngineStatus = + const originalSBEEngineStatus = assert - .commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: true})) + .commandWorked(db.adminCommand( + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: false})) .was; const cmd = { @@ -131,7 +131,7 @@ let assertShardedGroupResultsMatch = function(coll, pipeline, expectedGroupCount const classicalRes = coll.runCommand(cmd).cursor.firstBatch; assert.commandWorked( - db.adminCommand({setParameter: 1, internalQueryForceClassicEngine: false})); + db.adminCommand({setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: true})); const explainCmd = { aggregate: coll.getName(), pipeline: pipeline, @@ -147,7 +147,7 @@ let assertShardedGroupResultsMatch = function(coll, pipeline, expectedGroupCount assert.sameMembers(sbeRes, classicalRes); assert.commandWorked(db.adminCommand( - {setParameter: 1, internalQueryForceClassicEngine: originalClassicEngineStatus})); + {setParameter: 1, internalQueryEnableSlotBasedExecutionEngine: originalSBEEngineStatus})); }; // Try a pipeline with no group stage. diff --git a/jstests/sharding/query/lookup_graph_lookup_foreign_becomes_sharded.js b/jstests/sharding/query/lookup_graph_lookup_foreign_becomes_sharded.js index c3924654a74..2c799f31f88 100644 --- a/jstests/sharding/query/lookup_graph_lookup_foreign_becomes_sharded.js +++ b/jstests/sharding/query/lookup_graph_lookup_foreign_becomes_sharded.js @@ -117,11 +117,11 @@ const isShardedLookupEnabled = getShardedLookupParam.hasOwnProperty("featureFlag let res = st.getPrimaryShard(jsTestName()).getDB("admin").adminCommand({ getParameter: 1, featureFlagSBELookupPushdown: 1, - internalQueryForceClassicEngine: 1 + internalQueryEnableSlotBasedExecutionEngine: 1 }); let isSBELookupEnabled = res.ok && res.hasOwnProperty("featureFlagSBELookupPushdown") && - res.hasOwnProperty("internalQueryForceClassicEngine") && - res.featureFlagSBELookupPushdown.value && !res.internalQueryForceClassicEngine; + res.hasOwnProperty("internalQueryEnableSlotBasedExecutionEngine") && + res.featureFlagSBELookupPushdown.value && res.internalQueryEnableSlotBasedExecutionEngine; // Now run a getMore for each of the test cases. The collection has become sharded mid-iteration, so // we should observe the error code associated with the test case. |