From: <fab...@us...> - 2008-11-10 13:31:03
|
Revision: 3904 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3904&view=rev Author: fabiomaulo Date: 2008-11-10 13:31:01 +0000 (Mon, 10 Nov 2008) Log Message: ----------- Revert patch NH-1155 because are breaking all dialect with SupportsVariableLimit=true. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Engine/SubselectFetch.cs trunk/nhibernate/src/NHibernate/Loader/Loader.cs trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs trunk/nhibernate/src/NHibernate.Test/SubselectFetchTest/SubselectFetchFixture.cs Modified: trunk/nhibernate/src/NHibernate/Engine/SubselectFetch.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/SubselectFetch.cs 2008-11-08 21:31:30 UTC (rev 3903) +++ trunk/nhibernate/src/NHibernate/Engine/SubselectFetch.cs 2008-11-10 13:31:01 UTC (rev 3904) @@ -8,23 +8,21 @@ { public class SubselectFetch { - private readonly ISet<EntityKey> resultingEntityKeys; - private readonly SqlString queryString; private readonly string alias; - private readonly Dialect.Dialect dialect; private readonly ILoadable loadable; - private readonly QueryParameters queryParameters; private readonly IDictionary<string, int[]> namedParameterLocMap; + private readonly QueryParameters queryParameters; + private readonly SqlString queryString; + private readonly ISet<EntityKey> resultingEntityKeys; - public SubselectFetch(string alias, Dialect.Dialect dialect, ILoadable loadable, QueryParameters queryParameters, - ISet<EntityKey> resultingEntityKeys, IDictionary<string, int[]> namedParameterLocMap) + public SubselectFetch(string alias, ILoadable loadable, QueryParameters queryParameters, + ISet<EntityKey> resultingEntityKeys, IDictionary<string, int[]> namedParameterLocMap) { this.resultingEntityKeys = resultingEntityKeys; this.queryParameters = queryParameters; this.namedParameterLocMap = namedParameterLocMap; this.loadable = loadable; this.alias = alias; - this.dialect = dialect; queryString = queryParameters.FilteredSQL.GetSubselectString(); } @@ -39,6 +37,11 @@ get { return resultingEntityKeys; } } + public IDictionary<string, int[]> NamedParameterLocMap + { + get { return namedParameterLocMap; } + } + public SqlString ToSubselectString(string ukname) { string[] joinColumns = ukname == null @@ -47,39 +50,12 @@ SqlString sqlString = new SqlStringBuilder().Add("select ").Add(StringHelper.Join(", ", joinColumns)).Add(queryString).ToSqlString(); - - RowSelection selection = queryParameters.RowSelection; - - bool useLimit = Loader.Loader.UseLimit(selection, dialect); - bool hasFirstRow = Loader.Loader.GetFirstRow(selection) > 0; - bool useOffset = hasFirstRow && useLimit && dialect.SupportsLimitOffset; - - if ((useLimit || hasFirstRow) == false) - { - return sqlString; - } - - sqlString = AppendOrderByIfNeeded(sqlString); - - return - dialect.GetLimitString(sqlString.Trim(), useOffset ? Loader.Loader.GetFirstRow(selection) : 0, - Loader.Loader.GetMaxOrLimit(dialect, selection)); + return sqlString; } - private SqlString AppendOrderByIfNeeded(SqlString sqlString) - { - SqlString orderByOrEmpty = queryParameters.FilteredSQL.SubstringStartingWithLast("order by"); - return sqlString.Append(orderByOrEmpty); - } - public override string ToString() { return "SubselectFetch(" + queryString + ')'; } - - public IDictionary<string, int[]> NamedParameterLocMap - { - get { return namedParameterLocMap; } - } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Loader/Loader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2008-11-08 21:31:30 UTC (rev 3903) +++ trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2008-11-10 13:31:01 UTC (rev 3904) @@ -516,7 +516,7 @@ if (rowKeys[i] != null && loadables[i].HasSubselectLoadableCollections) { SubselectFetch subselectFetch = - new SubselectFetch(aliases[i], factory.Dialect, loadables[i], queryParameters, keySets[i], namedParameterLocMap); + new SubselectFetch(aliases[i], loadables[i], queryParameters, keySets[i], namedParameterLocMap); session.PersistenceContext.BatchFetchQueue.AddSubselect(rowKeys[i], subselectFetch); } Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2008-11-08 21:31:30 UTC (rev 3903) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2008-11-10 13:31:01 UTC (rev 3904) @@ -431,7 +431,7 @@ s.Close(); } - [Test] + [Test, Ignore("Not supported.")] public void NH_1155_ShouldNotLoadAllChildrenInPagedSubSelect() { if (this.Dialect.GetType().Equals((typeof(MsSql2000Dialect)))) Modified: trunk/nhibernate/src/NHibernate.Test/SubselectFetchTest/SubselectFetchFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/SubselectFetchTest/SubselectFetchFixture.cs 2008-11-08 21:31:30 UTC (rev 3903) +++ trunk/nhibernate/src/NHibernate.Test/SubselectFetchTest/SubselectFetchFixture.cs 2008-11-10 13:31:01 UTC (rev 3904) @@ -248,7 +248,7 @@ Assert.AreEqual(3, sessions.Statistics.PrepareStatementCount); r = (Parent) s.Get(typeof(Parent), r.Name); - Assert.IsFalse(NHibernateUtil.IsInitialized(r.Children)); + Assert.IsTrue(NHibernateUtil.IsInitialized(r.Children)); // The test for True is the test of H3.2 Assert.IsFalse(NHibernateUtil.IsInitialized(r.MoreChildren)); Assert.AreEqual(r.Children.Count, 1); Assert.AreEqual(r.MoreChildren.Count, 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |