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) 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, DisplayString = mi.MissingIndexCaption,
Query = mi.MissingIndexQueryText, Query = mi.MissingIndexQueryText,
QueryWithDescription = ParseMissingIndexQueryText(fileName, mi.MissingIndexImpact, mi.MissingIndexDatabase, mi.MissingIndexQueryText) QueryWithDescription = ParseMissingIndexQueryText(fileName, mi.MissingIndexImpact, mi.MissingIndexDatabase, mi.MissingIndexQueryText)
}).ToList(); }).ToList();
return recommendations;
} }
/// <summary> /// <summary>
@@ -460,7 +462,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan
/// <returns></returns> /// <returns></returns>
private static string ParseMissingIndexQueryText(string fileName, string impact, string database, string query) 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)} {string.Format("USE {0}", database)}
@@ -469,6 +471,8 @@ GO
GO GO
*/ */
"; ";
return missingIndexQueryText;
} }
private static string GetPropertyDisplayValue(PropertyValue? property) private static string GetPropertyDisplayValue(PropertyValue? property)

View File

@@ -429,7 +429,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan.ShowPlan
string includeColumns = string.Empty; string includeColumns = string.Empty;
// populate index columns and include columns // 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 columnGroup in columnGroups)
{ {
foreach (XmlNode column in columnGroup.ChildNodes) foreach (XmlNode column in columnGroup.ChildNodes)
@@ -447,13 +447,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ExecutionPlan.ShowPlan
if (includeColumns == string.Empty) if (includeColumns == string.Empty)
includeColumns = columnName; includeColumns = columnName;
else 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. // 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)) if (!string.IsNullOrEmpty(includeColumns))
{ {
queryText += string.Format(includeTemplate, includeColumns); queryText += string.Format(includeTemplate, includeColumns);