Skip to content

Commit ec6e00c

Browse files
committed
Merge pull request dotnet#4332 from kkurni/fix-sqludt-exception
SqlClient - Fix SqlUDT Type Exception
2 parents 4ff65d7 + 47a435c commit ec6e00c

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

src/System.Data.SqlClient/src/System/Data/SqlClient/SqlEnums.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ internal static MetaType GetSqlDataType(int tdsType, UInt32 userType, int length
704704
case TdsEnums.SQLNVARCHAR: return MetaNVarChar;
705705
case TdsEnums.SQLNTEXT: return MetaNText;
706706
case TdsEnums.SQLVARIANT: return s_metaVariant;
707+
case TdsEnums.SQLUDT: return s_metaUdt;
707708
case TdsEnums.SQLXMLTYPE: return MetaXml;
708709
case TdsEnums.SQLTABLE: return s_metaTable;
709710
case TdsEnums.SQLDATE: return s_metaDate;
@@ -832,6 +833,8 @@ internal static String GetStringFromXml(XmlReader xmlreader)
832833
private static readonly MetaType s_metaVariant = new MetaType
833834
(255, 255, -1, true, false, false, TdsEnums.SQLVARIANT, TdsEnums.SQLVARIANT, MetaTypeName.VARIANT, typeof(System.Object), typeof(System.Object), SqlDbType.Variant, DbType.Object, 0);
834835

836+
private static readonly MetaType s_metaUdt = new MetaType
837+
(255, 255, -1, false, false, true, TdsEnums.SQLUDT, TdsEnums.SQLUDT, MetaTypeName.UDT, typeof(System.Object), typeof(System.Object), SqlDbType.Udt, DbType.Object, 0);
835838

836839
private static readonly MetaType s_metaTable = new MetaType
837840
(255, 255, -1, false, false, false, TdsEnums.SQLTABLE, TdsEnums.SQLTABLE, MetaTypeName.TABLE, typeof(IEnumerable<DbDataRecord>), typeof(IEnumerable<DbDataRecord>), SqlDbType.Structured, DbType.Object, 0);

src/System.Data.SqlClient/src/System/Data/SqlClient/TdsParser.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3199,6 +3199,8 @@ internal bool TryProcessReturnValue(int length, TdsParserStateObject stateObj, o
31993199

32003200
if (tdsType == TdsEnums.SQLUDT)
32013201
{
3202+
_state = TdsParserState.Broken;
3203+
_connHandler.BreakConnection();
32023204
throw SQL.UnsupportedFeatureAndToken(_connHandler, SqlDbType.Udt.ToString());
32033205
}
32043206

0 commit comments

Comments
 (0)