Skip to content

Commit 50f0f54

Browse files
committed
118: Fix natural joins where only the first of multiple joins were processed properly.
1 parent a8d75a8 commit 50f0f54

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

Simple.Data.Ado/Joiner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ private static IEnumerable<ObjectReference> GetReferencesFromExpression(SimpleEx
149149
if (expression.Type == SimpleExpressionType.And || expression.Type == SimpleExpressionType.Or)
150150
{
151151
return GetReferencesFromExpression((SimpleExpression)expression.LeftOperand)
152-
.Concat(GetReferencesFromExpression((SimpleExpression)expression.LeftOperand));
152+
.Concat(GetReferencesFromExpression((SimpleExpression)expression.RightOperand));
153153
}
154154

155155
return Enumerable.Empty<ObjectReference>()

Simple.Data.SqlTest/NaturalJoinTest.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,34 @@ public void CustomerDotOrdersDotOrderItemsDotItemDotNameShouldReturnOneRow()
3131
Assert.AreEqual(1, order.OrderId);
3232
}
3333
}
34+
35+
[Test]
36+
public void CustomerDotNameAndCustomerDotOrdersDotOrderItemsDotItemDotNameShouldReturnOneRow()
37+
{
38+
var db = DatabaseHelper.Open();
39+
var customer = db.Customers.Find(db.Customers.Name == "Test" &&
40+
db.Customers.Orders.OrderItems.Item.Name == "Widget");
41+
Assert.IsNotNull(customer);
42+
Assert.AreEqual("Test", customer.Name);
43+
foreach (var order in customer.Orders)
44+
{
45+
Assert.AreEqual(1, order.OrderId);
46+
}
47+
}
48+
49+
[Test]
50+
public void CustomerDotNameAndCustomerDotOrdersDotOrderDateAndCustomerDotOrdersDotOrderItemsDotItemDotNameShouldReturnOneRow()
51+
{
52+
var db = DatabaseHelper.Open();
53+
var customer = db.Customers.Find(db.Customers.Name == "Test" &&
54+
db.Customers.Orders.OrderDate == new DateTime(2010, 10, 10) &&
55+
db.Customers.Orders.OrderItems.Item.Name == "Widget");
56+
Assert.IsNotNull(customer);
57+
Assert.AreEqual("Test", customer.Name);
58+
foreach (var order in customer.Orders)
59+
{
60+
Assert.AreEqual(1, order.OrderId);
61+
}
62+
}
3463
}
3564
}

0 commit comments

Comments
 (0)