mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
Fix for save as Json failure (#216)
* Fix exception due to repeat disposal of stream * Fix off by one index for saving selection * Fix to overwrite file if file already exists * Fix test for Json save selection * Add Json Formatting
This commit is contained in:
@@ -51,7 +51,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
/// <returns>Stream writer</returns>
|
/// <returns>Stream writer</returns>
|
||||||
public IFileStreamWriter GetWriter(string fileName)
|
public IFileStreamWriter GetWriter(string fileName)
|
||||||
{
|
{
|
||||||
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
|
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
/// <returns>Stream writer</returns>
|
/// <returns>Stream writer</returns>
|
||||||
public IFileStreamWriter GetWriter(string fileName)
|
public IFileStreamWriter GetWriter(string fileName)
|
||||||
{
|
{
|
||||||
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
|
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
// Setup the internal state
|
// Setup the internal state
|
||||||
streamWriter = new StreamWriter(stream);
|
streamWriter = new StreamWriter(stream);
|
||||||
jsonWriter = new JsonTextWriter(streamWriter);
|
jsonWriter = new JsonTextWriter(streamWriter);
|
||||||
|
jsonWriter.Formatting = Formatting.Indented;
|
||||||
|
|
||||||
// Write the header of the file
|
// Write the header of the file
|
||||||
jsonWriter.WriteStartArray();
|
jsonWriter.WriteStartArray();
|
||||||
@@ -59,7 +60,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
|
|
||||||
// Write the items out as properties
|
// Write the items out as properties
|
||||||
int columnStart = ColumnStartIndex ?? 0;
|
int columnStart = ColumnStartIndex ?? 0;
|
||||||
int columnEnd = ColumnEndIndex ?? columns.Count;
|
int columnEnd = (ColumnEndIndex != null) ? ColumnEndIndex.Value + 1 : columns.Count;
|
||||||
for (int i = columnStart; i < columnEnd; i++)
|
for (int i = columnStart; i < columnEnd; i++)
|
||||||
{
|
{
|
||||||
jsonWriter.WritePropertyName(columns[i].ColumnName);
|
jsonWriter.WritePropertyName(columns[i].ColumnName);
|
||||||
@@ -84,9 +85,8 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
{
|
{
|
||||||
// Write the footer of the file
|
// Write the footer of the file
|
||||||
jsonWriter.WriteEndArray();
|
jsonWriter.WriteEndArray();
|
||||||
|
// This closes the underlying stream, so we needn't call close on the underlying stream explicitly
|
||||||
jsonWriter.Close();
|
jsonWriter.Close();
|
||||||
streamWriter.Dispose();
|
|
||||||
base.Dispose();
|
base.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,7 +99,6 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FileStream.Flush();
|
|
||||||
FileStream.Dispose();
|
FileStream.Dispose();
|
||||||
}
|
}
|
||||||
public virtual void Dispose()
|
public virtual void Dispose()
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.DataStorage
|
|||||||
var saveParams = new SaveResultsAsJsonRequestParams
|
var saveParams = new SaveResultsAsJsonRequestParams
|
||||||
{
|
{
|
||||||
ColumnStartIndex = 1,
|
ColumnStartIndex = 1,
|
||||||
ColumnEndIndex = 3,
|
ColumnEndIndex = 2,
|
||||||
RowStartIndex = 0, // Including b/c it is required to be a "save selection"
|
RowStartIndex = 0, // Including b/c it is required to be a "save selection"
|
||||||
RowEndIndex = 10
|
RowEndIndex = 10
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user