mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-15 09:35:37 -05:00
fixed the bug with not closing data reader for oe (#352)
* fixed the bug with not closing data reader for oe * fixed the bug with triggers not sending back status
This commit is contained in:
@@ -23,18 +23,23 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
|
||||
public override IEnumerable<TreeNode> Expand(TreeNode parent, bool refresh)
|
||||
{
|
||||
List<TreeNode> allChildren = new List<TreeNode>();
|
||||
|
||||
try
|
||||
{
|
||||
List<TreeNode> allChildren = new List<TreeNode>();
|
||||
OnExpandPopulateFolders(allChildren, parent);
|
||||
RemoveFoldersFromInvalidSqlServerVersions(allChildren, parent);
|
||||
OnExpandPopulateNonFolders(allChildren, parent, refresh);
|
||||
OnBeginAsyncOperations(parent);
|
||||
return allChildren;
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Logger.Write(LogLevel.Error, $"Failed expanding oe children. error:{ex.Message} {ex.StackTrace}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
return allChildren;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
public abstract class SmoQuerier : IComposableService
|
||||
{
|
||||
public abstract Type[] SupportedObjectTypes { get; }
|
||||
private static object lockObject = new object();
|
||||
|
||||
/// <summary>
|
||||
/// Queries SMO for a collection of objects using the <see cref="SmoQueryContext"/>
|
||||
@@ -78,21 +79,26 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
/// </summary>
|
||||
protected HashSet<string> GetUrns(EnumResult enumResult)
|
||||
{
|
||||
HashSet<string> urns = null;
|
||||
if (enumResult != null && enumResult.Data != null)
|
||||
lock (lockObject)
|
||||
{
|
||||
urns = new HashSet<string>();
|
||||
IDataReader reader = GetDataReader(enumResult.Data);
|
||||
if (reader != null)
|
||||
HashSet<string> urns = null;
|
||||
if (enumResult != null && enumResult.Data != null)
|
||||
{
|
||||
while (reader.Read())
|
||||
urns = new HashSet<string>();
|
||||
using (IDataReader reader = GetDataReader(enumResult.Data))
|
||||
{
|
||||
urns.Add(reader.GetString(0));
|
||||
if (reader != null)
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
urns.Add(reader.GetString(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return urns;
|
||||
return urns;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,14 +10,27 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
/// <summary>
|
||||
/// Status for triggers
|
||||
/// </summary>
|
||||
public class SmoTriggerCustomNode
|
||||
internal partial class TriggersChildFactory : SmoChildFactoryBase
|
||||
{
|
||||
internal partial class TriggersChildFactory : SmoChildFactoryBase
|
||||
public override string GetNodeStatus(object context)
|
||||
{
|
||||
public override string GetNodeStatus(object context)
|
||||
{
|
||||
return TriggersCustomeNodeHelper.GetStatus(context);
|
||||
}
|
||||
return TriggersCustomeNodeHelper.GetStatus(context);
|
||||
}
|
||||
}
|
||||
|
||||
internal partial class ServerLevelServerTriggersChildFactory : SmoChildFactoryBase
|
||||
{
|
||||
public override string GetNodeStatus(object context)
|
||||
{
|
||||
return TriggersCustomeNodeHelper.GetStatus(context);
|
||||
}
|
||||
}
|
||||
|
||||
internal partial class DatabaseTriggersChildFactory : SmoChildFactoryBase
|
||||
{
|
||||
public override string GetNodeStatus(object context)
|
||||
{
|
||||
return TriggersCustomeNodeHelper.GetStatus(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +47,24 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
}
|
||||
|
||||
ServerDdlTrigger serverDdlTrigger = context as ServerDdlTrigger;
|
||||
if (serverDdlTrigger != null)
|
||||
{
|
||||
if (!serverDdlTrigger.IsEnabled)
|
||||
{
|
||||
return "Disabled";
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseDdlTrigger databaseDdlTrigger = context as DatabaseDdlTrigger;
|
||||
if (databaseDdlTrigger != null)
|
||||
{
|
||||
if (!databaseDdlTrigger.IsEnabled)
|
||||
{
|
||||
return "Disabled";
|
||||
}
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user