Fix missing index include column list (#2220)

This commit is contained in:
Lewis Sanchez
2023-09-08 11:26:02 -07:00
committed by GitHub
parent 44dc3181c3
commit 83fc64444a
2 changed files with 10 additions and 5 deletions

View File

@@ -442,12 +442,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan
private static List<ExecutionPlanRecommendation> ParseRecommendations(ShowPlanGraph g, string fileName)
{
return g.Description.MissingIndices.Select(mi => new ExecutionPlanRecommendation
var recommendations = g.Description.MissingIndices.Select(mi => new ExecutionPlanRecommendation
{
DisplayString = mi.MissingIndexCaption,
Query = mi.MissingIndexQueryText,
QueryWithDescription = ParseMissingIndexQueryText(fileName, mi.MissingIndexImpact, mi.MissingIndexDatabase, mi.MissingIndexQueryText)
}).ToList();
return recommendations;
}
/// <summary>
@@ -460,7 +462,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan
/// <returns></returns>
private static string ParseMissingIndexQueryText(string fileName, string impact, string database, string query)
{
return $@"{SR.MissingIndexDetailsTitle(fileName, impact)}
var missingIndexQueryText = $@"{SR.MissingIndexDetailsTitle(fileName, impact)}
/*
{string.Format("USE {0}", database)}
@@ -469,6 +471,8 @@ GO
GO
*/
";
return missingIndexQueryText;
}
private static string GetPropertyDisplayValue(PropertyValue? property)

View File

@@ -429,7 +429,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan.ShowPlan
string includeColumns = string.Empty;
// populate index columns and include columns
XmlNodeList columnGroups = missingIndex.SelectNodes("shp:ColumnGroup", nsMgr);
XmlNodeList columnGroups = missingIndex.SelectNodes("descendant::shp:ColumnGroup", nsMgr);
foreach (XmlNode columnGroup in columnGroups)
{
foreach (XmlNode column in columnGroup.ChildNodes)
@@ -447,13 +447,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan.ShowPlan
if (includeColumns == string.Empty)
includeColumns = columnName;
else
includeColumns = $"{indexColumns},{columnName}";
includeColumns = $"{includeColumns},{columnName}";
}
}
}
// for memory optimized we just alter the existing index where as for non optimized tables we create a new one.
string queryText = string.Format((memoryOptimzed) ? addIndexTemplate : createIndexTemplate, schemaName, tableName, indexColumns);
var template = (memoryOptimzed) ? addIndexTemplate : createIndexTemplate;
string queryText = string.Format(template, schemaName, tableName, indexColumns);
if (!string.IsNullOrEmpty(includeColumns))
{
queryText += string.Format(includeTemplate, includeColumns);