mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-16 09:35:36 -05:00
Adding new setting for numeric or text bit display (#243)
Adding a new setting to query execution setting that will change the display value we generate for `BIT` columns. The new setting is `DefaultDisplayBitAsNumber`. If true, bit columns will be displayed as 1 or 0. If false, they'll be displayed as true or false. The default value is true, to keep parity with SSMS behavior. Enables us to solve https://github.com/Microsoft/vscode-mssql/issues/690 and https://github.com/Microsoft/vscode-mssql/issues/513
This commit is contained in:
@@ -9,6 +9,8 @@ using System.Data.SqlTypes;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Microsoft.SqlTools.ServiceLayer.QueryExecution.Contracts;
|
||||
using Microsoft.SqlTools.ServiceLayer.SqlContext;
|
||||
using Microsoft.SqlTools.ServiceLayer.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
{
|
||||
@@ -30,6 +32,8 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
|
||||
private byte[] buffer;
|
||||
|
||||
private readonly QueryExecutionSettings executionSettings;
|
||||
|
||||
private readonly Stream fileStream;
|
||||
|
||||
private readonly Dictionary<Type, Func<long, DbColumnWrapper, FileStreamReadResult>> readMethods;
|
||||
@@ -40,8 +44,12 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
/// Constructs a new ServiceBufferFileStreamReader and initializes its state
|
||||
/// </summary>
|
||||
/// <param name="stream">The filestream to read from</param>
|
||||
public ServiceBufferFileStreamReader(Stream stream)
|
||||
{
|
||||
/// <param name="settings">The query execution settings</param>
|
||||
public ServiceBufferFileStreamReader(Stream stream, QueryExecutionSettings settings)
|
||||
{
|
||||
Validate.IsNotNull(nameof(stream), stream);
|
||||
Validate.IsNotNull(nameof(settings), settings);
|
||||
|
||||
// Open file for reading/writing
|
||||
if (!stream.CanRead || !stream.CanSeek)
|
||||
{
|
||||
@@ -49,6 +57,8 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
}
|
||||
fileStream = stream;
|
||||
|
||||
executionSettings = settings;
|
||||
|
||||
// Create internal buffer
|
||||
buffer = new byte[DefaultBufferSize];
|
||||
|
||||
@@ -259,7 +269,11 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
/// <returns>A bool</returns>
|
||||
internal FileStreamReadResult ReadBoolean(long fileOffset)
|
||||
{
|
||||
return ReadCellHelper(fileOffset, length => buffer[0] == 0x1);
|
||||
// Override the stringifier with numeric values if the user prefers that
|
||||
return ReadCellHelper(fileOffset, length => buffer[0] == 0x1,
|
||||
toStringFunc: val => executionSettings.DisplayBitAsNumber
|
||||
? val ? "1" : "0"
|
||||
: val.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -505,10 +519,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
||||
/// <summary>
|
||||
/// <see cref="LengthLength"/> + <see cref="ValueLength"/>
|
||||
/// </summary>
|
||||
public int TotalLength
|
||||
{
|
||||
get { return LengthLength + ValueLength; }
|
||||
}
|
||||
public int TotalLength => LengthLength + ValueLength;
|
||||
}
|
||||
|
||||
#region IDisposable Implementation
|
||||
|
||||
Reference in New Issue
Block a user