From: <fab...@us...> - 2011-03-25 17:42:22
|
Revision: 5529 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5529&view=rev Author: fabiomaulo Date: 2011-03-25 17:42:16 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Applied (modified) fix of NH-2490 (thanks to Matthew Gabeler-Lee) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/Join.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/Join.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/Join.cs 2011-03-25 12:01:05 UTC (rev 5528) +++ trunk/nhibernate/src/NHibernate/Mapping/Join.cs 2011-03-25 17:42:16 UTC (rev 5529) @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; +using System.Linq; using NHibernate.Engine; using NHibernate.SqlCommand; -using NHibernate.Util; namespace NHibernate.Mapping { @@ -90,7 +90,7 @@ pk.Name = PK_ALIAS.ToAliasString(table.Name, dialect); table.PrimaryKey = pk; - pk.AddColumns(new SafetyEnumerable<Column>(Key.ColumnIterator)); + pk.AddColumns(Key.ColumnIterator.OfType<Column>()); } public int PropertySpan @@ -149,13 +149,8 @@ { if (!isLazy.HasValue) { - IEnumerator<Property> iter = PropertyIterator.GetEnumerator(); - while (iter.MoveNext() && !isLazy.HasValue) - { - if (!iter.Current.IsLazy) - isLazy = false; - } - isLazy = true; + var hasAllLazyProperties = !PropertyIterator.Any(property=> property.IsLazy == false); + isLazy = hasAllLazyProperties; } return isLazy.Value; } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs 2011-03-25 17:42:16 UTC (rev 5529) @@ -0,0 +1,50 @@ +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2490 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void BadSqlFromJoinLogicError() + { + try + { + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + Derived item1 = new Derived() + { + ShortContent = "Short", + ShortContent2 = "Short2", + LongContent = "LongLongLongLongLong", + LongContent2 = "LongLongLongLongLong2", + }; + s.Save(item1); + t.Commit(); + } + + // this is the real meat of the test + // for most edifying results, run this with show_sql enabled + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var q = s.CreateQuery("from Base"); + q.Executing(query => query.List()).NotThrows(); + } + } + finally + { + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Delete("from Derived"); + t.Commit(); + } + } + } + + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml 2011-03-25 17:42:16 UTC (rev 5529) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2490" + assembly="NHibernate.Test" +> + <class name="Base" abstract="true"> + <id name="Id"> + <generator class="increment"/> + </id> + <discriminator column="Discriminator" type="String" /> + <property name="ShortContent" not-null="true"/> + <property name="LongContent" lazy="true" not-null="true"/> + </class> + <subclass name="Derived" extends="Base" discriminator-value="Derived"> + <join table="Derived" fetch="join"> + <key column="Id" /> + <property name="ShortContent2" not-null="true"/> + <property name="LongContent2" lazy="true" not-null="true" /> + </join> + </subclass> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs 2011-03-25 17:42:16 UTC (rev 5529) @@ -0,0 +1,39 @@ + +namespace NHibernate.Test.NHSpecificTest.NH2490 +{ + public class Base + { + public virtual int Id + { + get; + set; + } + + public virtual string ShortContent + { + get; + set; + } + + public virtual string LongContent + { + get; + set; + } + } + + public class Derived : Base + { + public virtual string ShortContent2 + { + get; + set; + } + + public virtual string LongContent2 + { + get; + set; + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-25 12:01:05 UTC (rev 5528) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-25 17:42:16 UTC (rev 5529) @@ -654,6 +654,8 @@ <Compile Include="NHSpecificTest\NH2470\DTO.cs" /> <Compile Include="NHSpecificTest\NH2484\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2484\Model.cs" /> + <Compile Include="NHSpecificTest\NH2490\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2490\Model.cs" /> <Compile Include="NHSpecificTest\NH2491\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2507\Animal.cs" /> <Compile Include="NHSpecificTest\NH2507\Fixture.cs" /> @@ -2490,6 +2492,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2490\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1925\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2527\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1323\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |