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

InMemory: Support for GroupBy aggregate #17480

Merged
merged 4 commits into from
Aug 29, 2019

Commits on Aug 28, 2019

  1. InMemory: Support for GroupBy aggregate

    Part of #16963
    
    Resolves #9591
    smitpatel committed Aug 28, 2019
    Configuration menu
    Copy the full SHA
    0b56335 View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2019

  1. InMemory: Support for DefaultIfEmpty

    Part of #16963
    smitpatel committed Aug 29, 2019
    Configuration menu
    Copy the full SHA
    f6d582e View commit details
    Browse the repository at this point in the history
  2. Add null propagation/protection logic for InMemory provider.

    When we bind to a non-nullable property on entity that can be nullable (e.g. due to left join) we modify the result to be nullable, to avoid "nullable object must have a value" errors. This nullability is then propagated further. We have few blockers:
    - predicates (Where, Any, First, Count, etc): always need to be of type bool. When necessary we add "== true".
    - conditional expression Test: needs to be bool, same as above
    - method call arguments: we can't reliably rewrite methodcall when the arguments types change (generic methods specifically), we convert arguments back to their original types if they were changed to nullable versions.
    - method call caller: if the caller was changed from non-nullable to nullable we still need to call the method with the original type, but we add null check before - caller.Method(args) -> nullable_caller == null ? null : (resultType?)caller.Method(args)
    - selectors (Select, Max etc): we need to preserve the original result type, we use convert
    - anonymous type, array init: we need to preserve the original type, we use convert
    
    Also enable GearsOfWar and ComplexNavigation tests for in memory.
    maumar authored and smitpatel committed Aug 29, 2019
    Configuration menu
    Copy the full SHA
    1e44972 View commit details
    Browse the repository at this point in the history
  3. InMemory: Some refactorings

    Part of #16963
    smitpatel committed Aug 29, 2019
    Configuration menu
    Copy the full SHA
    afc6ad3 View commit details
    Browse the repository at this point in the history