Skip to content

Commit 9822e6d

Browse files
committed
Fix decimal equality comparison for Sqlite
1 parent 96a9af7 commit 9822e6d

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/NHibernate.Test/Async/Linq/OperatorTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ public async Task UnaryMinusAsync()
3535
Assert.AreEqual(1, await (session.Query<TimesheetEntry>().CountAsync(a => -a.NumberOfHours == -7)));
3636
}
3737

38+
[Test]
39+
public async Task DecimalAddAsync()
40+
{
41+
decimal offset = 5.5m;
42+
decimal test = 10248 + offset;
43+
var result = await (session.Query<Order>().Where(e => offset + e.OrderId == test).ToListAsync());
44+
Assert.That(result, Has.Count.EqualTo(1));
45+
46+
offset = 5.5m;
47+
test = 32.38m + offset;
48+
result = await (session.Query<Order>().Where(e => offset + e.Freight == test).ToListAsync());
49+
Assert.That(result, Has.Count.EqualTo(1));
50+
}
51+
3852
[Test]
3953
public async Task UnaryPlusAsync()
4054
{

src/NHibernate.Test/Linq/OperatorTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,20 @@ public void UnaryMinus()
2424
Assert.AreEqual(1, session.Query<TimesheetEntry>().Count(a => -a.NumberOfHours == -7));
2525
}
2626

27+
[Test]
28+
public void DecimalAdd()
29+
{
30+
decimal offset = 5.5m;
31+
decimal test = 10248 + offset;
32+
var result = session.Query<Order>().Where(e => offset + e.OrderId == test).ToList();
33+
Assert.That(result, Has.Count.EqualTo(1));
34+
35+
offset = 5.5m;
36+
test = 32.38m + offset;
37+
result = session.Query<Order>().Where(e => offset + e.Freight == test).ToList();
38+
Assert.That(result, Has.Count.EqualTo(1));
39+
}
40+
2741
[Test]
2842
public void UnaryPlus()
2943
{

src/NHibernate/Linq/Visitors/HqlGeneratorExpressionVisitor.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,8 +579,11 @@ protected HqlTreeNode VisitConstantExpression(ConstantExpression expression)
579579
if (_parameters.ConstantToParameterMap.TryGetValue(expression, out namedParameter))
580580
{
581581
_parameters.RequiredHqlParameters.Add(new NamedParameterDescriptor(namedParameter.Name, null, false));
582+
var parameter = _hqlTreeBuilder.Parameter(namedParameter.Name).AsExpression();
582583

583-
return _hqlTreeBuilder.Parameter(namedParameter.Name).AsExpression();
584+
return HqlIdent.SupportsType(expression.Type)
585+
? _hqlTreeBuilder.TransparentCast(parameter, expression.Type)
586+
: parameter;
584587
}
585588

586589
return _hqlTreeBuilder.Constant(expression.Value);

0 commit comments

Comments
 (0)