-
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
Cosmos FromSql #25525
Cosmos FromSql #25525
Conversation
71854bf
to
4343601
Compare
4343601
to
6720d00
Compare
test/EFCore.Cosmos.FunctionalTests/Query/FromSqlQueryCosmosTest.cs
Outdated
Show resolved
Hide resolved
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.
Joins/SelectMany to generate a query with FromSqlRaw inside lambda is not possible perhaps write a test for EF.CompiledQuery which generates same. If parameterExtractingEV says constant values in the tree, we inline the values and don't send server parameters.
Relevant test is FromSqlRaw_queryable_composed_compiled_with_parameter |
} | ||
|
||
default: | ||
throw new ArgumentOutOfRangeException(); |
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.
InvalidOperationException with the argument tree printed
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.
Was trying to avoid a new string
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.
Just print out the expression tree. No need of exception message or resources.
We should create an issue for adding support for parameters. While they doesn't offer new functionality they are more convenient than manually seriliazing values to json, especially with #17306 |
Closes #17311
ff3b06c
to
5c4b341
Compare
Hello @roji! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
@AndriySvyryd can you open that issue? I'm not sure exactly what you have in mind... |
Perhaps it just works, added a note to #17306 |
Apologies, while this PR appears ready to be merged, I've been configured to only merge when all checks have explicitly passed. The following integrations have not reported any progress on their checks and are blocking auto-merge:
These integrations are possibly never going to report a check, and unblocking auto-merge likely requires a human being to update my configuration to exempt these integrations from requiring a passing check. Give feedback on thisFrom the bot dev teamWe've tried to tune the bot such that it posts a comment like this only when auto-merge is blocked for exceptional, non-intuitive reasons. When the bot's auto-merge capability is properly configured, auto-merge should operate as you would intuitively expect and you should not see any spurious comments. Please reach out to us at [email protected] to provide feedback if you believe you're seeing this comment appear spuriously. Please note that we usually are unable to update your bot configuration on your team's behalf, but we're happy to help you identify your bot admin. |
Notes:
SELECT c FROM root c
for entity projection, which adds an additional level of nesting (with c as key), compared toSELECT *
(see Cosmos: Stop nesting results in an extra JSON object #25527); this means we don't know how to materialize results fromSELECT *
, or projections such asSELECT c.Region, c.PostalCode
(even when all the entity's properties are properly projected). Always wrapping in a subquery allows us to produce the correct nested structure; we should probably plan for producingSELECT *
at some point.Subqueries in Cosmos
Docs say only correlated subqueries are supported (https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-subquery). However, this seems to (implicitly) refer to subqueries within JOIN:
SELECT Count(1) FROM c JOIN (SELECT VALUE t FROM t IN c.Tags)
SELECT Count(1) FROM c JOIN (SELECT * FROM root)
Composition over subquery in FROM:
SELECT * FROM (SELECT * FROM root c WHERE c.Discriminator = 'Customer') c WHERE c.City = 'Berlin'
SELECT * FROM (SELECT * FROM root c WHERE c.Discriminator = 'Customer') c ORDER BY c.PostalCode
SELECT * FROM (SELECT * FROM root c WHERE c.Discriminator = 'Customer') c OFFSET 1 LIMIT 3
Closes #17311
Thanks to @RaymondHuy for previous work in #25457