-
Notifications
You must be signed in to change notification settings - Fork 314
Cleanup | Remove SmiEventSink_Default #3438
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/azp run |
Azure Pipelines successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! One small tweak you can make if you feel like it. No worries about stepping on my toes - I kinda thought I had hit the end of the line for removing SMI code, so I'm extra glad there's more to chuck 😄
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR removes the obsolete SmiEventSink_Default
class and all its usages, simplifying ValueUtilsSmi
calls by dropping the event-sink parameter and cleaning up related code.
- Deleted the
SmiEventSink_Default
class and its compile includes. - Updated all
ValueUtilsSmi
calls inSqlDataRecord
, stream classes, and TdsParser to remove the sink parameter. - Removed the
_eventSink
field and message-processing calls fromSqlDataRecord
constructor.
Reviewed Changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiEventSink_Default.cs | Deleted obsolete event-sink class |
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.netfx.cs src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.netcore.cs src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.cs |
Removed _eventSink usage and updated ValueUtilsSmi calls |
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiSettersStream.cs | Updated constructor and ValueUtilsSmi calls to drop sink parameter |
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiGettersStream.cs | Updated constructor and ValueUtilsSmi calls to drop sink parameter |
src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient/TdsParser.cs |
Removed temporary new SmiEventSink_Default() from SetCompatibleValueV200 |
src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj |
Removed compile includes for SmiEventSink_Default |
Comments suppressed due to low confidence (2)
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiSettersStream.cs:77
- Consider adding unit tests for
SmiSettersStream
methods (Flush
,SetLength
,Write
,Seek
) to verify correct behavior after removing the event sink parameter.
_lengthWritten = ValueUtilsSmi.SetBytesLength(_setters, _ordinal, _metaData, _lengthWritten);
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.cs:380
- [nitpick] The
_recordBuffer
initialization is duplicated in both#if NETFRAMEWORK
and#else
branches. You can move it above the directives and only keep the_usesStringStorageForXml
assignment inside the#if
to reduce duplication.
_recordBuffer = new MemoryRecordBuffer(_columnSmiMetaData);
/azp run |
Azure Pipelines successfully started running 2 pipeline(s). |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3438 +/- ##
==========================================
- Coverage 64.70% 60.14% -4.57%
==========================================
Files 280 274 -6
Lines 62174 62065 -109
==========================================
- Hits 40231 37328 -2903
- Misses 21943 24737 +2794
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Description
This follows up #3431 - sorry if I'm treading on your toes here @benrr101. It's a fairly bulky set of changes, but most of this bulk comes from removing the methods in ValueUtilsSmi which accepted and passed
SmiEventSink_Default
parameters. The majority of the work is handled in the first three methods.My process here is clearest when considered in the context of SmiEventSink_Default.cs:
ProcessMessagesAndThrow
only does work if called whenHasMessages
is true.HasMessages
is only true if_errors
or_warnings
is non-null.ProcessMessages
, and in both cases they're set to null.HasMessages
is always false, andProcessMessagesAndThrow
never does anything. It can be removed.ProcessMessagesAndThrow
was the only member (besides the constructor) accessed on the class.I thus removed the entire class and every reference to it. This has knock-on effects on SqlDataReader's target-specific files, (which can be merged and removed) but those can be cleaned up later.
Testing
Unit tests and manual tests pass, although I'd appreciate a CI run.