mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-17 02:51:45 -05:00
Fix missing index include column list (#2220)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user