Skip to content

Commit 7e86e4e

Browse files
authored
Sync SqlDataRecord (#1024)
1 parent d28fe21 commit 7e86e4e

File tree

3 files changed

+202
-201
lines changed

3 files changed

+202
-201
lines changed

doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<docs>
33
<members name="SqlDataRecord">
44
<SqlDataRecord>
5-
<summary>Represents a single row of data and its metadata. This class cannot be inherited.</summary>
5+
<summary>Represents a single row of data and its metadata.</summary>
66
<remarks>
77
<format type="text/markdown"><![CDATA[
88

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.cs

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@ public class SqlDataRecord : IDataRecord
2121
private FieldNameLookup _fieldNameLookup;
2222
private bool _usesStringStorageForXml;
2323

24-
private static readonly SmiMetaData s_maxNVarCharForXml = new SmiMetaData(SqlDbType.NVarChar, SmiMetaData.UnlimitedMaxLengthIndicator,
25-
SmiMetaData.DefaultNVarChar_NoCollation.Precision,
26-
SmiMetaData.DefaultNVarChar_NoCollation.Scale,
27-
SmiMetaData.DefaultNVarChar.LocaleId,
28-
SmiMetaData.DefaultNVarChar.CompareOptions,
29-
null);
24+
private static readonly SmiMetaData s_maxNVarCharForXml = new SmiMetaData(
25+
SqlDbType.NVarChar,
26+
SmiMetaData.UnlimitedMaxLengthIndicator,
27+
SmiMetaData.DefaultNVarChar_NoCollation.Precision,
28+
SmiMetaData.DefaultNVarChar_NoCollation.Scale,
29+
SmiMetaData.DefaultNVarChar.LocaleId,
30+
SmiMetaData.DefaultNVarChar.CompareOptions,
31+
userDefinedType: null
32+
);
3033

3134
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/FieldCount/*' />
3235
public virtual int FieldCount
@@ -50,7 +53,7 @@ public virtual string GetDataTypeName(int ordinal)
5053
{
5154
EnsureSubclassOverride();
5255
SqlMetaData metaData = GetSqlMetaData(ordinal);
53-
if (SqlDbType.Udt == metaData.SqlDbType)
56+
if (metaData.SqlDbType == SqlDbType.Udt)
5457
{
5558
return metaData.UdtTypeName;
5659
}
@@ -64,31 +67,23 @@ public virtual string GetDataTypeName(int ordinal)
6467
public virtual Type GetFieldType(int ordinal)
6568
{
6669
EnsureSubclassOverride();
67-
{
68-
SqlMetaData md = GetSqlMetaData(ordinal);
69-
return MetaType.GetMetaTypeFromSqlDbType(md.SqlDbType, false).ClassType;
70-
}
70+
SqlMetaData md = GetSqlMetaData(ordinal);
71+
return MetaType.GetMetaTypeFromSqlDbType(md.SqlDbType, false).ClassType;
7172
}
7273

7374
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/GetValue/*' />
7475
public virtual object GetValue(int ordinal)
7576
{
7677
EnsureSubclassOverride();
7778
SmiMetaData metaData = GetSmiMetaData(ordinal);
78-
79-
return ValueUtilsSmi.GetValue200(
80-
_eventSink,
81-
_recordBuffer,
82-
ordinal,
83-
metaData
84-
);
79+
return ValueUtilsSmi.GetValue200(_eventSink, _recordBuffer, ordinal, metaData);
8580
}
8681

8782
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/GetValues/*' />
8883
public virtual int GetValues(object[] values)
8984
{
9085
EnsureSubclassOverride();
91-
if (null == values)
86+
if (values == null)
9287
{
9388
throw ADP.ArgumentNull(nameof(values));
9489
}
@@ -158,7 +153,7 @@ public virtual byte GetByte(int ordinal)
158153
public virtual long GetBytes(int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length)
159154
{
160155
EnsureSubclassOverride();
161-
return ValueUtilsSmi.GetBytes(_eventSink, _recordBuffer, ordinal, GetSmiMetaData(ordinal), fieldOffset, buffer, bufferOffset, length, true);
156+
return ValueUtilsSmi.GetBytes(_eventSink, _recordBuffer, ordinal, GetSmiMetaData(ordinal), fieldOffset, buffer, bufferOffset, length, throwOnNull: true);
162157
}
163158

164159
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/GetChar/*' />
@@ -222,7 +217,7 @@ public virtual string GetString(int ordinal)
222217
{
223218
EnsureSubclassOverride();
224219
SmiMetaData colMeta = GetSmiMetaData(ordinal);
225-
if (_usesStringStorageForXml && SqlDbType.Xml == colMeta.SqlDbType)
220+
if (_usesStringStorageForXml && colMeta.SqlDbType == SqlDbType.Xml)
226221
{
227222
return ValueUtilsSmi.GetString(_eventSink, _recordBuffer, ordinal, s_maxNVarCharForXml);
228223
}
@@ -296,12 +291,11 @@ public virtual object GetSqlValue(int ordinal)
296291
public virtual int GetSqlValues(object[] values)
297292
{
298293
EnsureSubclassOverride();
299-
if (null == values)
294+
if (values == null)
300295
{
301296
throw ADP.ArgumentNull(nameof(values));
302297
}
303298

304-
305299
int copyLength = (values.Length < FieldCount) ? values.Length : FieldCount;
306300
for (int i = 0; i < copyLength; i++)
307301
{
@@ -428,7 +422,7 @@ public virtual SqlGuid GetSqlGuid(int ordinal)
428422
public virtual int SetValues(params object[] values)
429423
{
430424
EnsureSubclassOverride();
431-
if (null == values)
425+
if (values == null)
432426
{
433427
throw ADP.ArgumentNull(nameof(values));
434428
}
@@ -443,8 +437,12 @@ public virtual int SetValues(params object[] values)
443437
{
444438
SqlMetaData metaData = GetSqlMetaData(i);
445439
typeCodes[i] = MetaDataUtilsSmi.DetermineExtendedTypeCodeForUseWithSqlDbType(
446-
metaData.SqlDbType, false /* isMultiValued */, values[i], metaData.Type);
447-
if (ExtendedClrTypeCode.Invalid == typeCodes[i])
440+
metaData.SqlDbType,
441+
isMultiValued: false,
442+
values[i],
443+
metaData.Type
444+
);
445+
if (typeCodes[i] == ExtendedClrTypeCode.Invalid)
448446
{
449447
throw ADP.InvalidCast();
450448
}
@@ -454,7 +452,7 @@ public virtual int SetValues(params object[] values)
454452
// the validation loop and here, or if an invalid UDT was sent).
455453
for (int i = 0; i < copyLength; i++)
456454
{
457-
ValueUtilsSmi.SetCompatibleValueV200(_eventSink, _recordBuffer, i, GetSmiMetaData(i), values[i], typeCodes[i], 0, 0, null);
455+
ValueUtilsSmi.SetCompatibleValueV200(_eventSink, _recordBuffer, i, GetSmiMetaData(i), values[i], typeCodes[i], offset: 0, length: 0, peekAhead: null);
458456
}
459457

460458
return copyLength;
@@ -466,13 +464,17 @@ public virtual void SetValue(int ordinal, object value)
466464
EnsureSubclassOverride();
467465
SqlMetaData metaData = GetSqlMetaData(ordinal);
468466
ExtendedClrTypeCode typeCode = MetaDataUtilsSmi.DetermineExtendedTypeCodeForUseWithSqlDbType(
469-
metaData.SqlDbType, false /* isMultiValued */, value, metaData.Type);
470-
if (ExtendedClrTypeCode.Invalid == typeCode)
467+
metaData.SqlDbType,
468+
isMultiValued: false,
469+
value,
470+
metaData.Type
471+
);
472+
if (typeCode == ExtendedClrTypeCode.Invalid)
471473
{
472474
throw ADP.InvalidCast();
473475
}
474476

