Skip to content
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

Allow set operations over other mapping types #16813

Merged
merged 1 commit into from
Aug 1, 2019

Conversation

roji
Copy link
Member

@roji roji commented Jul 29, 2019

Including different mapping types on the two sides, as long as the result is compatible.

Fixes #16725

@ajcvickers
Copy link
Member

@roji Remember to re-target to release/3.0 before merging. Marking as blocked for now as a reminder...

Copy link
Member

@ajcvickers ajcvickers left a comment

Choose a reason for hiding this comment

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

Remember to re-target to release/3.0 before merging.

@roji roji changed the base branch from master to release/3.0 July 30, 2019 08:23
@roji
Copy link
Member Author

roji commented Jul 30, 2019

@ajcvickers done

Copy link
Contributor

@smitpatel smitpatel left a comment

Choose a reason for hiding this comment

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

Potential for bug.

Also add tests for more variety of SqlExpressions appearing with same and different kind of SqlExpression on both side.
-Unary
-SqlFunction
-SqlBinary
-Column
-SubSelect
-Constant
-Parameter

@roji roji force-pushed the MoreFlexibleSetOperations branch 2 times, most recently from cbe4ac9 to b6930c4 Compare July 31, 2019 17:07
Including different mapping types on the two sides, as long as the
result is compatible.

Fixes #16725
@roji roji force-pushed the MoreFlexibleSetOperations branch from b6930c4 to e85773b Compare July 31, 2019 21:04
@roji roji requested a review from smitpatel July 31, 2019 21:22
}

public override async Task Union_over_different_projection_types(bool isAsync, string leftType, string rightType)
{
Copy link
Contributor

Choose a reason for hiding this comment

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

Asserting Sqls dynamically like this is nightmare to maintain test.
So we are down to 2 choice. Either split out each into different tests (sync/async can be together like other tests)
or run loops to generate queries to execute one by one. Essentially removing leftType/rightType from parameter of the test.

Like Convert_ToDecimal test

Copy link
Member Author

Choose a reason for hiding this comment

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

Would have been better to receive this previously as I was asking for feedback.

To be sure I understand, you're saying it's more maintainable for us to have 72 manually-written SQL assertions? For comparison, Convert_ToDecimal has 8.

If you're not happy with the way the test looks, let me propose something. All of these test cases/assertions don't actually correspond to different code paths inside - the actual set operation logic doesn't care one bit if one side is a constant, a column, or a function call - as long as they return the same thing. In other words, coverage isn't actually increased. Maybe a single test per expression type (on both sides), plus one extra for different expression types could be sufficient.

Copy link
Member

Choose a reason for hiding this comment

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

I think we should go with the tests as @roji has written them for now. We can file an issue to discuss as a team whether we in general like this pattern or not, and then follow up appropriately.

@roji roji merged commit a3a9bde into release/3.0 Aug 1, 2019
@ghost ghost deleted the MoreFlexibleSetOperations branch August 1, 2019 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Union/Concat fails at mapping anonymous types from Select
3 participants