Fix to several issues around set result operators (Contains etc) #9057
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#8524 - Query: data corruption for queries with set result operators (Concat/Union etc) and collection navigations
#8525 - Query: compilation error for queries with navigations inside set result operators and Count
#9004 - Query: compilation error for queries with Concat on two entities and Count
Problem was that for set result operators we always need to materialize both sets, even if they are wrapped around scalar result operator (e.g. Count). This is needed because set result operators are currently performed on the client.
Also, we need to inject MaterializeCollectionNavigation calls into set result operators, so that the IQuerySource that is the argument to the set operator is wrapped in its own query source.
Also fixed some minor bugs in the MaterializeCollectionNavigation injector, which surfaced once the visitor started going inside SubQueryExpressions (it wasn't necessary before because we only needed to materialize top level collection).