Unexpected composed query behavior
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par reproduire les exemples de requêtes composées à l’aide de DataContext, d’expressions entre guillemets et du join montré dans l’issue. Comparez les valeurs générées ou renvoyées pour la requête avec join avec celles des variantes sans join et renvoyant un tuple ; c’est terminé lorsque la requête composée avec join renvoie les mêmes valeurs de ParameterId et ParameterName que la requête directe.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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]
- Langage dominant
- F#
- Étoiles
- 627
- Forks
- 147
- Merge moyen
- 2 h 2 min
- PR mergées (30 j)
- 1
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de fsprojects/SQLProvider
-
enhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
fsprojects/SQLProvider#872 · 2 commentaires ·
-
Repo Assist? Ouverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 10/100
fsprojects/SQLProvider#870 · 1 commentaire ·
-
postgresql
Difficulté 4/5 3-5 jours Accessibilité débutants 58/100
fsprojects/SQLProvider#869 · 2 commentaires ·
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 42/100
fsprojects/SQLProvider#868 · 2 commentaires ·
-
sql server
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
fsprojects/SQLProvider#851 · 1 commentaire ·
Toutes les issues de fsprojects/SQLProvider
Issues similaires
-
[InvoiceShelf] No database info Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
community-scripts/ProxmoxVE#17396 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
BasedHardware/omi#15274 · 3 commentaires ·
-
bug: AI Gateway client filter lists "Unknown" twice when NULL and literal Unknown clients coexist Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
-
[BUG] A column whose default is the empty string is drawn in the ER diagram as having no default Ouvertebug database-provider good first issue hacktoberfest
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
libredb/libredb-studio#1030 · 6 commentaires ·