Initial sets up of new execution plan comparison result endpoint (#18813)

* Initial sets up of new execution plan comparison result endpoint

* Makes query execution plan endpoint URI's more consistent.
This commit is contained in:
Lewis Sanchez
2022-03-25 11:47:46 -07:00
committed by GitHub
parent 0d3cec074d
commit 85b4bf13f9
7 changed files with 85 additions and 3 deletions

View File

@@ -1123,7 +1123,16 @@ export interface GetExecutionPlanParams {
}
export namespace GetExecutionPlanRequest {
export const type = new RequestType<GetExecutionPlanParams, azdata.executionPlan.GetExecutionPlanResult, void, void>('queryexecutionplan/getexecutionplan');
export const type = new RequestType<GetExecutionPlanParams, azdata.executionPlan.GetExecutionPlanResult, void, void>('queryExecutionPlan/getExecutionPlan');
}
export interface ExecutionPlanComparisonParams {
firstExecutionPlanGraphInfo: azdata.executionPlan.ExecutionPlanGraphInfo;
secondExecutionPlanGraphInfo: azdata.executionPlan.ExecutionPlanGraphInfo;
}
export namespace ExecutionPlanComparisonRequest {
export const type = new RequestType<ExecutionPlanComparisonParams, azdata.executionPlan.ExecutionPlanComparisonResult, void, void>('queryExecutionPlan/compareExecutionPlanGraph');
}
// ------------------------------- < Execution Plan > ------------------------------------

View File

@@ -1221,10 +1221,25 @@ export class ExecutionPlanServiceFeature extends SqlOpsFeature<undefined> {
);
};
const compareExecutionPlanGraph = (firstPlanFile: azdata.executionPlan.ExecutionPlanGraphInfo, secondPlanFile: azdata.executionPlan.ExecutionPlanGraphInfo): Thenable<azdata.executionPlan.ExecutionPlanComparisonResult> => {
const params: contracts.ExecutionPlanComparisonParams = {
firstExecutionPlanGraphInfo: firstPlanFile,
secondExecutionPlanGraphInfo: secondPlanFile
};
return client.sendRequest(contracts.ExecutionPlanComparisonRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(contracts.ExecutionPlanComparisonRequest.type, e);
return Promise.reject(e);
}
);
};
return azdata.dataprotocol.registerExecutionPlanProvider({
providerId: client.providerId,
getExecutionPlan
getExecutionPlan,
compareExecutionPlanGraph
});
}
}