Unexpected composed query behavior
まだ誰も着手していません。
評価
調査の方向性
まず、DataContext、引用符で囲まれた式、および issue に示されている join を使用して、合成クエリの例を再現します。join を含むクエリで生成または返される値を、join なしのバリエーションおよびタプルを返すバリエーションと比較します。完了条件は、join を含む合成クエリが直接クエリと同じ ParameterId および ParameterName の値を返すことです。
索引モデルが issue の本文から書いたものです。
説明
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]
- 主要言語
- F#
- スター
- 627
- フォーク
- 147
- 平均マージ
- 2時間 2分
- マージ済み PR(30日)
- 1
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
fsprojects/SQLProvider のほかの issue
-
enhancement
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
fsprojects/SQLProvider#872 · コメント 2 件 ·
-
Repo Assist? オープンenhancement
難易度 5/5 1週間以上 初心者へのやさしさ 10/100
fsprojects/SQLProvider#870 · コメント 1 件 ·
-
postgresql
難易度 4/5 3〜5日 初心者へのやさしさ 58/100
fsprojects/SQLProvider#869 · コメント 2 件 ·
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 42/100
fsprojects/SQLProvider#868 · コメント 2 件 ·
-
sql server
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
fsprojects/SQLProvider#851 · コメント 1 件 ·
fsprojects/SQLProvider の issue をすべて見る
似ている issue
-
[6.x]: "Cannot use object of type stdClass as array" loading Users index (regression of #19182) オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
community-scripts/ProxmoxVE#17396 · コメント 1 件 ·
-
bug possible-duplicate
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
AOSSIE-Org/PictoPy#1553 · コメント 4 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
BasedHardware/omi#15274 · コメント 3 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100