Skip to content

Commit 4ac39cd

Browse files
committed
Fixed implicit joining of references from Functions
1 parent a6b3e63 commit 4ac39cd

8 files changed

Lines changed: 51 additions & 19 deletions

File tree

CommonAssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
// COM, set the ComVisible attribute to true on that type.
2020
[assembly: ComVisible(false)]
2121

22-
[assembly: AssemblyVersion("0.9.8.1")]
23-
[assembly: AssemblyFileVersion("0.9.8.1")]
22+
[assembly: AssemblyVersion("0.9.8.2")]
23+
[assembly: AssemblyFileVersion("0.9.8.2")]
2424

Simple.Data.Ado/QueryBuilder.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private void HandleJoins()
9696
var fromHavingCriteria = joiner.GetJoinClauses(_tableName, _havingCriteria);
9797

9898
var fromColumnList = _columns.Any(r => !(r is SpecialReference))
99-
? joiner.GetJoinClauses(_tableName, _columns.OfType<ObjectReference>(), JoinType.Outer)
99+
? joiner.GetJoinClauses(_tableName, GetObjectReferences(_columns), JoinType.Outer)
100100
: Enumerable.Empty<string>();
101101

102102
var joins = string.Join(" ", fromTable.Concat(fromJoins)
@@ -111,6 +111,20 @@ private void HandleJoins()
111111
}
112112
}
113113

114+
private IEnumerable<ObjectReference> GetObjectReferences(IEnumerable<SimpleReference> source)
115+
{
116+
var list = source.ToList();
117+
foreach (var objectReference in list.OfType<ObjectReference>())
118+
{
119+
yield return objectReference;
120+
}
121+
122+
foreach (var objectReference in list.OfType<FunctionReference>().Select(fr => fr.Argument).OfType<ObjectReference>())
123+
{
124+
yield return objectReference;
125+
}
126+
}
127+
114128
private string RemoveSchemaFromQueryTableName()
115129
{
116130
return _query.TableName.StartsWith(_table.Schema + '.')

Simple.Data.Ado/Simple.Data.Ado.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
33
<metadata>
44
<id>Simple.Data.Ado</id>
5-
<version>0.9.7.2</version>
5+
<version>0.9.8.2</version>
66
<authors>Mark Rendle</authors>
77
<owners>Mark Rendle</owners>
88
<description>ADO Adapter for the Simple.Data data access library.</description>
@@ -12,7 +12,7 @@
1212
<tags>sqlserver database data ado .net40</tags>
1313
<language>en-us</language>
1414
<dependencies>
15-
<dependency id="Simple.Data.Core" version="0.9.7.2" />
15+
<dependency id="Simple.Data.Core" version="0.9.8.2" />
1616
</dependencies>
1717
</metadata>
1818
</package>

Simple.Data.BehaviourTest/Query/QueryTest.cs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,25 @@ public class QueryTest : DatabaseIntegrationContext
1313
protected override void SetSchema(MockSchemaProvider schemaProvider)
1414
{
1515
schemaProvider.SetTables(new[] {"dbo", "Users", "BASE TABLE"},
16-
new[] {"dbo", "UserBio", "BASE TABLE"},
17-
new[] {"dbo", "Employee", "BASE TABLE"});
16+
new[] {"dbo", "UserBio", "BASE TABLE"},
17+
new[] { "dbo", "UserPayment", "BASE TABLE" },
18+
new[] { "dbo", "Employee", "BASE TABLE" });
1819

1920
schemaProvider.SetColumns(new object[] {"dbo", "Users", "Id", true},
2021
new[] {"dbo", "Users", "Name"},
2122
new[] {"dbo", "Users", "Password"},
2223
new[] {"dbo", "Users", "Age"},
2324
new[] {"dbo", "UserBio", "UserId"},
24-
new[] {"dbo", "UserBio", "Text"},
25-
new[] {"dbo", "Employee", "Id"},
25+
new[] {"dbo", "UserBio", "Text"},
26+
new[] { "dbo", "UserPayment", "UserId" },
27+
new[] { "dbo", "UserPayment", "Amount" },
28+
new[] { "dbo", "Employee", "Id" },
2629
new[] {"dbo", "Employee", "Name"},
2730
new[] {"dbo", "Employee", "ManagerId"});
2831

2932
schemaProvider.SetPrimaryKeys(new object[] { "dbo", "Users", "Id", 0 });
30-
schemaProvider.SetForeignKeys(new object[] { "FK_Users_UserBio", "dbo", "UserBio", "UserId", "dbo", "Users", "Id", 0 });
33+
schemaProvider.SetForeignKeys(new object[] { "FK_Users_UserBio", "dbo", "UserBio", "UserId", "dbo", "Users", "Id", 0 },
34+
new object[] { "FK_Users_UserPayment", "dbo", "UserPayment", "UserId", "dbo", "Users", "Id", 0 });
3135
}
3236

