|
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.
|