|
From: <aye...@us...> - 2009-01-23 07:13:20
|
Revision: 3999
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3999&view=rev
Author: ayenderahien
Date: 2009-01-23 07:13:16 +0000 (Fri, 23 Jan 2009)
Log Message:
-----------
applying patch from Ken Tong - NH 1645
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs
trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs
trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs
trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs
Modified: trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998)
+++ trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999)
@@ -128,7 +128,7 @@
public abstract IDbConnection Connection { get; }
public abstract int ExecuteNativeUpdate(NativeSQLQuerySpecification specification, QueryParameters queryParameters);
public abstract int ExecuteUpdate(string query, QueryParameters queryParameters);
- public abstract FutureCriteriaBatch FutureCriteriaBatch { get; }
+ public abstract FutureCriteriaBatch FutureCriteriaBatch { get; internal set; }
public virtual IQuery GetNamedQuery(string queryName)
{
Modified: trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs 2009-01-19 13:40:38 UTC (rev 3998)
+++ trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs 2009-01-23 07:13:16 UTC (rev 3999)
@@ -27,6 +27,7 @@
multiCriteria.Add(crit);
}
results = multiCriteria.List();
+ ((SessionImpl)session).FutureCriteriaBatch = null;
}
return results;
}
@@ -85,4 +86,4 @@
#endregion
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998)
+++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999)
@@ -258,6 +258,10 @@
futureCriteriaBatch = new FutureCriteriaBatch(this);
return futureCriteriaBatch;
}
+ internal set
+ {
+ futureCriteriaBatch = value;
+ }
}
/// <summary></summary>
Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998)
+++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999)
@@ -816,6 +816,7 @@
public override FutureCriteriaBatch FutureCriteriaBatch
{
get { throw new System.NotSupportedException("future queries are not supported for stateless session"); }
+ internal set { throw new System.NotSupportedException("future queries are not supported for stateless session"); }
}
public override IEntityPersister GetEntityPersister(string entityName, object obj)
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs 2009-01-19 13:40:38 UTC (rev 3998)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs 2009-01-23 07:13:16 UTC (rev 3999)
@@ -54,5 +54,36 @@
}
}
}
+
+ [Test]
+ public void TwoFuturesRunInTwoRoundTrips()
+ {
+ using (var s = sessions.OpenSession())
+ {
+ if (((SessionFactoryImpl)sessions)
+ .ConnectionProvider.Driver.SupportsMultipleQueries == false)
+ {
+ Assert.Ignore("Not applicable for dialects that do not support multiple queries");
+ }
+
+ using (var logSpy = new SqlLogSpy())
+ {
+ var persons10 = s.CreateCriteria(typeof(Person))
+ .SetMaxResults(10)
+ .Future<Person>();
+
+ foreach (var person in persons10) { } // fire first future round-trip
+
+ var persons5 = s.CreateCriteria(typeof(Person))
+ .SetMaxResults(5)
+ .Future<int>();
+
+ foreach (var person in persons5) { } // fire second future round-trip
+
+ var events = logSpy.Appender.GetEvents();
+ Assert.AreEqual(2, events.Length);
+ }
+ }
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|