Unexpected composed query behavior
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia riproducendo gli esempi di query composte usando DataContext, espressioni tra virgolette e il join mostrato nell’issue. Confronta i valori generati o restituiti per la query con join con quelli delle varianti senza join e con restituzione di tuple; il lavoro è completato quando la query composta con join restituisce gli stessi valori di ParameterId e ParameterName della query diretta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When using composed queries an unexpected behavior occurs when a join is involved in a query. This results in a select with wrong values. See code examples below.
To Reproduce
let ctx = DataContext.getDataContextWithLog()
// === normal query with expected result
query {
for p in ctx.Dbo.Parameters do
join c in ctx.Dbo.ParametersCategories on
(p.CategoryId = c.CategoryId)
select p
}
|> Seq.toList
|> List.take 3
|> List.map (fun p -> p.ParameterId, p.ParameterName)
// Result:
// val it : (int16 * string) list =
// [(3743s, "Allerg (T1) IgE-totaal"); (3744s, "Allerg (T1) Tryptase");
// (3745s, "Allerg (T1) Huisstofmijt")]
// === composed query with unexpected result
let get (ctx : DataContext.sql.dataContext) =
<@ fun _ ->
query {
for p in ctx.Dbo.Parameters do
join c in ctx.Dbo.ParametersCategories on
(p.CategoryId = c.CategoryId)
select (p)
} @>
query {
for (p) in ((%get ctx) ()) do
select (p.ParameterId, p.ParameterName)
}
|> Seq.toList
|> List.take 3
// Result:
// val get :
// ctx:FSharp.Data.Sql.SqlDataProvider<...>.dataContext ->
// Quotations.Expr<('a ->
// Linq.IQueryable<FSharp.Data.Sql.SqlDataProvider<...>.dataContext.dbo.ParametersEntity>)>
// val it : (int16 * string) list = [(0s, ""); (0s, ""); (0s, "")]
// == composed query without join with expected result
let get (ctx : DataContext.sql.dataContext) =
<@ fun _ ->
query {
for p in ctx.Dbo.Parameters do
// join c in ctx.Dbo.ParametersCategories on
// (p.CategoryId = c.CategoryId)
select (p)
} @>
query {
for (p) in ((%get ctx) ()) do
select (p.ParameterId, p.ParameterName)
}
|> Seq.toList
|> List.take 3
// Result:
// val get :
// ctx:FSharp.Data.Sql.SqlDataProvider<...>.dataContext ->
// Quotations.Expr<('a ->
// Linq.IQueryable<FSharp.Data.Sql.SqlDataProvider<...>.dataContext.dbo.ParametersEntity>)>
// val it : (int16 * string) list =
// [(3743s, "Allerg (T1) IgE-totaal"); (3744s, "Allerg (T1) Tryptase");
// (3745s, "Allerg (T1) Huisstofmijt")]
// == composed query with a tuple return with a 'dummy' unit value returns expected result!?
let get (ctx : DataContext.sql.dataContext) =
<@ fun _ ->
query {
for p in ctx.Dbo.Parameters do
join c in ctx.Dbo.ParametersCategories on
(p.CategoryId = c.CategoryId)
select (p, ())
} @>
query {
for (p, _) in ((%get ctx) ()) do
select (p.ParameterId, p.ParameterName)
}
|> Seq.toList
|> List.take 3
// Result:
// val it : (int16 * string) list =
// [(3743s, "Allerg (T1) IgE-totaal"); (3744s, "Allerg (T1) Tryptase");
// (3745s, "Allerg (T1) Huisstofmijt")]
Expected behavior
Clearly the second query result is inconsistent with the other queries.
Desktop (please complete the following information):
.NET SDK (reflecting any global.json):
Version: 5.0.202
Commit: db7cc87d51
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17763
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\5.0.202\
Host (useful for support):
Version: 5.0.5
Commit: 2f740adc14
.NET SDKs installed:
5.0.200-preview.21077.7 [C:\Program Files\dotnet\sdk]
5.0.201 [C:\Program Files\dotnet\sdk]
5.0.202 [C:\Program Files\dotnet\sdk]
- Lingua principale
- F#
- Stelle
- 627
- Fork
- 147
- Merge medio
- 2h 2m
- PR unite (30g)
- 1
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fsprojects/SQLProvider
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
fsprojects/SQLProvider#872 · 2 commenti ·
-
Repo Assist? Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
fsprojects/SQLProvider#870 · 1 commento ·
-
postgresql
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
fsprojects/SQLProvider#869 · 2 commenti ·
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 42/100
fsprojects/SQLProvider#868 · 2 commenti ·
-
sql server
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
fsprojects/SQLProvider#851 · 1 commento ·
Tutte le issue di fsprojects/SQLProvider
Issue simili
-
[6.x]: "Cannot use object of type stdClass as array" loading Users index (regression of #19182) Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
community-scripts/ProxmoxVE#17396 · 1 commento ·
-
bug possible-duplicate
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
AOSSIE-Org/PictoPy#1553 · 4 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
BasedHardware/omi#15274 · 3 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100