mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
Revert query execution changes (#1341)
* Revert "handle sql variable type (#1333)" This reverts commit51c801eb33. * Revert "handle large decimal (#1326)" This reverts commitfd5b8af0c0.
This commit is contained in:
@@ -8631,11 +8631,6 @@ namespace Microsoft.SqlTools.ServiceLayer
|
|||||||
return Keys.GetString(Keys.QueryServiceQueryFailed, message);
|
return Keys.GetString(Keys.QueryServiceQueryFailed, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string QueryServiceUnsupportedSqlVariantType(string underlyingType, string columnName)
|
|
||||||
{
|
|
||||||
return Keys.GetString(Keys.QueryServiceUnsupportedSqlVariantType, underlyingType, columnName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string QueryServiceSaveAsFail(string fileName, string message)
|
public static string QueryServiceSaveAsFail(string fileName, string message)
|
||||||
{
|
{
|
||||||
return Keys.GetString(Keys.QueryServiceSaveAsFail, fileName, message);
|
return Keys.GetString(Keys.QueryServiceSaveAsFail, fileName, message);
|
||||||
@@ -9016,9 +9011,6 @@ namespace Microsoft.SqlTools.ServiceLayer
|
|||||||
public const string QueryServiceResultSetTooLarge = "QueryServiceResultSetTooLarge";
|
public const string QueryServiceResultSetTooLarge = "QueryServiceResultSetTooLarge";
|
||||||
|
|
||||||
|
|
||||||
public const string QueryServiceUnsupportedSqlVariantType = "QueryServiceUnsupportedSqlVariantType";
|
|
||||||
|
|
||||||
|
|
||||||
public const string QueryServiceSaveAsResultSetNotComplete = "QueryServiceSaveAsResultSetNotComplete";
|
public const string QueryServiceSaveAsResultSetNotComplete = "QueryServiceSaveAsResultSetNotComplete";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -303,11 +303,6 @@
|
|||||||
<value>Result set has too many rows to be safely loaded</value>
|
<value>Result set has too many rows to be safely loaded</value>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="QueryServiceUnsupportedSqlVariantType" xml:space="preserve">
|
|
||||||
<value>The underlying type "{0}" for sql variant column "{1}" could not be resolved.</value>
|
|
||||||
<comment>.
|
|
||||||
Parameters: 0 - underlyingType (string), 1 - columnName (string) </comment>
|
|
||||||
</data>
|
|
||||||
<data name="QueryServiceSaveAsResultSetNotComplete" xml:space="preserve">
|
<data name="QueryServiceSaveAsResultSetNotComplete" xml:space="preserve">
|
||||||
<value>Result cannot be saved until query execution has completed</value>
|
<value>Result cannot be saved until query execution has completed</value>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
|
|||||||
@@ -124,8 +124,6 @@ QueryServiceResultSetHasNoResults = Query has no results to return
|
|||||||
|
|
||||||
QueryServiceResultSetTooLarge = Result set has too many rows to be safely loaded
|
QueryServiceResultSetTooLarge = Result set has too many rows to be safely loaded
|
||||||
|
|
||||||
QueryServiceUnsupportedSqlVariantType(string underlyingType, string columnName) = The underlying type "{0}" for sql variant column "{1}" could not be resolved.
|
|
||||||
|
|
||||||
### Save As Requests
|
### Save As Requests
|
||||||
|
|
||||||
QueryServiceSaveAsResultSetNotComplete = Result cannot be saved until query execution has completed
|
QueryServiceSaveAsResultSetNotComplete = Result cannot be saved until query execution has completed
|
||||||
|
|||||||
@@ -5696,11 +5696,17 @@
|
|||||||
<target state="new">Specifies whether the check constraint is Enabled</target>
|
<target state="new">Specifies whether the check constraint is Enabled</target>
|
||||||
<note></note>
|
<note></note>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="QueryServiceUnsupportedSqlVariantType">
|
<trans-unit id="SessionMissingDetails">
|
||||||
<source>The underlying type "{0}" for sql variant column "{1}" could not be resolved.</source>
|
<source>Unable to start streaming session {0} due to missing session details.</source>
|
||||||
<target state="new">The underlying type "{0}" for sql variant column "{1}" could not be resolved.</target>
|
<target state="new">Unable to start streaming session {0} due to missing session details.</target>
|
||||||
<note>.
|
<note>.
|
||||||
Parameters: 0 - underlyingType (string), 1 - columnName (string) </note>
|
Parameters: 0 - id (int) </note>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="StartProfilingFailed">
|
||||||
|
<source>Failed to start profiler: {0}</source>
|
||||||
|
<target state="new">Failed to start profiler: {0}</target>
|
||||||
|
<note>.
|
||||||
|
Parameters: 0 - error (String) </note>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
{typeof(bool), (o, id, col) => ReadBoolean(o, id)},
|
{typeof(bool), (o, id, col) => ReadBoolean(o, id)},
|
||||||
{typeof(double), (o, id, col) => ReadDouble(o, id)},
|
{typeof(double), (o, id, col) => ReadDouble(o, id)},
|
||||||
{typeof(float), (o, id, col) => ReadSingle(o, id)},
|
{typeof(float), (o, id, col) => ReadSingle(o, id)},
|
||||||
{typeof(decimal), (o, id, col) => ReadSqlDecimal(o, id)},
|
{typeof(decimal), (o, id, col) => ReadDecimal(o, id)},
|
||||||
{typeof(DateTime), ReadDateTime},
|
{typeof(DateTime), ReadDateTime},
|
||||||
{typeof(DateTimeOffset), (o, id, col) => ReadDateTimeOffset(o, id)},
|
{typeof(DateTimeOffset), (o, id, col) => ReadDateTimeOffset(o, id)},
|
||||||
{typeof(TimeSpan), (o, id, col) => ReadTimeSpan(o, id)},
|
{typeof(TimeSpan), (o, id, col) => ReadTimeSpan(o, id)},
|
||||||
@@ -134,15 +134,14 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to specify the assembly name for SQL types in order to resolve the type correctly.
|
// The typename is stored in the string
|
||||||
if (sqlVariantType.StartsWith("System.Data.SqlTypes."))
|
|
||||||
{
|
|
||||||
sqlVariantType = sqlVariantType + ", System.Data.Common";
|
|
||||||
}
|
|
||||||
colType = Type.GetType(sqlVariantType);
|
colType = Type.GetType(sqlVariantType);
|
||||||
if (colType == null)
|
|
||||||
|
// Workaround .NET bug, see sqlbu# 440643 and vswhidbey# 599834
|
||||||
|
// TODO: Is this workaround necessary for .NET Core?
|
||||||
|
if (colType == null && sqlVariantType == "System.Data.SqlTypes.SqlSingle")
|
||||||
{
|
{
|
||||||
throw new ArgumentException(SR.QueryServiceUnsupportedSqlVariantType(sqlVariantType, column.ColumnName));
|
colType = typeof(SqlSingle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -92,19 +92,19 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
{typeof(byte[]), val => WriteBytes((byte[]) val)},
|
{typeof(byte[]), val => WriteBytes((byte[]) val)},
|
||||||
{typeof(Guid), val => WriteGuid((Guid) val)},
|
{typeof(Guid), val => WriteGuid((Guid) val)},
|
||||||
|
|
||||||
{typeof(SqlString), val => WriteNullable((SqlString) val, obj => WriteString(((SqlString) obj).Value))},
|
{typeof(SqlString), val => WriteNullable((SqlString) val, obj => WriteString((string) obj))},
|
||||||
{typeof(SqlInt16), val => WriteNullable((SqlInt16) val, obj => WriteInt16(((SqlInt16) obj).Value))},
|
{typeof(SqlInt16), val => WriteNullable((SqlInt16) val, obj => WriteInt16((short) obj))},
|
||||||
{typeof(SqlInt32), val => WriteNullable((SqlInt32) val, obj => WriteInt32(((SqlInt32)obj).Value))},
|
{typeof(SqlInt32), val => WriteNullable((SqlInt32) val, obj => WriteInt32((int) obj))},
|
||||||
{typeof(SqlInt64), val => WriteNullable((SqlInt64) val, obj => WriteInt64(((SqlInt64) obj).Value)) },
|
{typeof(SqlInt64), val => WriteNullable((SqlInt64) val, obj => WriteInt64((long) obj)) },
|
||||||
{typeof(SqlByte), val => WriteNullable((SqlByte) val, obj => WriteByte(((SqlByte) obj).Value)) },
|
{typeof(SqlByte), val => WriteNullable((SqlByte) val, obj => WriteByte((byte) obj)) },
|
||||||
{typeof(SqlBoolean), val => WriteNullable((SqlBoolean) val, obj => WriteBoolean(((SqlBoolean) obj).Value)) },
|
{typeof(SqlBoolean), val => WriteNullable((SqlBoolean) val, obj => WriteBoolean((bool) obj)) },
|
||||||
{typeof(SqlDouble), val => WriteNullable((SqlDouble) val, obj => WriteDouble(((SqlDouble) obj).Value)) },
|
{typeof(SqlDouble), val => WriteNullable((SqlDouble) val, obj => WriteDouble((double) obj)) },
|
||||||
{typeof(SqlSingle), val => WriteNullable((SqlSingle) val, obj => WriteSingle(((SqlSingle) obj).Value)) },
|
{typeof(SqlSingle), val => WriteNullable((SqlSingle) val, obj => WriteSingle((float) obj)) },
|
||||||
{typeof(SqlDecimal), val => WriteNullable((SqlDecimal) val, obj => WriteSqlDecimal((SqlDecimal) obj)) },
|
{typeof(SqlDecimal), val => WriteNullable((SqlDecimal) val, obj => WriteSqlDecimal((SqlDecimal) obj)) },
|
||||||
{typeof(SqlDateTime), val => WriteNullable((SqlDateTime) val, obj => WriteDateTime(((SqlDateTime) obj).Value)) },
|
{typeof(SqlDateTime), val => WriteNullable((SqlDateTime) val, obj => WriteDateTime((DateTime) obj)) },
|
||||||
{typeof(SqlBytes), val => WriteNullable((SqlBytes) val, obj => WriteBytes(((SqlBytes) obj).Value)) },
|
{typeof(SqlBytes), val => WriteNullable((SqlBytes) val, obj => WriteBytes((byte[]) obj)) },
|
||||||
{typeof(SqlBinary), val => WriteNullable((SqlBinary) val, obj => WriteBytes(((SqlBinary) obj).Value)) },
|
{typeof(SqlBinary), val => WriteNullable((SqlBinary) val, obj => WriteBytes((byte[]) obj)) },
|
||||||
{typeof(SqlGuid), val => WriteNullable((SqlGuid) val, obj => WriteGuid(((SqlGuid) obj).Value)) },
|
{typeof(SqlGuid), val => WriteNullable((SqlGuid) val, obj => WriteGuid((Guid) obj)) },
|
||||||
{typeof(SqlMoney), val => WriteNullable((SqlMoney) val, obj => WriteMoney((SqlMoney) obj)) }
|
{typeof(SqlMoney), val => WriteNullable((SqlMoney) val, obj => WriteMoney((SqlMoney) obj)) }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -299,7 +299,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
internal int WriteBoolean(bool val)
|
internal int WriteBoolean(bool val)
|
||||||
{
|
{
|
||||||
byteBuffer[0] = 0x01; // length
|
byteBuffer[0] = 0x01; // length
|
||||||
byteBuffer[1] = (byte)(val ? 0x01 : 0x00);
|
byteBuffer[1] = (byte) (val ? 0x01 : 0x00);
|
||||||
return FileUtilities.WriteWithLength(fileStream, byteBuffer, 2);
|
return FileUtilities.WriteWithLength(fileStream, byteBuffer, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
/// <returns>The value of the given column</returns>
|
/// <returns>The value of the given column</returns>
|
||||||
public object GetValue(int i)
|
public object GetValue(int i)
|
||||||
{
|
{
|
||||||
return sqlDataReader == null ? DbDataReader.GetValue(i) : sqlDataReader.GetSqlValue(i);
|
return sqlDataReader == null ? DbDataReader.GetValue(i) : sqlDataReader.GetValue(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -113,7 +113,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sqlDataReader.GetSqlValues(values);
|
sqlDataReader.GetValues(values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,20 +44,6 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.QueryExecution.DataSt
|
|||||||
Assert.NotNull(bytes);
|
Assert.NotNull(bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Validate GetBytesWithMaxCapacity
|
|
||||||
/// </summary>
|
|
||||||
[Test]
|
|
||||||
public void GetLongDecimalTest()
|
|
||||||
{
|
|
||||||
// SQL Server support up to 38 digits of decimal
|
|
||||||
var storageReader = GetTestStorageDataReader(
|
|
||||||
"SELECT 99999999999999999999999999999999999999");
|
|
||||||
storageReader.DbDataReader.Read();
|
|
||||||
var value = storageReader.GetValue(0);
|
|
||||||
Assert.AreEqual("99999999999999999999999999999999999999", value.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validate GetCharsWithMaxCapacity
|
/// Validate GetCharsWithMaxCapacity
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -77,7 +63,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.QueryExecution.DataSt
|
|||||||
Assert.True(shortName.Length == 2);
|
Assert.True(shortName.Length == 2);
|
||||||
|
|
||||||
Assert.Throws<ArgumentOutOfRangeException>(() => storageReader.GetBytesWithMaxCapacity(0, 0));
|
Assert.Throws<ArgumentOutOfRangeException>(() => storageReader.GetBytesWithMaxCapacity(0, 0));
|
||||||
Assert.Throws<ArgumentOutOfRangeException>(() => storageReader.GetCharsWithMaxCapacity(0, 0));
|
Assert.Throws<ArgumentOutOfRangeException>(() => storageReader.GetCharsWithMaxCapacity(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -108,10 +94,10 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.QueryExecution.DataSt
|
|||||||
writer.Write(output);
|
writer.Write(output);
|
||||||
Assert.True(writer.ToString().Equals(output));
|
Assert.True(writer.ToString().Equals(output));
|
||||||
writer.Write('.');
|
writer.Write('.');
|
||||||
Assert.True(writer.ToString().Equals(output + '.'));
|
Assert.True(writer.ToString().Equals(output + '.'));
|
||||||
writer.Write(output);
|
writer.Write(output);
|
||||||
writer.Write('.');
|
writer.Write('.');
|
||||||
Assert.True(writer.ToString().Equals(output + '.'));
|
Assert.True(writer.ToString().Equals(output + '.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user