- Notifications
You must be signed in to change notification settings - Fork311
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
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 OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
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 obsoleteSmiEventSink_Default
class and all its usages, simplifyingValueUtilsSmi
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 updatedValueUtilsSmi calls |
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiSettersStream.cs | Updated constructor andValueUtilsSmi calls to drop sink parameter |
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SmiGettersStream.cs | Updated constructor andValueUtilsSmi 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 temporarynew SmiEventSink_Default() fromSetCompatibleValueV200 |
src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj | Removed compile includes forSmiEventSink_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). |
codecovbot commentedJun 25, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
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:
|
src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/SqlDataRecord.netcore.csShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
100209d
intodotnet:mainUh oh!
There was an error while loading.Please reload this page.
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 ofSmiEventSink_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.