Skip to content

Cleanup of IRowCursor and related interfaces. IRowCursor/IRow are now classes. #1814

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

Merged
merged 11 commits into from
Dec 4, 2018

Conversation

TomFinley
Copy link
Contributor

@TomFinley TomFinley commented Dec 4, 2018

Partial fix for #1532. I say partial because part of what we also wanted to do was clean up some of the things in the interface (now class) that have not proven useful, but, this work is already large to the point where it would be probably unwise to try to make the PR larger.

I have structured the commits so they are easy to understand, if viewed one by one. The commits with "Rename" in the description are precisely that, that is, me going to one or more types as described, hitting F2, typing something new, and that becomes my commit. Consider reviewing the other ones -- there is probably not much use in review of the rename ones. (Except perhaps to suggest a better name than Row. 😛 )

{
/// <summary>
/// Returns the state of the cursor. Before the first call to <see cref="MoveNext"/> or
/// <see cref="MoveMany(long)"/> this should be <see cref="CursorState.NotStarted"/>. After
/// any call those move functions that returns <see langword="true"/>, this should return
/// <see cref="CursorState.Good"/>,
/// </summary>
CursorState State { get; }
public abstract CursorState State { get; }
Copy link
Contributor Author

@TomFinley TomFinley Dec 4, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you, gentle reader, took my advice and are reviewing commit by commit, you might in reading this be tempted to note that these have no documentation. Note that the lack of documentation on these in this commit is a temporary situation I knew I would change in a subsequent commit, since when IRow itself became a class in a later commit, I then immediately turn around and delete these abstract members.

@TomFinley TomFinley added the API Issues pertaining the friendly API label Dec 4, 2018
@TomFinley TomFinley self-assigned this Dec 4, 2018

namespace Microsoft.ML.Benchmarks
{
public class CacheDataViewBench
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This benchmark was necessary because, once I made IRowCursor and IRowSeeker abstract classes, not interfaces, the internal implementation code of the CacheDataView could no longer exploit the multiple inheritance you get from interfaces, to have both have common code; I instead solved that by composition, which involves wrapping objects. (A common pattern in my changes.) I wanted to check whether this resulted in a perf degradation when I did the change in a subsequent commit. (It doesn't seem like it did.)

Copy link
Contributor

@Ivanidzo4ka Ivanidzo4ka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Copy link
Member

@sfilipi sfilipi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Ch.CheckParam(col == 0, nameof(col));
return Enumerable.Empty<KeyValuePair<string, ColumnType>>();
}
public override long Batch => throw new NotImplementedException();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

throw new NotImplementedException(); [](start = 42, length = 36)

flagging this one too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @sfilipi , I believe I fixed that in my last commit (I fixed both this and the other one that you had already commented on at the same time), maybe you are looking at the older commit?

@TomFinley TomFinley merged commit 521acad into dotnet:master Dec 4, 2018
@TomFinley TomFinley deleted the tfinley/Cursor branch December 4, 2018 21:08
@ghost ghost locked as resolved and limited conversation to collaborators Mar 26, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
API Issues pertaining the friendly API
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants