- 
                Notifications
    You must be signed in to change notification settings 
- Fork 3.3k
Return null when the type is nullable for Cosmos Max/Min/Average #35173
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
Conversation
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.
LGTM but see comments/suggestions.
One thought - do we have tests where we do Min/Max/Average over a nullable value type, and where the database actually does contain a null (as opposed to an empty result set)? If not, it might be worth adding those, as especially in Cosmos the returns-null vs. returns-nothing are two very distinct cases.
        
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
          
            Show resolved
            Hide resolved
        
              
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
              
                Outdated
          
            Show resolved
            Hide resolved
        
      Fixes #35094 This was a regression resulting from the major Cosmos query refactoring that happened in EF9. In EF8, the functions Min, Max, and Average would return null if the return type was nullable or was cast to a nullable when the collection is empty. In EF9, this started throwing, which is correct for non-nullable types, but a regression for nullable types.
845d749    to
    12ee469      
    Compare
  
            
          
                test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs
          
            Show resolved
            Hide resolved
        
      | @roji Made some updates if you want to have another look. | 
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.
LGTM, am still a bit worried about the throw-on-null code we're removing in relational and Cosmos, but it all seems well-tested and we'll have 10 for users to test this on (we should avoid backporting that particular change).
        
          
                src/EFCore.Cosmos/Query/Internal/CosmosQueryableMethodTranslatingExpressionVisitor.cs
          
            Show resolved
            Hide resolved
        
              
          
                test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs
          
            Show resolved
            Hide resolved
        
              
          
                src/EFCore.Relational/Query/RelationalQueryableMethodTranslatingExpressionVisitor.cs
          
            Show resolved
            Hide resolved
        
      12ee469    to
    73fe131      
    Compare
  
    ) * Return null when the type is nullable for Cosmos Max/Min/Average Fixes #35094 This was a regression resulting from the major Cosmos query refactoring that happened in EF9. In EF8, the functions Min, Max, and Average would return null if the return type was nullable or was cast to a nullable when the collection is empty. In EF9, this started throwing, which is correct for non-nullable types, but a regression for nullable types. * Added notes
…n/Average (#35216) * Return null when the type is nullable for Cosmos Max/Min/Average (#35173) * Return null when the type is nullable for Cosmos Max/Min/Average Fixes #35094 This was a regression resulting from the major Cosmos query refactoring that happened in EF9. In EF8, the functions Min, Max, and Average would return null if the return type was nullable or was cast to a nullable when the collection is empty. In EF9, this started throwing, which is correct for non-nullable types, but a regression for nullable types. * Added notes * Added quirks * Fix tests.
Fixes #35094
This was a regression resulting from the major Cosmos query refactoring that happened in EF9. In EF8, the functions Min, Max, and Average would return null if the return type was nullable or was cast to a nullable when the collection is empty. In EF9, this started throwing, which is correct for non-nullable types, but a regression for nullable types.