|
From: <ric...@us...> - 2010-08-14 22:03:13
|
Revision: 5156
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5156&view=rev
Author: ricbrown
Date: 2010-08-14 22:03:06 +0000 (Sat, 14 Aug 2010)
Log Message:
-----------
Fix NH-2255 (MsSql2005Dialect resets parameters' positions(for paging parameters) when lock in use)
Thanks for patch supplied by Nikita Govorov.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs
trunk/nhibernate/src/NHibernate.Test/Pagination/PaginationFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-08-14 21:04:51 UTC (rev 5155)
+++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-08-14 22:03:06 UTC (rev 5156)
@@ -426,7 +426,7 @@
{
if (part == Parameter.Placeholder)
{
- result.AddParameter();
+ result.Add((Parameter)part);
continue;
}
Modified: trunk/nhibernate/src/NHibernate.Test/Pagination/PaginationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Pagination/PaginationFixture.cs 2010-08-14 21:04:51 UTC (rev 5155)
+++ trunk/nhibernate/src/NHibernate.Test/Pagination/PaginationFixture.cs 2010-08-14 22:03:06 UTC (rev 5156)
@@ -72,5 +72,43 @@
t.Commit();
}
}
+
+ [Test]
+ public void PagingWithLock_NH2255()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Save(new DataPoint() { X = 4 });
+ s.Save(new DataPoint() { X = 5 });
+ s.Save(new DataPoint() { X = 6 });
+ s.Save(new DataPoint() { X = 7 });
+ s.Save(new DataPoint() { X = 8 });
+ t.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ {
+ var points =
+ s.CreateCriteria<DataPoint>()
+ .Add(Restrictions.Gt("X", 4.1d))
+ .AddOrder(Order.Asc("X"))
+ .SetLockMode(LockMode.Upgrade)
+ .SetFirstResult(1)
+ .SetMaxResults(2)
+ .List<DataPoint>();
+
+ Assert.That(points.Count, Is.EqualTo(2));
+ Assert.That(points[0].X, Is.EqualTo(6d));
+ Assert.That(points[1].X, Is.EqualTo(7d));
+ }
+
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from DataPoint").ExecuteUpdate();
+ t.Commit();
+ }
+ }
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|