diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/SaveResultsRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/SaveResultsRequest.cs index 369fdb67..85f87b9d 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/SaveResultsRequest.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/SaveResultsRequest.cs @@ -84,6 +84,17 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.Contracts public string Messages { get; set; } } + /// + /// Error object for save result + /// + public class SaveResultRequestError + { + /// + /// Error message + /// + public string message { get; set; } + } + /// /// Request type to save results as CSV /// diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/QueryExecutionService.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/QueryExecutionService.cs index 9819504d..ea69514b 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/QueryExecutionService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/QueryExecutionService.cs @@ -280,7 +280,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution SaveResults.AsyncSaveEventHandler errorHandler = async message => { selectedResultSet.RemoveSaveTask(saveParams.FilePath); - await requestContext.SendError(message); + await requestContext.SendError(new SaveResultRequestError { message = message }); }; saveAsCsv.SaveFailed += errorHandler; @@ -323,7 +323,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution SaveResults.AsyncSaveEventHandler errorHandler = async message => { selectedResultSet.RemoveSaveTask(saveParams.FilePath); - await requestContext.SendError(message); + await requestContext.SendError(new SaveResultRequestError { message = message }); }; saveAsJson.SaveFailed += errorHandler; diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/SaveResults.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/SaveResults.cs index 6fd3a505..713eb764 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/SaveResults.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/SaveResults.cs @@ -222,7 +222,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution } if (SaveFailed != null) { - await SaveFailed(ex.ToString()); + await SaveFailed(ex.Message); } } }); diff --git a/test/Microsoft.SqlTools.ServiceLayer.Test/QueryExecution/SaveResultsTests.cs b/test/Microsoft.SqlTools.ServiceLayer.Test/QueryExecution/SaveResultsTests.cs index 161e255b..470476c2 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.Test/QueryExecution/SaveResultsTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.Test/QueryExecution/SaveResultsTests.cs @@ -137,8 +137,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution FilePath = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "G:\\test.csv" : "/test.csv" }; - string errMessage = null; - var saveRequest = GetSaveResultsContextMock( null, err => errMessage = (string) err); + SaveResultRequestError errMessage = null; + var saveRequest = GetSaveResultsContextMock( null, err => errMessage = (SaveResultRequestError) err); queryService.ActiveQueries[Common.OwnerUri].Batches[0] = Common.GetBasicExecutedBatch(); // Call save results and wait on the save task @@ -296,8 +296,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution }; - string errMessage = null; - var saveRequest = GetSaveResultsContextMock( null, err => errMessage = (string) err); + SaveResultRequestError errMessage = null; + var saveRequest = GetSaveResultsContextMock( null, err => errMessage = (SaveResultRequestError) err); queryService.ActiveQueries[Common.OwnerUri].Batches[0] = Common.GetBasicExecutedBatch(); // Call save results and wait on the save task