From 57b7126ccf1d430f4a184c7c412228ca7a5eb4f1 Mon Sep 17 00:00:00 2001 From: Udeesha Gautam <46980425+udeeshagautam@users.noreply.github.com> Date: Fri, 25 Oct 2019 15:41:59 -0700 Subject: [PATCH] Explicitly erroring out on some failing commands that were not already included (#882) * Excplitly erroring out on some failing commands that was not happening before * Ensuring the error message goes through without getting converted to different error --- .../ExecutionEngineCode/ExecutionEngine.cs | 7 ++++++- .../BatchParser/Parser.cs | 21 +++++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs index 99d5c8cc..03241572 100644 --- a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs +++ b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs @@ -485,7 +485,12 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode } catch (BatchParserException ex) { - if (ex.ErrorCode != ErrorCode.Aborted) + if (ex.ErrorCode == ErrorCode.UnsupportedCommand) + { + result = ScriptExecutionResult.Failure; + RaiseScriptError(string.Format(CultureInfo.CurrentCulture, ex.Message), ScriptMessageType.FatalError); + } + else if (ex.ErrorCode != ErrorCode.Aborted) { result = ScriptExecutionResult.Failure; string info = ex.Text; diff --git a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs index e1a87ed4..35489968 100644 --- a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs +++ b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs @@ -370,12 +370,6 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser LexerTokenType tokenType = LookaheadTokenType; switch (tokenType) { - case LexerTokenType.OnError: - RemoveLastWhitespaceToken(); - Token onErrorToken = LookaheadToken; - Accept(); - ParseOnErrorCommand(onErrorToken); - break; case LexerTokenType.Eof: if (tokenBuffer.Count > 0) { @@ -387,11 +381,6 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser Accept(); ParseGo(); break; - case LexerTokenType.Include: - RemoveLastWhitespaceToken(); - Accept(); - ParseInclude(); - break; case LexerTokenType.Comment: case LexerTokenType.NewLine: case LexerTokenType.Text: @@ -405,17 +394,21 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser Accept(); ParseSetvar(setvarToken); break; + // Supported by SSMS but not by ADS + case LexerTokenType.Include: + case LexerTokenType.OnError: case LexerTokenType.Connect: - case LexerTokenType.Ed: case LexerTokenType.ErrorCommand: case LexerTokenType.Execute: case LexerTokenType.Exit: + case LexerTokenType.Out: + case LexerTokenType.Quit: + // not supported on SSMS or ADS + case LexerTokenType.Ed: case LexerTokenType.Help: case LexerTokenType.List: case LexerTokenType.ListVar: - case LexerTokenType.Out: case LexerTokenType.Perftrace: - case LexerTokenType.Quit: case LexerTokenType.Reset: case LexerTokenType.Serverlist: case LexerTokenType.Xml: