Files
mongo/jstests/libs/optimizer_utils.js

30 lines
1.1 KiB
JavaScript

load("jstests/libs/analyze_plan.js");
/*
* Utility for checking if the query optimizer is enabled.
*/
function checkCascadesOptimizerEnabled(theDB) {
const param = theDB.adminCommand({getParameter: 1, featureFlagCommonQueryFramework: 1});
return param.hasOwnProperty("featureFlagCommonQueryFramework") &&
param.featureFlagCommonQueryFramework.value;
}
/**
* Given the result of an explain command, returns whether the bonsai optimizer was used.
*/
function usedBonsaiOptimizer(explain) {
if (explain.hasOwnProperty("queryPlanner") &&
!explain.queryPlanner.winningPlan.hasOwnProperty("optimizerPlan")) {
// Find command explain which means new optimizer was not used.
// TODO SERVER-62407 this assumption may no longer hold true if the translation to ABT
// happens directly from a find command.
return false;
}
const plannerOutput = getAggPlanStage(explain, "$cursor");
if (plannerOutput != null) {
return plannerOutput["$cursor"].queryPlanner.winningPlan.hasOwnProperty("optimizerPlan");
} else {
return explain.queryPlanner.winningPlan.hasOwnProperty("optimizerPlan");
}
}