475-
ValueUtilsSmi.SetCompatibleValueV200(_eventSink, _recordBuffer, ordinal, GetSmiMetaData(ordinal), value, typeCode, 0, 0, null);
477+
ValueUtilsSmi.SetCompatibleValueV200(_eventSink, _recordBuffer, ordinal, GetSmiMetaData(ordinal), value, typeCode, offset: 0, length: 0, peekAhead: null);
476478
}
477479

478480
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/SetBoolean/*' />
@@ -550,6 +552,7 @@ public virtual void SetString(int ordinal, string value)
550552
EnsureSubclassOverride();
551553
ValueUtilsSmi.SetString(_eventSink, _recordBuffer, ordinal, GetSmiMetaData(ordinal), value);
552554
}
555+
553556
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/SetDecimal/*' />
554557
public virtual void SetDecimal(int ordinal, decimal value)
555558
{
@@ -709,7 +712,7 @@ public virtual void SetSqlBytes(int ordinal, SqlBytes value)
709712
public SqlDataRecord(params SqlMetaData[] metaData)
710713
{
711714
// Initial consistency check
712-
if (null == metaData)
715+
if (metaData == null)
713716
{
714717
throw ADP.ArgumentNull(nameof(metaData));
715718
}
@@ -718,7 +721,7 @@ public SqlDataRecord(params SqlMetaData[] metaData)
718721
_columnSmiMetaData = new SmiExtendedMetaData[metaData.Length];
719722
for (int i = 0; i < _columnSmiMetaData.Length; i++)
720723
{
721-
if (null == metaData[i])
724+
if (metaData[i] == null)
722725
{
723726
throw ADP.ArgumentNull($"{nameof(metaData)}[{i}]");
724727
}
@@ -727,16 +730,15 @@ public SqlDataRecord(params SqlMetaData[] metaData)
727730
}
728731

729732
_eventSink = new SmiEventSink_Default();
730-
731733
_recordBuffer = new MemoryRecordBuffer(_columnSmiMetaData);
732734
_usesStringStorageForXml = true;
733735
_eventSink.ProcessMessagesAndThrow();
734736
}
735737

736738
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData)
737739
{
738-
Debug.Assert(null != recordBuffer, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer");
739-
Debug.Assert(null != metaData, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]");
740+
Debug.Assert(recordBuffer != null, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer");
741+
Debug.Assert(metaData != null, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]");
740742

741743
_columnMetaData = new SqlMetaData[metaData.Length];
742744
_columnSmiMetaData = new SmiExtendedMetaData[metaData.Length];
@@ -747,7 +749,6 @@ internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[
747749
}
748750

749751
_eventSink = new SmiEventSink_Default();
750-
751752
_recordBuffer = recordBuffer;
752753
_eventSink.ProcessMessagesAndThrow();
753754
}
@@ -763,7 +764,6 @@ internal SmiRecordBuffer RecordBuffer
763764
}
764765
}
765766

766-
767767
internal SqlMetaData[] InternalGetMetaData()
768768
{
769769
return _columnMetaData;
@@ -786,15 +786,17 @@ internal void ThrowIfInvalidOrdinal(int ordinal)
786786
throw ADP.IndexOutOfRange(ordinal);
787787
}
788788
}
789+
789790
private void EnsureSubclassOverride()
790791
{
791-
if (null == _recordBuffer)
792+
if (_recordBuffer == null)
792793
{
793794
throw SQL.SubclassMustOverride();
794795
}
795796
}
796797

797798
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/System.Data.IDataRecord.GetData/*' />
799+
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
798800
IDataReader System.Data.IDataRecord.GetData(int ordinal)
799801
{
800802
throw ADP.NotSupported();

0 commit comments

Comments
 (0)