-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
New Query Pipeline #14455
New Query Pipeline #14455
Conversation
c030039
to
b416870
Compare
19bf245
to
dcdeadf
Compare
932d624
to
1efef34
Compare
#14971 cross-linking so I can see over there easily when this PR is merged. |
4067e2e
to
cabd484
Compare
1dba152
to
9aeb6b3
Compare
This is ready for review. |
src/EFCore.Relational/Query/PipeLine/SqlExpressions/TableExpression.cs
Outdated
Show resolved
Hide resolved
var isLeftNull = sqlBinary.Left is SqlConstantExpression leftConstant && leftConstant.Value == null; | ||
var isRightNull = sqlBinary.Right is SqlConstantExpression rightConstant && rightConstant.Value == null; | ||
|
||
if (isLeftNull || isRightNull) |
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.
this wont for for case where both values are null - those would be optimized at some point, so I guess its fine to leave this as is
Visit( | ||
hasNullValue | ||
? (Expression)new SqlUnaryExpression( | ||
ExpressionType.Equal, inExpression.Item, inExpression.Type, inExpression.TypeMapping) |
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.
creative re-use of existing assets ;)
src/EFCore.Relational/Query/PipeLine/RelationalQueryableMethodTranslatingExpressionVisitor.cs
Show resolved
Hide resolved
src/EFCore.Relational/Query/PipeLine/RelationalQueryableMethodTranslatingExpressionVisitor.cs
Outdated
Show resolved
Hide resolved
src/EFCore.Relational/Query/PipeLine/RelationalQueryableMethodTranslatingExpressionVisitor.cs
Show resolved
Hide resolved
Addressed feedback and disabled all failing tests. Build should be passing. |
What works: Non-collection queries Sync/Async InMemory/Sqlite/SqlServer Method/Member translators Spatial What does not work: Cosmos provider - Tests are skipped in normal run so will fix later Collection queries - Includes/Correlated Subquery is not implemented yet Subquery lifting - Was dependent on nav rewrite A lot of small optimizations in expression tree/generated Sql Null semantics TPH Broader list at #14630 Notes: Old files are not deleted yet. (keeping them for reference for now) Still target NS2.0 Class names/namespaces are not final. Doc comments missing
|
using System.Linq.Expressions; | ||
using Microsoft.EntityFrameworkCore.Internal; | ||
|
||
namespace Microsoft.EntityFrameworkCore.Query.Pipeline |
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.
Why the folder is PipeLine
and not Pipeline
? 😭
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.
Rename went bad. I will correct it to please unicorns.
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.
Yes this was a major issue hurting my eyes as well.
What works:
Non-collection queries
Sync/Async
InMemory/Sqlite/SqlServer
Method/Member translators
Spatial
What does not work:
Cosmos provider - Tests are skipped in normal run so will fix later
Collection queries - Includes/Correlated Subquery is not implemented yet
Subquery lifting - Was dependent on nav rewrite
A lot of small optimizations in expression tree/generated Sql
Null semantics
TPH
Broader list at #14630
Notes:
Old files are not deleted yet. (keeping them for reference for now)
Still target NS2.0
Class names/namespaces are not final.
Doc comments missing