3337
[Test]
@@ -57,8 +61,22 @@ public void SpecifyingColumnsFromOtherTablesShouldAddJoin()
5761
GeneratedSqlIs(
5862
"select [dbo].[users].[name],[dbo].[users].[password],[dbo].[userbio].[text] from [dbo].[users]" +
5963
" left join [dbo].[userbio] on ([dbo].[users].[id] = [dbo].[userbio].[userid])");
60-
}
61-
64+
}
65+
66+
[Test]
67+
public void SpecifyingColumnsAndAggregatesFromOtherTablesShouldAddJoins()
68+
{
69+
_db.Users.All()
70+
.Select(_db.Users.Name, _db.Users.Password, _db.Users.UserBio.Text, _db.Users.UserPayments.Amount.Sum())
71+
.ToList();
72+
GeneratedSqlIs(
73+
"select [dbo].[users].[name],[dbo].[users].[password],[dbo].[userbio].[text],sum([dbo].[userpayment].[amount]) from [dbo].[users]" +
74+
" left join [dbo].[userbio] on ([dbo].[users].[id] = [dbo].[userbio].[userid])" +
75+
" left join [dbo].[userpayment] on ([dbo].[users].[id] = [dbo].[userpayment].[userid])" +
76+
" group by [dbo].[users].[name],[dbo].[users].[password],[dbo].[userbio].[text]"
77+
);
78+
}
79+
6280
[Test]
6381
public void SpecifyingCountShouldSelectCount()
6482
{

Simple.Data.Mocking/Simple.Data.Mocking.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
33
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
44
<id>Simple.Data.Mocking</id>
5-
<version>0.9.7.2</version>
5+
<version>0.9.8.2</version>
66
<authors>Mark Rendle</authors>
77
<owners>Mark Rendle</owners>
88
<description>XML-based Mocking adapter for the Simple.Data data access library.</description>
@@ -12,7 +12,7 @@
1212
<tags>database data .net40</tags>
1313
<language>en-us</language>
1414
<dependencies>
15-
<dependency id="Simple.Data.Ado" version="0.9.7.2" />
15+
<dependency id="Simple.Data.Ado" version="0.9.8.2" />
1616
</dependencies>
1717
</metadata>
1818
</package>

Simple.Data.SqlCe40/Simple.Data.SqlCe40.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
33
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
44
<id>Simple.Data.SqlCompact40</id>
5-
<version>0.9.7.2</version>
5+
<version>0.9.8.2</version>
66
<authors>Mark Rendle</authors>
77
<owners>Mark Rendle</owners>
88
<description>SQL Server Compact 4.0 ADO provider for the Simple.Data data access library.</description>
@@ -12,7 +12,7 @@
1212
<tags>sqlserver compact sqlce database data ado .net40</tags>
1313
<language>en-us</language>
1414
<dependencies>
15-
<dependency id="Simple.Data.Ado" version="0.9.7.2" />
15+
<dependency id="Simple.Data.Ado" version="0.9.8.2" />
1616
</dependencies>
1717
</metadata>
1818
</package>

Simple.Data.SqlServer/Simple.Data.SqlServer.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
33
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
44
<id>Simple.Data.SqlServer</id>
5-
<version>0.9.7.2</version>
5+
<version>0.9.8.2</version>
66
<authors>Mark Rendle</authors>
77
<owners>Mark Rendle</owners>
88
<description>SQL Server ADO provider for the Simple.Data data access library.</description>
@@ -12,7 +12,7 @@
1212
<tags>sqlserver database data ado .net40</tags>
1313
<language>en-us</language>
1414
<dependencies>
15-
<dependency id="Simple.Data.Ado" version="0.9.7.2" />
15+
<dependency id="Simple.Data.Ado" version="0.9.8.2" />
1616
</dependencies>
1717
</metadata>
1818
</package>

Simple.Data/Simple.Data.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
33
<metadata>
44
<id>Simple.Data.Core</id>
5-
<version>0.9.7.2</version>
5+
<version>0.9.8.2</version>
66
<authors>Mark Rendle</authors>
77
<owners>Mark Rendle</owners>
88
<licenseUrl>http://www.opensource.org/licenses/mit-license.php</licenseUrl>

0 commit comments

Comments
 (0)