handle sql variable type (#1333)

* handle sql variable type

* comments
This commit is contained in:
Alan Ren
2021-12-07 19:23:15 -08:00
committed by GitHub
parent 822a6459ce
commit 51c801eb33
5 changed files with 29 additions and 7 deletions

View File

@@ -8631,6 +8631,11 @@ namespace Microsoft.SqlTools.ServiceLayer
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)
{
return Keys.GetString(Keys.QueryServiceSaveAsFail, fileName, message);
@@ -9021,6 +9026,9 @@ namespace Microsoft.SqlTools.ServiceLayer
public const string QueryServiceResultSetTooLarge = "QueryServiceResultSetTooLarge";
public const string QueryServiceUnsupportedSqlVariantType = "QueryServiceUnsupportedSqlVariantType";
public const string QueryServiceSaveAsResultSetNotComplete = "QueryServiceSaveAsResultSetNotComplete";

View File

@@ -303,6 +303,11 @@
<value>Result set has too many rows to be safely loaded</value>
<comment></comment>
</data>
<data name="QueryServiceUnsupportedSqlVariantType" xml:space="preserve">
<value>The underlying type &quot;{0}&quot; for sql variant column &quot;{1}&quot; could not be resolved.</value>
<comment>.
Parameters: 0 - underlyingType (string), 1 - columnName (string) </comment>
</data>
<data name="QueryServiceSaveAsResultSetNotComplete" xml:space="preserve">
<value>Result cannot be saved until query execution has completed</value>
<comment></comment>

View File

@@ -124,6 +124,8 @@ QueryServiceResultSetHasNoResults = Query has no results to return
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
QueryServiceSaveAsResultSetNotComplete = Result cannot be saved until query execution has completed

View File

@@ -5708,6 +5708,12 @@
<note>.
Parameters: 0 - error (String) </note>
</trans-unit>
<trans-unit id="QueryServiceUnsupportedSqlVariantType">
<source>The underlying type "{0}" for sql variant column "{1}" could not be resolved.</source>
<target state="new">The underlying type "{0}" for sql variant column "{1}" could not be resolved.</target>
<note>.
Parameters: 0 - underlyingType (string), 1 - columnName (string) </note>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -134,14 +134,15 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
continue;
}
// The typename is stored in the string
colType = Type.GetType(sqlVariantType);
// 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")
// We need to specify the assembly name for SQL types in order to resolve the type correctly.
if (sqlVariantType.StartsWith("System.Data.SqlTypes."))
{
colType = typeof(SqlSingle);
sqlVariantType = sqlVariantType + ", System.Data.Common";
}
colType = Type.GetType(sqlVariantType);
if (colType == null)
{
throw new ArgumentException(SR.QueryServiceUnsupportedSqlVariantType(sqlVariantType, column.ColumnName));
}
}
else