From: <dav...@us...> - 2008-12-08 10:53:19
|
Revision: 3944 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3944&view=rev Author: davybrion Date: 2008-12-08 10:53:17 +0000 (Mon, 08 Dec 2008) Log Message: ----------- fix for NH-1593 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2008-12-03 20:06:17 UTC (rev 3943) +++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2008-12-08 10:53:17 UTC (rev 3944) @@ -1962,6 +1962,14 @@ } } } + + foreach (var index in table.IndexIterator) + { + if (tableInfo == null || tableInfo.GetIndexMetadata(index.Name) == null) + { + script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + } + } } } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/Fixture.cs 2008-12-08 10:53:17 UTC (rev 3944) @@ -0,0 +1,51 @@ +using System.Collections; +using System.Data.Common; +using System.Data.SqlClient; +using System.Reflection; + +using NHibernate.Cfg; +using NHibernate.Dialect; +using NHibernate.Tool.hbm2ddl; + +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1593 +{ + [TestFixture] + public class Fixture + { + [Test] + public void SchemaUpdateAddsIndexesThatWerentPresentYet() + { + Configuration cfg = new Configuration(); + Assembly assembly = Assembly.GetExecutingAssembly(); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH1593.TestIndex.hbm.xml", assembly); + cfg.Configure(); + + // TODO: rewrite this so we don't need to open a session just to get a reference to a DbConnection (because that's the only reason the Session is used) + var sessionFactory = cfg.BuildSessionFactory(); + using (ISession session = sessionFactory.OpenSession()) + { + MsSql2005Dialect dialect = new MsSql2005Dialect(); + + DatabaseMetadata databaseMetaData = new DatabaseMetadata((DbConnection)session.Connection, dialect); + string[] script = cfg.GenerateSchemaUpdateScript(dialect, databaseMetaData); + + Assert.That(ScriptContainsIndexCreationLine(script)); + } + } + + private bool ScriptContainsIndexCreationLine(string[] script) + { + foreach (string s in script) + { + if (s.Equals("create index test_index_name on TestIndex (Name)")) + { + return true; + } + } + + return false; + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.cs 2008-12-08 10:53:17 UTC (rev 3944) @@ -0,0 +1,20 @@ +namespace NHibernate.Test.NHSpecificTest.NH1593 +{ + public class TestIndex + { + private int id; + private string name; + + public int Id + { + get { return id; } + set { id = value; } + } + + public string Name + { + get { return name; } + set { name = value; } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1593/TestIndex.hbm.xml 2008-12-08 10:53:17 UTC (rev 3944) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="NHibernate.Test.NHSpecificTest.NH1593" assembly="NHibernate.Test"> + <class name="TestIndex" lazy="false"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Name" index="test_index_name"/> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-03 20:06:17 UTC (rev 3943) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-08 10:53:17 UTC (rev 3944) @@ -532,6 +532,8 @@ <Compile Include="NHSpecificTest\NH1579\Orange.cs" /> <Compile Include="NHSpecificTest\NH1587\A.cs" /> <Compile Include="NHSpecificTest\NH1587\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1593\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1593\TestIndex.cs" /> <Compile Include="NHSpecificTest\NH1594\A.cs" /> <Compile Include="NHSpecificTest\NH1594\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> @@ -1554,6 +1556,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1593\TestIndex.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1594\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1579\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH298\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |