Skip to content

Commit 4ca71d9

Browse files
authored
Revert "Perf | avoid boxing of SqlGuid in SqlBuffer (#2306)" (#2311)
This reverts commit 9602271.
1 parent 838b931 commit 4ca71d9

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5504,7 +5504,7 @@ internal static object GetNullSqlValue(SqlBuffer nullVal, SqlMetaDataPriv md, Sq
55045504
break;
55055505

55065506
case SqlDbType.UniqueIdentifier:
5507-
nullVal.SetToNullOfType(SqlBuffer.StorageType.SqlGuid);
5507+
nullVal.SqlGuid = SqlGuid.Null;
55085508
break;
55095509

55105510
case SqlDbType.Bit:

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6310,7 +6310,7 @@ internal static object GetNullSqlValue(
63106310
break;
63116311

63126312
case SqlDbType.UniqueIdentifier:
6313-
nullVal.SetToNullOfType(SqlBuffer.StorageType.SqlGuid);
6313+
nullVal.SqlGuid = SqlGuid.Null;
63146314
break;
63156315

63166316
case SqlDbType.Bit:

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/ValueUtilsSmi.netfx.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ private static void GetNullOutputParameterSmi(SmiMetaData metaData, SqlBuffer ta
152152
// special case SqlBinary, 'cause tds parser never sets SqlBuffer to null, just to empty!
153153
targetBuffer.SqlBinary = SqlBinary.Null;
154154
}
155+
else if (SqlBuffer.StorageType.SqlGuid == stype)
156+
{
157+
targetBuffer.SqlGuid = SqlGuid.Null;
158+
}
155159
else
156160
{
157161
targetBuffer.SetToNullOfType(stype);

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlBuffer.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ internal struct Storage
109109
private bool _isNull;
110110
private StorageType _type;
111111
private Storage _value;
112-
private object _object; // String, SqlBinary, SqlCachedBuffer, SqlString, SqlXml
112+
private object _object; // String, SqlBinary, SqlCachedBuffer, SqlGuid, SqlString, SqlXml
113113

114114
internal SqlBuffer()
115115
{
@@ -815,17 +815,14 @@ internal SqlGuid SqlGuid
815815
}
816816
else if (StorageType.SqlGuid == _type)
817817
{
818-
return IsNull ? SqlGuid.Null : new SqlGuid(_value._guid);
818+
return IsNull ? SqlGuid.Null : (SqlGuid)_object;
819819
}
820820
return (SqlGuid)SqlValue; // anything else we haven't thought of goes through boxing.
821821
}
822822
set
823823
{
824824
Debug.Assert(IsEmpty, "setting value a second time?");
825-
if (!value.IsNull)
826-
{
827-
_value._guid = value.Value;
828-
}
825+
_object = value;
829826
_type = StorageType.SqlGuid;
830827
_isNull = value.IsNull;
831828
}

0 commit comments

Comments
 (0)