-
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
Query: Pay your (technical) debt on time #18923
Open
46 of 64 tasks
Labels
area-groupby
area-query
composite-issue
A grouping of multiple related issues into one issue
ef6-parity
punted-for-5.0
type-enhancement
Milestone
Comments
smitpatel
added a commit
that referenced
this issue
Feb 12, 2020
Introduces QueryableMethodNormalizingExpressionVisitor which - Extract query metadata methods - Convert from enumerable to queryable - Convert List.Contains to queryable Contains - Flatten GroupJoin-SelectMany Nav expansion now calls this method on query filter/ defining query Resolves #19708 Part of #18923
smitpatel
added a commit
that referenced
this issue
Feb 12, 2020
Introduces QueryableMethodNormalizingExpressionVisitor which - Extract query metadata methods - Convert from enumerable to queryable - Convert List.Contains to queryable Contains - Flatten GroupJoin-SelectMany Nav expansion now calls this method on query filter/ defining query Resolves #19708 Part of #18923
smitpatel
added a commit
that referenced
this issue
Feb 27, 2020
This change introduces derived types of EntityQueryable<T> to be processed as query root in core pipeline. Currently FromSql and Queryable functions generate a method call in query pipeline which would be mapped to a query root. This means that any visitor which need to detect query root, they have to have special code to handle this. With this change, any provider bringing custom query roots can inject custom query root for relevant subtree in the query and it would be processed transparently through the stack. Only during translation, once the custom query root needs to be intercepted to generate correct SQL. Converted FromSql in this PR. Will submit another PR to convert queryable functions. Custom query roots can be generated during query construction itself (before it reaches EF), such query root requires - Overriden Equals/GetHashCode methods so we differentiate them during query caching. - Optional ToString method for debugging print out. - Conversion to such custom roots in QueryFilter if needed. - Components of custom root cannot be parameterized in ParameterExtractingExpressionVisitor Part of #18923
smitpatel
added a commit
that referenced
this issue
Feb 27, 2020
This change introduces derived types of EntityQueryable<T> to be processed as query root in core pipeline. Currently FromSql and Queryable functions generate a method call in query pipeline which would be mapped to a query root. This means that any visitor which need to detect query root, they have to have special code to handle this. With this change, any provider bringing custom query roots can inject custom query root for relevant subtree in the query and it would be processed transparently through the stack. Only during translation, once the custom query root needs to be intercepted to generate correct SQL. Converted FromSql in this PR. Will submit another PR to convert queryable functions. Custom query roots can be generated during query construction itself (before it reaches EF), such query root requires - Overriden Equals/GetHashCode methods so we differentiate them during query caching. - Optional ToString method for debugging print out. - Conversion to such custom roots in QueryFilter if needed. - Components of custom root cannot be parameterized in ParameterExtractingExpressionVisitor Part of #18923
smitpatel
added a commit
that referenced
this issue
Feb 27, 2020
This change introduces derived types of EntityQueryable<T> to be processed as query root in core pipeline. Currently FromSql and Queryable functions generate a method call in query pipeline which would be mapped to a query root. This means that any visitor which need to detect query root, they have to have special code to handle this. With this change, any provider bringing custom query roots can inject custom query root for relevant subtree in the query and it would be processed transparently through the stack. Only during translation, once the custom query root needs to be intercepted to generate correct SQL. Converted FromSql in this PR. Will submit another PR to convert queryable functions. Custom query roots can be generated during query construction itself (before it reaches EF), such query root requires - Overriden Equals/GetHashCode methods so we differentiate them during query caching. - Optional ToString method for debugging print out. - Conversion to such custom roots in QueryFilter if needed. - Components of custom root cannot be parameterized in ParameterExtractingExpressionVisitor Part of #18923
smitpatel
added a commit
that referenced
this issue
Feb 27, 2020
This change introduces derived types of EntityQueryable<T> to be processed as query root in core pipeline. Currently FromSql and Queryable functions generate a method call in query pipeline which would be mapped to a query root. This means that any visitor which need to detect query root, they have to have special code to handle this. With this change, any provider bringing custom query roots can inject custom query root for relevant subtree in the query and it would be processed transparently through the stack. Only during translation, once the custom query root needs to be intercepted to generate correct SQL. Converted FromSql in this PR. Will submit another PR to convert queryable functions. Custom query roots can be generated during query construction itself (before it reaches EF), such query root requires - Overriden Equals/GetHashCode methods so we differentiate them during query caching. - Optional ToString method for debugging print out. - Conversion to such custom roots in QueryFilter if needed. - Components of custom root cannot be parameterized in ParameterExtractingExpressionVisitor Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
…minatorCondition If DiscriminatorCondition returns null for IEntityType then return null instance. Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
…minatorCondition If DiscriminatorCondition returns null for IEntityType then return null instance. Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
…minatorCondition If DiscriminatorCondition returns null for IEntityType then return null instance. Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
…minatorCondition If DiscriminatorCondition returns null for IEntityType then return null instance. Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 18, 2020
…minatorCondition If DiscriminatorCondition returns null for IEntityType then return null instance. Part of #18923
smitpatel
added a commit
that referenced
this issue
Mar 31, 2020
Resolves #15080 Implemented behavior: - If any part of composite key is null then key is null. - If comparing entity with null then check if "any" key value is null. - If comparing entity with non-null then check if "all" key values are non null. Resolves #20344 Resolves #19431 Resolves #13568 Resolves #13655 Since we already convert property access to nullable, if entity from client is null, make key value as null. Resolves #19676 Clr type mismatch between proxy type and entity type is ignored. Resolves #20164 Rewrites entity equality during translation Part of #18923
Consider refactoring in cosmos similar to #21181 |
#21700 causes slight regression and spike in memory usage just to compute hash code. Which leads into another rabbit hole that projection is mainly comprised of column expressions coming from tables and when computing their hash code we may go inside another select expression.
|
This was referenced Jul 21, 2020
Merged
ajcvickers
added
the
composite-issue
A grouping of multiple related issues into one issue
label
Dec 6, 2022
8 tasks
23 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area-groupby
area-query
composite-issue
A grouping of multiple related issues into one issue
ef6-parity
punted-for-5.0
type-enhancement
This is a grouping of related issues. Feel free to vote (👍) for this issue to indicate that this is an area that you think we should spend time on, but consider also voting for individual issues for things you consider especially important.
Creating a general tracking issue for tasks which were deferred in new query pipeline due to time constraint and also as an iteration over the design as we see customer reports we are getting.
This is a meta issue. It will evolve and add more stuff as we discuss things in team meetings (like the one we did about null semantics & command caching). I would prefer this to be assigned to me as the sticky we decided in the planning process. And we will split out smaller tasks out of this and assign to actual implementer. If you are working on something already, please add tracking issue here next to the item.
Parameter extraction
Preprocessor
Translation
Postprocessor
ShaperCompiler
SqlProcessor
Command execution
Whole pipeline
The text was updated successfully, but these errors were encountered: