Fixing a null exception error when bound tables are null. (#1327)

* Fixing a null exception error when bound tables are null.

* skipping star expansion when there is no active conn

* Fixing a comment
This commit is contained in:
Aasim Khan
2021-12-02 14:15:26 -08:00
committed by GitHub
parent ec9294202e
commit 3b60f4b089
2 changed files with 29 additions and 14 deletions

View File

@@ -754,6 +754,15 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
starObjectIdentifier = (SqlObjectIdentifier)selectStarExpression.Children.ElementAt(0);
}
/*
Returning no suggestions when the bound tables are null.
This happens when there are no existing connections for the script.
*/
if (selectStarExpression.BoundTables == null)
{
return null;
}
List<ITabular> boundedTableList = selectStarExpression.BoundTables.ToList();
IList<string> columnNames = new List<string>();
@@ -829,11 +838,11 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
public static SqlSelectStarExpression TryGetSelectStarStatement(SqlCodeObject currentNode, ScriptDocumentInfo scriptDocumentInfo)
{
if(currentNode == null || scriptDocumentInfo == null)
if (currentNode == null || scriptDocumentInfo == null)
{
return null;
}
// Checking if the current node is a sql select star expression.
if (currentNode is SqlSelectStarExpression)
{

View File

@@ -947,18 +947,18 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
{
try
{
// parse current SQL file contents to retrieve a list of errors
ParseResult parseResult = Parser.IncrementalParse(
scriptFile.Contents,
parseInfo.ParseResult,
this.DefaultParseOptions);
// parse current SQL file contents to retrieve a list of errors
ParseResult parseResult = Parser.IncrementalParse(
scriptFile.Contents,
parseInfo.ParseResult,
this.DefaultParseOptions);
parseInfo.ParseResult = parseResult;
}
catch (Exception e)
{
// Log the exception but don't rethrow it to prevent parsing errors from crashing SQL Tools Service
Logger.Write(TraceEventType.Error, string.Format("An unexpected error occured while parsing: {0}", e.ToString()));
// Log the exception but don't rethrow it to prevent parsing errors from crashing SQL Tools Service
Logger.Write(TraceEventType.Error, string.Format("An unexpected error occured while parsing: {0}", e.ToString()));
}
}, ConnectedBindingQueue.QueueThreadStackSize);
parseThread.Start();
@@ -1658,12 +1658,18 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices
// cache the current script parse info object to resolve completions later
this.currentCompletionParseInfo = scriptParseInfo;
resultCompletionItems = result.CompletionItems;
// Expanding star expressions in query
CompletionItem[] starExpansionSuggestion = AutoCompleteHelper.ExpandSqlStarExpression(scriptDocumentInfo);
if (starExpansionSuggestion != null)
/*
Expanding star expressions in query only when the script is connected to a database
as the parser requires a connection to determine column names
*/
if (connInfo != null)
{
return starExpansionSuggestion;
CompletionItem[] starExpansionSuggestion = AutoCompleteHelper.ExpandSqlStarExpression(scriptDocumentInfo);
if (starExpansionSuggestion != null)
{
return starExpansionSuggestion;
}
}
// if there are no completions then provide the default list