mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
Adding Support for new engine edition (#876)
* Adding Support for SqlOnDemand * Updating unit test per comment * Resolving comments. Enabling external table for sqlondemand * Resolving comments. Enabling External tables for sqlondemand * Enabling external tables for sqlondemand
This commit is contained in:
committed by
GitHub
parent
6f17c15d2c
commit
962ba3a12b
@@ -23,7 +23,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
<#
|
||||
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
||||
string xmlFile = Path.Combine(directory, "SmoQueryModelDefinition.xml");
|
||||
|
||||
|
||||
/////////
|
||||
// Now generate all the Query methods
|
||||
/////////
|
||||
@@ -58,7 +58,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
WriteLine("");
|
||||
|
||||
// Query impl
|
||||
WriteLine("public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter, bool refresh, IEnumerable<string> extraProperties)");
|
||||
WriteLine("public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter, bool refresh, IEnumerable<string> extraProperties)");
|
||||
WriteLine("{");
|
||||
PushIndent(indent);
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
return typesList.ToArray();
|
||||
}
|
||||
|
||||
|
||||
public static XmlElement GetNodeElement(string xmlFile, string nodeName)
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
@@ -250,69 +250,77 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/SmoQueryModel/Node[@Name='{0}']/{1}", parentName, childNode));
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
|
||||
public static string GetValidForFlags(string validForStr)
|
||||
{
|
||||
List<string> flags = new List<string>();
|
||||
if (validForStr.Contains("Sql2005"))
|
||||
{
|
||||
List<string> flags = new List<string>();
|
||||
if (validForStr.Contains("Sql2005"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2005");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2008"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2008"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2008");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2012"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2012"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2012");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2014"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2014"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2014");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2016"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2016"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2016");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2017"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2017"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2017");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("AzureV12"))
|
||||
{
|
||||
if (validForStr.Contains("AzureV12"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AzureV12");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("AllOnPrem"))
|
||||
{
|
||||
if (validForStr.Contains("AllOnPrem"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AllOnPrem");
|
||||
}
|
||||
if (validForStr.Contains("AllAzure"))
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("AllAzure"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AllAzure");
|
||||
}
|
||||
if (validForStr.Contains("NotSqlDw"))
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("NotSqlDw"))
|
||||
{
|
||||
flags.Add("ValidForFlag.NotSqlDw");
|
||||
}
|
||||
if (validForStr == "All")
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("SqlOnDemand"))
|
||||
{
|
||||
flags.Add("ValidForFlag.SqlOnDemand");
|
||||
}
|
||||
if (validForStr == "NotSqlDemand")
|
||||
{
|
||||
flags.Add("ValidForFlag.NotSqlDemand");
|
||||
}
|
||||
if (validForStr == "All")
|
||||
{
|
||||
flags.Add("ValidForFlag.All");
|
||||
}
|
||||
}
|
||||
|
||||
return string.Join("|", flags);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
<Node Name="ServerLevelLinkedServerLogins" LocLabel="SR.SchemaHierarchy_LinkedServerLogins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLinkedServerLogin" ChildQuerierTypes="SqlLinkedServerLogin" ValidFor="AllOnPrem"/>
|
||||
<Node Name="ServerLevelLogins" LocLabel="SR.SchemaHierarchy_Logins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLogin" ChildQuerierTypes="SqlLogin"/>
|
||||
<Node Name="ServerLevelServerRoles" LocLabel="SR.SchemaHierarchy_ServerRoles" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerRole" ChildQuerierTypes="SqlServerRole" ValidFor="AllOnPrem"/>
|
||||
<Node Name="ServerLevelServerRoles" LocLabel="SR.SchemaHierarchy_ServerRoles" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerRole" ChildQuerierTypes="SqlServerRole" ValidFor="AllOnPrem|SqlOnDemand"/>
|
||||
<Node Name="ServerLevelCredentials" LocLabel="SR.SchemaHierarchy_Credentials" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCredential" ChildQuerierTypes="SqlCredential" ValidFor="AllOnPrem"/>
|
||||
<Node Name="ServerLevelCryptographicProviders" LocLabel="SR.SchemaHierarchy_CryptographicProviders" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCryptographicProvider" ChildQuerierTypes="SqlCryptographicProvider" ValidFor="AllOnPrem"/>
|
||||
<Node Name="ServerLevelServerAudits" LocLabel="SR.SchemaHierarchy_ServerAudits" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerAudit" ChildQuerierTypes="SqlServerAudit" ValidFor="AllOnPrem"/>
|
||||
@@ -85,6 +85,7 @@
|
||||
<Property Name="IsExternal" ValidFor="Sql2016|Sql2017|AzureV12"/>
|
||||
</Properties>
|
||||
<Child Name="SystemTables" IsSystemObject="1"/>
|
||||
<Child Name="ExternalTables"/>
|
||||
</Node>
|
||||
|
||||
<Node Name="Views" LocLabel="SR.SchemaHierarchy_Views" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
||||
@@ -107,7 +108,7 @@
|
||||
-->
|
||||
<Child Name="Sequences"/>
|
||||
</Node>
|
||||
<Node Name="ExternalResources" LocLabel="SR.SchemaHierarchy_ExternalResources" BaseClass="ModelBased" TreeNode="ExternalResourceTreeNode" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||
<Node Name="ExternalResources" LocLabel="SR.SchemaHierarchy_ExternalResources" BaseClass="ModelBased" TreeNode="ExternalResourceTreeNode" ValidFor="Sql2016|Sql2017|AzureV12|SqlOnDemand">
|
||||
<Child Name="ExternalDataSources"/>
|
||||
<Child Name="ExternalFileFormats"/>
|
||||
</Node>
|
||||
@@ -160,12 +161,13 @@
|
||||
<Filter Property="IsFileTable" Value="1" Type="bool" />
|
||||
</Filters>
|
||||
</Node>
|
||||
<Node Name="ExternalTables" LocLabel="SR.SchemaHierarchy_ExternalTables" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable" TreeNode="ExternalTableTreeNode" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||
-->
|
||||
<Node Name="ExternalTables" LocLabel="SR.SchemaHierarchy_ExternalTables" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable" TreeNode="ExternalTableTreeNode" ValidFor="SqlOnDemand">
|
||||
<Filters >
|
||||
<Filter Property="IsExternal" Value="1" Type="bool" />
|
||||
</Filters>
|
||||
</Node>
|
||||
-->
|
||||
|
||||
<Node Name="Table" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable;SqlHistoryTable" TreeNode="HistoryTableTreeNode">
|
||||
<Filters>
|
||||
<Filter TypeToReverse="SqlHistoryTable" Property="TemporalType" Type="Enum" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||
@@ -189,7 +191,6 @@
|
||||
<Child Name="Statistics"/>
|
||||
</Node>
|
||||
|
||||
<!-- TODO This should use display item not ChildQuerierTypes -->
|
||||
<Node Name="ExternalTable" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="PopulateDetails" NodeType="Table" ChildQuerierTypes="SqlTable" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||
<Child Name="Columns"/>
|
||||
<Child Name="Statistics"/>
|
||||
@@ -207,7 +208,7 @@
|
||||
</Node>
|
||||
<Node Name="Constraints" LocLabel="SR.SchemaHierarchy_Constraints" BaseClass="ModelBased" NodeType="Constraint" Strategy="ElementsInRelationship" ChildQuerierTypes="SqlDefaultConstraint;SqlCheck"/>
|
||||
<Node Name="Triggers" LocLabel="SR.SchemaHierarchy_Triggers" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Trigger" ChildQuerierTypes="SqlDmlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||
<Node Name="Indexes" LocLabel="SR.SchemaHierarchy_Indexes" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Index" ChildQuerierTypes="SqlIndex;SqlFullTextIndex">
|
||||
<Node Name="Indexes" LocLabel="SR.SchemaHierarchy_Indexes" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Index" ChildQuerierTypes="SqlIndex;SqlFullTextIndex" ValidFor="NotSqlDemand">
|
||||
<Filters>
|
||||
<Filter TypeToReverse="SqlIndex" Property="IndexKeyType" Type="Enum" ValidFor="AllOnPrem|AzureV12">
|
||||
<Value>IndexKeyType.None</Value>
|
||||
@@ -216,7 +217,7 @@
|
||||
</Filter>
|
||||
</Filters>
|
||||
</Node>
|
||||
<Node Name="Statistics" LocLabel="SR.SchemaHierarchy_Statistics" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Statistic" ChildQuerierTypes="SqlStatistic"/>
|
||||
<Node Name="Statistics" LocLabel="SR.SchemaHierarchy_Statistics" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Statistic" ChildQuerierTypes="SqlStatistic" ValidFor="NotSqlDemand"/>
|
||||
|
||||
<Node Name="SystemViews" LocLabel="SR.SchemaHierarchy_SystemViews" BaseClass="ModelBased" IsMsShippedOwned="true" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
||||
<Filters>
|
||||
@@ -231,7 +232,7 @@
|
||||
<Child Name="Statistics"/>
|
||||
</Node>
|
||||
|
||||
<Node Name="Functions" LocLabel="SR.SchemaHierarchy_Functions" BaseClass="ModelBased" >
|
||||
<Node Name="Functions" LocLabel="SR.SchemaHierarchy_Functions" BaseClass="ModelBased" ValidFor="NotSqlDemand">
|
||||
<Child Name="SystemFunctions" IsSystemObject="1"/>
|
||||
<Child Name="TableValuedFunctions"/>
|
||||
<Child Name="ScalarValuedFunctions"/>
|
||||
@@ -245,7 +246,7 @@
|
||||
|
||||
<Node Name="DatabaseTriggers" LocLabel="SR.SchemaHierarchy_DatabaseTriggers" BaseClass="ModelBased" NodeType="DatabaseTrigger" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlDatabaseDdlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||
<Node Name="Assemblies" LocLabel="SR.SchemaHierarchy_Assemblies" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="Assembly" ChildQuerierTypes="SqlAssembly" ValidFor="AllOnPrem|AzureV12"/>
|
||||
<Node Name="Types" LocLabel="SR.SchemaHierarchy_Types" BaseClass="ModelBased" >
|
||||
<Node Name="Types" LocLabel="SR.SchemaHierarchy_Types" BaseClass="ModelBased" ValidFor="NotSqlDemand">
|
||||
<Child Name="SystemDataTypes" IsSystemObject="1"/>
|
||||
<Child Name="UserDefinedDataTypes"/>
|
||||
<Child Name="UserDefinedTableTypes"/>
|
||||
@@ -301,8 +302,8 @@
|
||||
<Node Name="SystemSpatialDataTypes" LocLabel="SR.SchemaHierarchy_SystemSpatialDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemSpatialDataType" ChildQuerierTypes="SqlBuiltInType" ValidFor="Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||
|
||||
<!-- Childs of ExternalResources -->
|
||||
<Node Name="ExternalDataSources" LocLabel="SR.SchemaHierarchy_ExternalDataSources" BaseClass="ModelBased" NodeType="ExternalDataSource" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalDataSource" ValidFor="Sql2016|Sql2017|AzureV12"/>
|
||||
<Node Name="ExternalFileFormats" LocLabel="SR.SchemaHierarchy_ExternalFileFormats" BaseClass="ModelBased" NodeType="ExternalFileFormat" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalFileFormat" ValidFor="Sql2016|Sql2017"/>
|
||||
<Node Name="ExternalDataSources" LocLabel="SR.SchemaHierarchy_ExternalDataSources" BaseClass="ModelBased" NodeType="ExternalDataSource" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalDataSource" ValidFor="Sql2016|Sql2017|AzureV12|SqlOnDemand"/>
|
||||
<Node Name="ExternalFileFormats" LocLabel="SR.SchemaHierarchy_ExternalFileFormats" BaseClass="ModelBased" NodeType="ExternalFileFormat" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalFileFormat" ValidFor="Sql2016|Sql2017|SqlOnDemand"/>
|
||||
|
||||
<Node Name="StoredProcedures" LocLabel="SR.SchemaHierarchy_StoredProcedures" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlProcedure" TreeNode="StoredProcedureTreeNode">
|
||||
<Filters >
|
||||
|
||||
@@ -265,7 +265,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.ServerLevelServerRoles,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.AllOnPrem,
|
||||
ValidFor = ValidForFlag.AllOnPrem|ValidForFlag.SqlOnDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -702,7 +702,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.ExternalResources,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12|ValidForFlag.SqlOnDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -818,6 +818,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
IsMsShippedOwned = true,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
NodeValue = SR.SchemaHierarchy_ExternalTables,
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.ExternalTables,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.SqlOnDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
|
||||
internal override Type[] ChildQuerierTypes
|
||||
@@ -929,6 +937,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Functions,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -952,6 +961,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Types,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -986,7 +996,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.ExternalDataSources,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12|ValidForFlag.SqlOnDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -994,7 +1004,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.ExternalFileFormats,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017,
|
||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.SqlOnDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
@@ -1289,6 +1299,43 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
}
|
||||
|
||||
[Export(typeof(ChildFactory))]
|
||||
[Shared]
|
||||
internal partial class ExternalTablesChildFactory : SmoChildFactoryBase
|
||||
{
|
||||
public override IEnumerable<string> ApplicableParents() { return new[] { "ExternalTables" }; }
|
||||
|
||||
public override IEnumerable<NodeFilter> Filters
|
||||
{
|
||||
get
|
||||
{
|
||||
var filters = new List<NodeFilter>();
|
||||
filters.Add(new NodeFilter
|
||||
{
|
||||
Property = "IsExternal",
|
||||
Type = typeof(bool),
|
||||
Values = new List<object> { 1 },
|
||||
});
|
||||
return filters;
|
||||
}
|
||||
}
|
||||
|
||||
internal override Type[] ChildQuerierTypes
|
||||
{
|
||||
get
|
||||
{
|
||||
return new [] { typeof(SqlTableQuerier), };
|
||||
}
|
||||
}
|
||||
|
||||
public override TreeNode CreateChild(TreeNode parent, object context)
|
||||
{
|
||||
var child = new ExternalTableTreeNode();
|
||||
InitializeChild(parent, child, context);
|
||||
return child;
|
||||
}
|
||||
}
|
||||
|
||||
[Export(typeof(ChildFactory))]
|
||||
[Shared]
|
||||
internal partial class TableChildFactory : SmoChildFactoryBase
|
||||
@@ -1352,6 +1399,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Indexes,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -1359,6 +1407,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Statistics,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
@@ -1406,6 +1455,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Indexes,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -1413,6 +1463,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Statistics,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
@@ -1454,6 +1505,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Statistics,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
@@ -1729,6 +1781,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Indexes,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
currentChildren.Add(new FolderNode {
|
||||
@@ -1736,6 +1789,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
NodeType = "Folder",
|
||||
NodeTypeId = NodeTypes.Statistics,
|
||||
IsSystemObject = false,
|
||||
ValidFor = ValidForFlag.NotSqlDemand,
|
||||
SortPriority = SmoTreeNode.NextSortPriority,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
<#
|
||||
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
||||
string xmlFile = Path.Combine(directory, "TreeNodeDefinition.xml");
|
||||
|
||||
|
||||
/////////
|
||||
// TODO - is Generate all the ReverseDependencies needed?
|
||||
/////////
|
||||
@@ -103,7 +103,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
WriteLine(string.Format(" internal partial class {0}ChildFactory : {1}", type, childFactoryBaseClass));
|
||||
|
||||
WriteLine(" {");
|
||||
WriteLine(string.Format(" public override IEnumerable<string> ApplicableParents() {{ return new[] {{ \"{0}\" }}; }}", type));
|
||||
WriteLine(string.Format(" public override IEnumerable<string> ApplicableParents() {{ return new[] {{ \"{0}\" }}; }}", type));
|
||||
|
||||
List<XmlElement> children = GetChildren(xmlFile, type);
|
||||
List<XmlElement> filters = GetNodeFilters(xmlFile, type);
|
||||
@@ -239,7 +239,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLine(" currentChildren.Add(new FolderNode {");
|
||||
WriteLine(" currentChildren.Add(new FolderNode {");
|
||||
WriteLine(string.Format(" NodeValue = {0},", childAsXmlElement.GetAttribute("LocLabel")));
|
||||
WriteLine(string.Format(" NodeType = \"{0}\",", "Folder"));
|
||||
WriteLine(string.Format(" NodeTypeId = NodeTypes.{0},", child.GetAttribute("Name")));
|
||||
@@ -254,7 +254,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
WriteLine(string.Format(" ValidFor = {0},", GetValidForFlags(validFor)));
|
||||
}
|
||||
WriteLine(" SortPriority = SmoTreeNode.NextSortPriority,");
|
||||
WriteLine(" });");
|
||||
WriteLine(" });");
|
||||
}
|
||||
}
|
||||
WriteLine(" }");
|
||||
@@ -341,60 +341,68 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
|
||||
<#+
|
||||
public static string GetValidForFlags(string validForStr)
|
||||
public static string GetValidForFlags(string validForStr)
|
||||
{
|
||||
List<string> flags = new List<string>();
|
||||
if (validForStr.Contains("Sql2005"))
|
||||
{
|
||||
List<string> flags = new List<string>();
|
||||
if (validForStr.Contains("Sql2005"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2005");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2008"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2008"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2008");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2012"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2012"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2012");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2014"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2014"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2014");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2016"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2016"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2016");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("Sql2017"))
|
||||
{
|
||||
if (validForStr.Contains("Sql2017"))
|
||||
{
|
||||
flags.Add("ValidForFlag.Sql2017");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("AzureV12"))
|
||||
{
|
||||
if (validForStr.Contains("AzureV12"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AzureV12");
|
||||
}
|
||||
}
|
||||
|
||||
if (validForStr.Contains("AllOnPrem"))
|
||||
{
|
||||
if (validForStr.Contains("AllOnPrem"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AllOnPrem");
|
||||
}
|
||||
if (validForStr.Contains("AllAzure"))
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("AllAzure"))
|
||||
{
|
||||
flags.Add("ValidForFlag.AllAzure");
|
||||
}
|
||||
if (validForStr.Contains("NotSqlDw"))
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("NotSqlDw"))
|
||||
{
|
||||
flags.Add("ValidForFlag.NotSqlDw");
|
||||
}
|
||||
if (validForStr == "All")
|
||||
{
|
||||
}
|
||||
if (validForStr.Contains("SqlOnDemand"))
|
||||
{
|
||||
flags.Add("ValidForFlag.SqlOnDemand");
|
||||
}
|
||||
if (validForStr == "NotSqlDemand")
|
||||
{
|
||||
flags.Add("ValidForFlag.NotSqlDemand");
|
||||
}
|
||||
if (validForStr == "All")
|
||||
{
|
||||
flags.Add("ValidForFlag.All");
|
||||
}
|
||||
}
|
||||
|
||||
return string.Join("|", flags);
|
||||
}
|
||||
@@ -417,7 +425,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
return typesList.ToArray();
|
||||
}
|
||||
|
||||
|
||||
public static Dictionary<string, List<string>> GetReverseDependencies(string xmlFile)
|
||||
{
|
||||
Dictionary<string, List<string>> dependencyMap = new Dictionary<string, List<string>>();
|
||||
@@ -440,7 +448,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] allDepedencies = dependency.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] allDepedencies = dependency.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
dependenciesForType = new List<string>();
|
||||
dependenciesForType.AddRange(allDepedencies);
|
||||
dependencyMap.Add(typeName, dependenciesForType);
|
||||
@@ -476,11 +484,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes("/ServerExplorerTree/CodeGenOptions/UniqueTreeNode");
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
@@ -495,11 +503,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Child", parentName));
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
@@ -514,11 +522,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter", parentName));
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
@@ -534,11 +542,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Properties/Property", parentName));
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
@@ -553,11 +561,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter[@Property='{1}']/Value", parentName, filterProperty));
|
||||
foreach (var item in nodeList)
|
||||
{
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
XmlElement itemAsElement = item as XmlElement;
|
||||
if (itemAsElement != null)
|
||||
{
|
||||
retElements.Add(itemAsElement);
|
||||
}
|
||||
}
|
||||
return retElements;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
||||
Sql2014,
|
||||
Sql2016,
|
||||
Sql2017,
|
||||
AzureV12
|
||||
AzureV12,
|
||||
SqlOnDemand
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -62,6 +63,10 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
||||
{
|
||||
validforFlag = ValidForFlag.SqlDw;
|
||||
}
|
||||
else if (serverType == SqlServerType.SqlOnDemand)
|
||||
{
|
||||
validforFlag = ValidForFlag.SqlOnDemand;
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO: not supporting SQL DW for on prem
|
||||
@@ -79,7 +84,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
||||
SqlServerType serverType = SqlServerType.Unknown;
|
||||
string serverVersion = serverInfo.ServerVersion;
|
||||
|
||||
if (serverInfo.IsCloud)
|
||||
if (serverInfo.EngineEditionId == 11)
|
||||
{
|
||||
serverType = SqlServerType.SqlOnDemand;
|
||||
}
|
||||
else if (serverInfo.IsCloud)
|
||||
{
|
||||
serverType = SqlServerType.AzureV12;
|
||||
}
|
||||
|
||||
@@ -20,9 +20,12 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
||||
Sql2016 = 0x20,
|
||||
Sql2017 = 0x40,
|
||||
SqlDw = 0x80,
|
||||
SqlOnDemand = 0x100,
|
||||
AllOnPrem = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017,
|
||||
AllAzure = AzureV12,
|
||||
All = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw,
|
||||
NotSqlDw = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12
|
||||
All = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw | SqlOnDemand,
|
||||
NotSqlDw = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlOnDemand,
|
||||
NotSqlDemand = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw,
|
||||
NotSqlDwNotDemand = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting.Contracts
|
||||
/// SqlAzureDatabaseEdition
|
||||
/// SqlDatawarehouseEdition
|
||||
/// SqlServerStretchEdition
|
||||
/// SqlManagedInstanceEdition
|
||||
/// SqlManagedInstanceEdition
|
||||
/// SqlServerOnDemandEdition
|
||||
/// </summary>
|
||||
public virtual string TargetDatabaseEngineEdition { get; set; } = "SqlServerEnterpriseEdition";
|
||||
|
||||
|
||||
@@ -630,6 +630,9 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
|
||||
case SqlScriptOptions.ScriptDatabaseEngineEdition.SqlServerManagedInstanceEdition:
|
||||
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.SqlManagedInstance;
|
||||
break;
|
||||
case SqlScriptOptions.ScriptDatabaseEngineEdition.SqlServerOnDemandEdition:
|
||||
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.SqlOnDemand;
|
||||
break;
|
||||
default:
|
||||
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.Standard;
|
||||
break;
|
||||
|
||||
@@ -41,6 +41,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
|
||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlDataWarehouse, "SqlDatawarehouseEdition");
|
||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlStretchDatabase, "SqlServerStretchEdition");
|
||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlManagedInstance, "SqlServerManagedInstance");
|
||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlOnDemand, "SqlOnDemand");
|
||||
|
||||
// Mapping for database engine type
|
||||
serverVersionMap.Add(9, "Script90Compat");
|
||||
|
||||
@@ -98,6 +98,8 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
||||
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/System Databases/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/System Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
||||
@@ -119,6 +121,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
||||
{
|
||||
"testServer/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||
"testServer/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn"
|
||||
};
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
||||
VerifyGetValidForFlag(SqlServerType.Sql2014, ValidForFlag.Sql2014);
|
||||
VerifyGetValidForFlag(SqlServerType.Sql2016, ValidForFlag.Sql2016);
|
||||
VerifyGetValidForFlag(SqlServerType.Sql2017, ValidForFlag.Sql2017);
|
||||
VerifyGetValidForFlag(SqlServerType.SqlOnDemand, ValidForFlag.SqlOnDemand);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -135,6 +136,14 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
||||
VerifyIsValidFor(serverValidFor, validFor, expected);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CalculateServerTypeShouldReturnSqlOnDemandGivenEngineEdition()
|
||||
{
|
||||
int engineEdition = 11;
|
||||
SqlServerType expected = SqlServerType.SqlOnDemand;
|
||||
VerifyCalculateServerTypeForEngineEdition(engineEdition, expected);
|
||||
}
|
||||
|
||||
private void VerifyIsValidFor(ValidForFlag serverValidFor, ValidForFlag validFor, bool expected)
|
||||
{
|
||||
bool actual = ServerVersionHelper.IsValidFor(serverValidFor, validFor);
|
||||
@@ -151,6 +160,17 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
private void VerifyCalculateServerTypeForEngineEdition(int engineEdition, SqlServerType expected)
|
||||
{
|
||||
ServerInfo serverInfo = new ServerInfo
|
||||
{
|
||||
EngineEditionId = engineEdition
|
||||
};
|
||||
|
||||
SqlServerType actual = ServerVersionHelper.CalculateServerType(serverInfo);
|
||||
Assert.True(actual == expected, $"Verify server type based on Engine Edition. Actual value: {actual}, Expected value: {expected}");
|
||||
}
|
||||
|
||||
private void VerifyGetValidForFlag(SqlServerType serverType, ValidForFlag validForFlag)
|
||||
{
|
||||
ValidForFlag validforFlag = ServerVersionHelper.GetValidForFlag(serverType);
|
||||
|
||||
Reference in New Issue
Block a user