You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(248) |
May
(82) |
Jun
(90) |
Jul
(177) |
Aug
(253) |
Sep
(157) |
Oct
(151) |
Nov
(143) |
Dec
(278) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(152) |
Feb
(107) |
Mar
(177) |
Apr
(133) |
May
(259) |
Jun
(81) |
Jul
(119) |
Aug
(306) |
Sep
(416) |
Oct
(240) |
Nov
(329) |
Dec
(206) |
2006 |
Jan
(466) |
Feb
(382) |
Mar
(153) |
Apr
(162) |
May
(133) |
Jun
(21) |
Jul
(18) |
Aug
(37) |
Sep
(97) |
Oct
(114) |
Nov
(110) |
Dec
(28) |
2007 |
Jan
(74) |
Feb
(65) |
Mar
(49) |
Apr
(76) |
May
(43) |
Jun
(15) |
Jul
(68) |
Aug
(55) |
Sep
(63) |
Oct
(59) |
Nov
(70) |
Dec
(66) |
2008 |
Jan
(71) |
Feb
(60) |
Mar
(120) |
Apr
(31) |
May
(48) |
Jun
(81) |
Jul
(107) |
Aug
(51) |
Sep
(80) |
Oct
(83) |
Nov
(83) |
Dec
(79) |
2009 |
Jan
(83) |
Feb
(110) |
Mar
(97) |
Apr
(91) |
May
(291) |
Jun
(250) |
Jul
(197) |
Aug
(58) |
Sep
(54) |
Oct
(122) |
Nov
(68) |
Dec
(34) |
2010 |
Jan
(50) |
Feb
(17) |
Mar
(63) |
Apr
(61) |
May
(84) |
Jun
(81) |
Jul
(138) |
Aug
(144) |
Sep
(78) |
Oct
(26) |
Nov
(30) |
Dec
(61) |
2011 |
Jan
(33) |
Feb
(35) |
Mar
(166) |
Apr
(221) |
May
(109) |
Jun
(76) |
Jul
(27) |
Aug
(37) |
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <fab...@us...> - 2009-10-16 20:19:05
|
Revision: 4766 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4766&view=rev Author: fabiomaulo Date: 2009-10-16 20:18:56 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Fix NH-1255 (re-fix after reopen) Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/nhibernate-mapping.xsd branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Domain.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Mappings.hbm.xml Modified: branches/2.1.x/nhibernate/src/NHibernate/nhibernate-mapping.xsd =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2009-10-16 19:05:59 UTC (rev 4765) +++ branches/2.1.x/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2009-10-16 20:18:56 UTC (rev 4766) @@ -743,6 +743,7 @@ <xs:attribute name="foreign-key" type="xs:string" /> <xs:attribute name="lazy" type="restrictedLaziness"> </xs:attribute> + <xs:attribute name="not-found" default="exception" type="notFoundMode"/> </xs:complexType> </xs:element> <xs:element name="key-property"> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Domain.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Domain.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Domain.cs 2009-10-16 20:18:56 UTC (rev 4766) @@ -0,0 +1,65 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1255 +{ + public class Customer + { + public int Id { get; set; } + public string Name { get; set; } + } + + public class CustomerValue + { + public CustomerValueId Id { get; set; } + public decimal Value { get; set; } + } + + public class CustomerValueId : IEquatable<CustomerValueId> + { + private int? requestedHashCode; + public Customer Customer { get; set; } + public int CustomKey { get; set; } + + public bool Equals(CustomerValueId other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.Customer, Customer) && other.CustomKey == CustomKey; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + if (obj.GetType() != typeof (CustomerValueId)) + { + return false; + } + return Equals((CustomerValueId) obj); + } + + public override int GetHashCode() + { + if (!requestedHashCode.HasValue) + { + unchecked + { + requestedHashCode = ((Customer != null ? Customer.GetHashCode() : base.GetHashCode()) * 397) ^ CustomKey; + } + } + return requestedHashCode.Value; + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Fixture.cs 2009-10-16 20:18:56 UTC (rev 4766) @@ -0,0 +1,19 @@ +using NHibernate.Cfg; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1255 +{ + [TestFixture] + public class Fixture + { + [Test] + public void CanLoadMappingWithNotNullIgnore() + { + var cfg = new Configuration(); + if (TestConfigurationHelper.hibernateConfigFile != null) + cfg.Configure(TestConfigurationHelper.hibernateConfigFile); + Assert.DoesNotThrow( + () => cfg.AddResource("NHibernate.Test.NHSpecificTest.NH1255.Mappings.hbm.xml", typeof (Customer).Assembly)); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1255/Mappings.hbm.xml 2009-10-16 20:18:56 UTC (rev 4766) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1255" + default-lazy="false"> + + <class name="Customer"> + <id name="Id"> + <generator class="native" /> + </id> + <property name="Name" /> + </class> + + <class name="CustomerValue" > + <composite-id name="Id" class="CustomerValueId"> + <key-many-to-one class="Customer" name="Customer" not-found="ignore" /> + <key-property name="CustomKey" /> + </composite-id> + <property name="Value" /> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-16 19:05:59 UTC (rev 4765) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-16 20:18:56 UTC (rev 4766) @@ -368,6 +368,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\NH1025\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1025\Model.cs" /> + <Compile Include="NHSpecificTest\NH1255\Domain.cs" /> + <Compile Include="NHSpecificTest\NH1255\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1895\DomainClasses.cs" /> <Compile Include="NHSpecificTest\NH1895\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1905\Fixture.cs" /> @@ -2007,6 +2009,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1255\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1895\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1025\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-16 19:06:06
|
Revision: 4765 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4765&view=rev Author: fabiomaulo Date: 2009-10-16 19:05:59 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Merge r4764 (fix NH-1943 references) Modified Paths: -------------- trunk/nhibernate/doc/reference/modules/configuration.xml trunk/nhibernate/doc/reference/modules/quickstart.xml Modified: trunk/nhibernate/doc/reference/modules/configuration.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/configuration.xml 2009-10-16 19:04:31 UTC (rev 4764) +++ trunk/nhibernate/doc/reference/modules/configuration.xml 2009-10-16 19:05:59 UTC (rev 4765) @@ -458,12 +458,10 @@ <entry> Specifies the bytecode provider to use to optimize the use of reflection in NHibernate. Use <literal>null</literal> to disable the optimization completely, <literal>lcg</literal> - to use lightweight code generation (supported on .NET 2.0 only), and <literal> - codedom</literal> to use CodeDOM-based code generation (supported on .NET 1.1, has problems - with generic types on .NET 2.0). + to use lightweight code generation. <para> <emphasis role="strong">eg.</emphasis> - <literal>null</literal> | <literal>lcg</literal> | <literal>codedom</literal> + <literal>null</literal> | <literal>lcg</literal> </para> </entry> </row> Modified: trunk/nhibernate/doc/reference/modules/quickstart.xml =================================================================== --- trunk/nhibernate/doc/reference/modules/quickstart.xml 2009-10-16 19:04:31 UTC (rev 4764) +++ trunk/nhibernate/doc/reference/modules/quickstart.xml 2009-10-16 19:05:59 UTC (rev 4765) @@ -5,7 +5,7 @@ <title>Getting started with NHibernate</title> <para> - This tutorial explains a setup of NHibernate 1.0.2 within a Microsoft + This tutorial explains a setup of NHibernate 2.1.0 within a Microsoft environment. The tools used in this tutorial are: </para> @@ -15,13 +15,13 @@ ASP.NET. </listitem> <listitem> - Microsoft SQL Server 2000 - the database server. This tutorial uses - the desktop edition (MSDE), a free download from Microsoft. Support + Microsoft SQL Server 2005 - the database server. This tutorial uses + the desktop edition (SQL-EXPRESS), a free download from Microsoft. Support for other databases is only a matter of changing the NHibernate SQL dialect and driver configuration. </listitem> <listitem> - Microsoft Visual Studio .NET 2003 - the development environment. + Microsoft Visual Studio .NET (at leats 2005) - the development environment. </listitem> </orderedlist> @@ -40,7 +40,8 @@ configuration elements according to the listing below: </para> - <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8" ?> + <programlisting> + <![CDATA[<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- Add this element --> <configSections> @@ -53,10 +54,11 @@ <!-- Add this element --> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> - <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property> + <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> - <property name="connection.connection_string">Server=(local);initial catalog=quickstart;Integrated Security=SSPI</property> - + <property name="connection.connection_string">Server=localhost\SQLEXPRESS;initial catalog=quickstart;Integrated Security=True</property> + <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> + <mapping assembly="QuickStart" /> </session-factory> </hibernate-configuration> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-16 19:04:40
|
Revision: 4764 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4764&view=rev Author: fabiomaulo Date: 2009-10-16 19:04:31 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Fix NH-1943 (references) Modified Paths: -------------- branches/2.1.x/nhibernate/doc/reference/modules/configuration.xml branches/2.1.x/nhibernate/doc/reference/modules/quickstart.xml Modified: branches/2.1.x/nhibernate/doc/reference/modules/configuration.xml =================================================================== --- branches/2.1.x/nhibernate/doc/reference/modules/configuration.xml 2009-10-16 18:02:20 UTC (rev 4763) +++ branches/2.1.x/nhibernate/doc/reference/modules/configuration.xml 2009-10-16 19:04:31 UTC (rev 4764) @@ -458,12 +458,10 @@ <entry> Specifies the bytecode provider to use to optimize the use of reflection in NHibernate. Use <literal>null</literal> to disable the optimization completely, <literal>lcg</literal> - to use lightweight code generation (supported on .NET 2.0 only), and <literal> - codedom</literal> to use CodeDOM-based code generation (supported on .NET 1.1, has problems - with generic types on .NET 2.0). + to use lightweight code generation. <para> <emphasis role="strong">eg.</emphasis> - <literal>null</literal> | <literal>lcg</literal> | <literal>codedom</literal> + <literal>null</literal> | <literal>lcg</literal> </para> </entry> </row> Modified: branches/2.1.x/nhibernate/doc/reference/modules/quickstart.xml =================================================================== --- branches/2.1.x/nhibernate/doc/reference/modules/quickstart.xml 2009-10-16 18:02:20 UTC (rev 4763) +++ branches/2.1.x/nhibernate/doc/reference/modules/quickstart.xml 2009-10-16 19:04:31 UTC (rev 4764) @@ -5,7 +5,7 @@ <title>Getting started with NHibernate</title> <para> - This tutorial explains a setup of NHibernate 1.0.2 within a Microsoft + This tutorial explains a setup of NHibernate 2.1.0 within a Microsoft environment. The tools used in this tutorial are: </para> @@ -15,13 +15,13 @@ ASP.NET. </listitem> <listitem> - Microsoft SQL Server 2000 - the database server. This tutorial uses - the desktop edition (MSDE), a free download from Microsoft. Support + Microsoft SQL Server 2005 - the database server. This tutorial uses + the desktop edition (SQL-EXPRESS), a free download from Microsoft. Support for other databases is only a matter of changing the NHibernate SQL dialect and driver configuration. </listitem> <listitem> - Microsoft Visual Studio .NET 2003 - the development environment. + Microsoft Visual Studio .NET (at leats 2005) - the development environment. </listitem> </orderedlist> @@ -40,7 +40,8 @@ configuration elements according to the listing below: </para> - <programlisting><![CDATA[<?xml version="1.0" encoding="utf-8" ?> + <programlisting> + <![CDATA[<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- Add this element --> <configSections> @@ -53,10 +54,11 @@ <!-- Add this element --> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> - <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property> + <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> - <property name="connection.connection_string">Server=(local);initial catalog=quickstart;Integrated Security=SSPI</property> - + <property name="connection.connection_string">Server=localhost\SQLEXPRESS;initial catalog=quickstart;Integrated Security=True</property> + <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> + <mapping assembly="QuickStart" /> </session-factory> </hibernate-configuration> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-16 18:02:34
|
Revision: 4763 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4763&view=rev Author: fabiomaulo Date: 2009-10-16 18:02:20 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Merge r4762 (fix NH-1993) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs 2009-10-16 17:58:44 UTC (rev 4762) +++ trunk/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs 2009-10-16 18:02:20 UTC (rev 4763) @@ -1,7 +1,6 @@ using System; using System.Data; using System.Data.Common; -using Iesi.Collections.Generic; namespace NHibernate.Dialect.Schema { @@ -20,17 +19,6 @@ { get { return "Foreign Keys"; } } - - public override ISet<string> GetReservedWords() - { - var result = new HashedSet<string>(); - DataTable dtReservedWords = Connection.GetSchema(DbMetaDataCollectionNames.ReservedWords); - foreach (DataRow row in dtReservedWords.Rows) - { - result.Add(row["Reserved Word"].ToString()); - } - return result; - } } public class MySQLTableMetadata : AbstractTableMetadata This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-16 17:58:50
|
Revision: 4762 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4762&view=rev Author: fabiomaulo Date: 2009-10-16 17:58:44 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Fix NH-1993 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs 2009-10-16 17:09:03 UTC (rev 4761) +++ branches/2.1.x/nhibernate/src/NHibernate/Dialect/Schema/MySQLMetaData.cs 2009-10-16 17:58:44 UTC (rev 4762) @@ -1,7 +1,6 @@ using System; using System.Data; using System.Data.Common; -using Iesi.Collections.Generic; namespace NHibernate.Dialect.Schema { @@ -20,17 +19,6 @@ { get { return "Foreign Keys"; } } - - public override ISet<string> GetReservedWords() - { - var result = new HashedSet<string>(); - DataTable dtReservedWords = Connection.GetSchema(DbMetaDataCollectionNames.ReservedWords); - foreach (DataRow row in dtReservedWords.Rows) - { - result.Add(row["Reserved Word"].ToString()); - } - return result; - } } public class MySQLTableMetadata : AbstractTableMetadata This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-16 17:09:14
|
Revision: 4761 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4761&view=rev Author: fabiomaulo Date: 2009-10-16 17:09:03 +0000 (Fri, 16 Oct 2009) Log Message: ----------- Merge r4760 (fix NH-1987) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs Modified: trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2009-10-15 23:52:32 UTC (rev 4760) +++ trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2009-10-16 17:09:03 UTC (rev 4761) @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; +using System.Diagnostics; using Iesi.Collections; using Iesi.Collections.Generic; using log4net; @@ -189,6 +190,14 @@ private void GetResultsFromDatabase(IList results) { + bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled; + var stopWatch = new Stopwatch(); + if (statsEnabled) + { + stopWatch.Start(); + } + int rowCount = 0; + using ( IDbCommand command = session.Batcher.PrepareCommand(CommandType.Text, sqlString, types.ToArray())) @@ -228,6 +237,8 @@ int count; for (count = 0; count < maxRows && reader.Read(); count++) { + rowCount++; + object o = loader.GetRowFromResultSet(reader, session, queryParameters, loader.GetLockModes(queryParameters.LockModes), null, hydratedObjects[i], keys, false); @@ -262,6 +273,11 @@ } } } + if (statsEnabled) + { + stopWatch.Stop(); + session.Factory.StatisticsImplementor.QueryExecuted(string.Format("{0} queries (MultiCriteria)", loaders.Count), rowCount, stopWatch.Elapsed); + } } private void CreateCriteriaLoaders() Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2009-10-15 23:52:32 UTC (rev 4760) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2009-10-16 17:09:03 UTC (rev 4761) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Data; +using System.Diagnostics; using System.Text.RegularExpressions; using Iesi.Collections; using log4net; @@ -474,6 +475,14 @@ protected ArrayList DoList() { + bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled; + var stopWatch = new Stopwatch(); + if (statsEnabled) + { + stopWatch.Start(); + } + int rowCount = 0; + IDbCommand command = PrepareQueriesCommand(); BindParameters(command); @@ -535,6 +544,8 @@ log.Debug("result set row: " + count); } + rowCount++; + object result = translator.Loader.GetRowFromResultSet(reader, session, @@ -590,6 +601,11 @@ translator.Loader.CreateSubselects(subselectResultKeys[i], parameter, session); } } + if (statsEnabled) + { + stopWatch.Stop(); + session.Factory.StatisticsImplementor.QueryExecuted(string.Format("{0} queries (MultiQuery)", translators.Count), rowCount, stopWatch.Elapsed); + } return results; } Modified: trunk/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs 2009-10-15 23:52:32 UTC (rev 4760) +++ trunk/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs 2009-10-16 17:09:03 UTC (rev 4761) @@ -1,5 +1,6 @@ using System.Collections; using Iesi.Collections.Generic; +using NHibernate.Criterion; using NHibernate.Stat; using NUnit.Framework; @@ -209,5 +210,53 @@ tx.Commit(); s.Close(); } + + [Test] + public void IncrementQueryExecutionCount_WhenExplicitQueryIsExecuted() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + FillDb(s); + tx.Commit(); + } + + IStatistics stats = sessions.Statistics; + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateCriteria<Country>().List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateQuery("from Country").List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateMultiQuery().Add("from Country").Add("from Continent").List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateMultiCriteria().Add(DetachedCriteria.For<Country>()).Add(DetachedCriteria.For<Continent>()).List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + CleanDb(s); + tx.Commit(); + } + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 23:52:46
|
Revision: 4760 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4760&view=rev Author: fabiomaulo Date: 2009-10-15 23:52:32 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Fix NH-1987 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs branches/2.1.x/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2009-10-15 18:21:31 UTC (rev 4759) +++ branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2009-10-15 23:52:32 UTC (rev 4760) @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Data; +using System.Diagnostics; using Iesi.Collections; using Iesi.Collections.Generic; using log4net; @@ -189,6 +190,14 @@ private void GetResultsFromDatabase(IList results) { + bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled; + var stopWatch = new Stopwatch(); + if (statsEnabled) + { + stopWatch.Start(); + } + int rowCount = 0; + using ( IDbCommand command = session.Batcher.PrepareCommand(CommandType.Text, sqlString, types.ToArray())) @@ -228,6 +237,8 @@ int count; for (count = 0; count < maxRows && reader.Read(); count++) { + rowCount++; + object o = loader.GetRowFromResultSet(reader, session, queryParameters, loader.GetLockModes(queryParameters.LockModes), null, hydratedObjects[i], keys, false); @@ -262,6 +273,11 @@ } } } + if (statsEnabled) + { + stopWatch.Stop(); + session.Factory.StatisticsImplementor.QueryExecuted(string.Format("{0} queries (MultiCriteria)", loaders.Count), rowCount, stopWatch.Elapsed); + } } private void CreateCriteriaLoaders() Modified: branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2009-10-15 18:21:31 UTC (rev 4759) +++ branches/2.1.x/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2009-10-15 23:52:32 UTC (rev 4760) @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Data; +using System.Diagnostics; using System.Text.RegularExpressions; using Iesi.Collections; using log4net; @@ -474,6 +475,14 @@ protected ArrayList DoList() { + bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled; + var stopWatch = new Stopwatch(); + if (statsEnabled) + { + stopWatch.Start(); + } + int rowCount = 0; + IDbCommand command = PrepareQueriesCommand(); BindParameters(command); @@ -535,6 +544,8 @@ log.Debug("result set row: " + count); } + rowCount++; + object result = translator.Loader.GetRowFromResultSet(reader, session, @@ -590,6 +601,11 @@ translator.Loader.CreateSubselects(subselectResultKeys[i], parameter, session); } } + if (statsEnabled) + { + stopWatch.Stop(); + session.Factory.StatisticsImplementor.QueryExecuted(string.Format("{0} queries (MultiQuery)", translators.Count), rowCount, stopWatch.Elapsed); + } return results; } Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs 2009-10-15 18:21:31 UTC (rev 4759) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/Stats/StatsFixture.cs 2009-10-15 23:52:32 UTC (rev 4760) @@ -1,5 +1,6 @@ using System.Collections; using Iesi.Collections.Generic; +using NHibernate.Criterion; using NHibernate.Stat; using NUnit.Framework; @@ -209,5 +210,53 @@ tx.Commit(); s.Close(); } + + [Test] + public void IncrementQueryExecutionCount_WhenExplicitQueryIsExecuted() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + FillDb(s); + tx.Commit(); + } + + IStatistics stats = sessions.Statistics; + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateCriteria<Country>().List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateQuery("from Country").List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateMultiQuery().Add("from Country").Add("from Continent").List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + stats.Clear(); + using (ISession s = OpenSession()) + { + var r = s.CreateMultiCriteria().Add(DetachedCriteria.For<Country>()).Add(DetachedCriteria.For<Continent>()).List(); + } + Assert.AreEqual(1, stats.QueryExecutionCount); + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + CleanDb(s); + tx.Commit(); + } + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 18:21:43
|
Revision: 4759 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4759&view=rev Author: fabiomaulo Date: 2009-10-15 18:21:31 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Merge r4758 (fix NH-1979) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-10-15 18:19:47 UTC (rev 4758) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-10-15 18:21:31 UTC (rev 4759) @@ -397,7 +397,14 @@ public void Parameter() { - args.Add(new SqlString(SqlCommand.Parameter.Placeholder)); + if (argInd == args.Count) + { + args.Add(new SqlString(SqlCommand.Parameter.Placeholder)); + } + else + { + args[argInd] = args[argInd].Append(new SqlString(SqlCommand.Parameter.Placeholder)); + } } public void CommaBetweenParameters(string comma) Modified: trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-10-15 18:19:47 UTC (rev 4758) +++ trunk/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-10-15 18:21:31 UTC (rev 4759) @@ -736,6 +736,23 @@ } } + [Test] + public void CastNH1979() + { + IgnoreIfNotSupported("cast"); + using (ISession s = OpenSession()) + { + Animal a1 = new Animal("abcdef", 1.3f); + s.Save(a1); + s.Flush(); + } + using (ISession s = OpenSession()) + { + string hql = "select cast(((a.BodyWeight + 50) / :divisor) as int) from Animal a"; + IList l = s.CreateQuery(hql).SetInt32("divisor", 2).List(); + Assert.AreEqual(1, l.Count); + } + } [Test] public void Current_TimeStamp() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 18:19:55
|
Revision: 4758 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4758&view=rev Author: fabiomaulo Date: 2009-10-15 18:19:47 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Fix NH-1979 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs branches/2.1.x/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-10-15 15:56:44 UTC (rev 4757) +++ branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-10-15 18:19:47 UTC (rev 4758) @@ -397,7 +397,14 @@ public void Parameter() { - args.Add(new SqlString(SqlCommand.Parameter.Placeholder)); + if (argInd == args.Count) + { + args.Add(new SqlString(SqlCommand.Parameter.Placeholder)); + } + else + { + args[argInd] = args[argInd].Append(new SqlString(SqlCommand.Parameter.Placeholder)); + } } public void CommaBetweenParameters(string comma) Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-10-15 15:56:44 UTC (rev 4757) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/HQL/HQLFunctions.cs 2009-10-15 18:19:47 UTC (rev 4758) @@ -736,6 +736,23 @@ } } + [Test] + public void CastNH1979() + { + IgnoreIfNotSupported("cast"); + using (ISession s = OpenSession()) + { + Animal a1 = new Animal("abcdef", 1.3f); + s.Save(a1); + s.Flush(); + } + using (ISession s = OpenSession()) + { + string hql = "select cast(((a.BodyWeight + 50) / :divisor) as int) from Animal a"; + IList l = s.CreateQuery(hql).SetInt32("divisor", 2).List(); + Assert.AreEqual(1, l.Count); + } + } [Test] public void Current_TimeStamp() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 15:56:50
|
Revision: 4757 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4757&view=rev Author: fabiomaulo Date: 2009-10-15 15:56:44 +0000 (Thu, 15 Oct 2009) Log Message: ----------- BackPort from r4756 (fix NH-1963) Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Engine/TypedValue.cs branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/TypedValue.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/TypedValue.cs 2009-10-15 15:55:27 UTC (rev 4756) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/TypedValue.cs 2009-10-15 15:56:44 UTC (rev 4757) @@ -22,7 +22,7 @@ this.type = type; this.value = value; ICollection values = value as ICollection; - if (!type.IsCollectionType && values != null) + if (!type.IsCollectionType && values != null && !type.ReturnedClass.IsArray) comparer = new ParameterListComparer(entityMode); else comparer = new DefaultComparer(entityMode); @@ -38,6 +38,11 @@ get { return type; } } + public IEqualityComparer<TypedValue> Comparer + { + get { return comparer; } + } + public override int GetHashCode() { return comparer.GetHashCode(this); @@ -54,7 +59,7 @@ } [Serializable] - private class ParameterListComparer : IEqualityComparer<TypedValue> + public class ParameterListComparer : IEqualityComparer<TypedValue> { private readonly EntityMode entityMode; @@ -118,7 +123,7 @@ } [Serializable] - private class DefaultComparer : IEqualityComparer<TypedValue> + public class DefaultComparer : IEqualityComparer<TypedValue> { private readonly EntityMode entityMode; Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs 2009-10-15 15:55:27 UTC (rev 4756) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs 2009-10-15 15:56:44 UTC (rev 4757) @@ -27,5 +27,16 @@ { Assert.AreEqual("null", new TypedValue(NHibernateUtil.Int32, null, EntityMode.Poco).ToString()); } + + [Test] + public void WhenTheTypeIsAnArray_ChoseTheDefaultComparer() + { + byte[] value = new byte[]{1,2,3}; + + + var tv = new TypedValue(NHibernateUtil.BinaryBlob, value, EntityMode.Poco); + + Assert.That(tv.Comparer, Is.TypeOf<TypedValue.DefaultComparer>()); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 15:55:38
|
Revision: 4756 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4756&view=rev Author: fabiomaulo Date: 2009-10-15 15:55:27 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Fix NH-1963 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Engine/TypedValue.cs trunk/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1963/CacheableQueryOnByteArray.cs Modified: trunk/nhibernate/src/NHibernate/Engine/TypedValue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/TypedValue.cs 2009-10-15 12:53:45 UTC (rev 4755) +++ trunk/nhibernate/src/NHibernate/Engine/TypedValue.cs 2009-10-15 15:55:27 UTC (rev 4756) @@ -22,7 +22,7 @@ this.type = type; this.value = value; ICollection values = value as ICollection; - if (!type.IsCollectionType && values != null) + if (!type.IsCollectionType && values != null && !type.ReturnedClass.IsArray) comparer = new ParameterListComparer(entityMode); else comparer = new DefaultComparer(entityMode); @@ -38,6 +38,11 @@ get { return type; } } + public IEqualityComparer<TypedValue> Comparer + { + get { return comparer; } + } + public override int GetHashCode() { return comparer.GetHashCode(this); @@ -54,7 +59,7 @@ } [Serializable] - private class ParameterListComparer : IEqualityComparer<TypedValue> + public class ParameterListComparer : IEqualityComparer<TypedValue> { private readonly EntityMode entityMode; @@ -118,7 +123,7 @@ } [Serializable] - private class DefaultComparer : IEqualityComparer<TypedValue> + public class DefaultComparer : IEqualityComparer<TypedValue> { private readonly EntityMode entityMode; Modified: trunk/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs 2009-10-15 12:53:45 UTC (rev 4755) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/TypedValueFixture.cs 2009-10-15 15:55:27 UTC (rev 4756) @@ -27,5 +27,16 @@ { Assert.AreEqual("null", new TypedValue(NHibernateUtil.Int32, null, EntityMode.Poco).ToString()); } + + [Test] + public void WhenTheTypeIsAnArray_ChoseTheDefaultComparer() + { + byte[] value = new byte[]{1,2,3}; + + + var tv = new TypedValue(NHibernateUtil.BinaryBlob, value, EntityMode.Poco); + + Assert.That(tv.Comparer, Is.TypeOf<TypedValue.DefaultComparer>()); + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1963/CacheableQueryOnByteArray.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1963/CacheableQueryOnByteArray.cs 2009-10-15 12:53:45 UTC (rev 4755) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1963/CacheableQueryOnByteArray.cs 2009-10-15 15:55:27 UTC (rev 4756) @@ -39,7 +39,7 @@ return dialect as MsSql2000Dialect != null; } - [Test,Ignore] + [Test] public void Should_be_able_to_do_cacheable_query_on_byte_array_field() { using (ISession session = this.OpenSession()) @@ -47,7 +47,7 @@ var data = new byte[] { 1, 2, 3 }; var result = session.CreateQuery("from DomainClass d where d.ByteData = :data") - .SetParameter("data", data) + .SetBinary("data", data) .SetCacheable(true) .UniqueResult<DomainClass>(); @@ -59,7 +59,7 @@ var data = new byte[] { 1, 2, 3 }; var result = session.CreateQuery("from DomainClass d where d.ByteData = :data") - .SetParameter("data", data) + .SetBinary("data", data) .SetCacheable(true) .UniqueResult<DomainClass>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 12:53:52
|
Revision: 4755 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4755&view=rev Author: fabiomaulo Date: 2009-10-15 12:53:45 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Merge r4754 (fix NH-1895) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:43:59 UTC (rev 4754) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:53:45 UTC (rev 4755) @@ -140,12 +140,16 @@ protected virtual void DeleteTransientEntity(IEventSource session, object entity, bool cascadeDeleteEnabled, IEntityPersister persister, ISet transientEntities) { log.Info("handling transient entity in delete processing"); - if (transientEntities.Contains(entity)) + // NH different impl : NH-1895 + if(transientEntities == null) { + transientEntities = new HashedSet(); + } + if (!transientEntities.Add(entity)) + { log.Debug("already handled transient entity; skipping"); return; } - transientEntities.Add(entity); CascadeBeforeDelete(session, persister, entity, null, transientEntities); CascadeAfterDelete(session, persister, entity, transientEntities); } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs 2009-10-15 12:53:45 UTC (rev 4755) @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1895 +{ + public class Order + { + public Order() + { + Details = new List<Detail>(); + } + + public Guid Id { get; set; } + public string Name { get; set; } + public IList<Detail> Details { get; set; } + } + + public class Detail + { + public Guid Id { get; set; } + public string Name { get; set; } + public Order Parent { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml 2009-10-15 12:53:45 UTC (rev 4755) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1895" + default-lazy="false"> + <class name="Order" table="[Order]"> + <id name="Id" type="guid" column="O_Id"> + <generator class="assigned" /> + </id> + <property name="Name" type="string" column="O_Name" /> + <bag name="Details" inverse="true" cascade="delete-orphan" lazy="false" > + <key column="D_OrderId" /> + <one-to-many class="Detail" /> + </bag> + </class> + <class name="Detail" table="Detail"> + <id name="Id" type="guid" column="D_Id"> + <generator class="assigned" /> + </id> + <property name="Name" type="string" column="D_Name" /> + <many-to-one name="Parent" column="D_OrderId" not-null="true" class="Order" /> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs 2009-10-15 12:53:45 UTC (rev 4755) @@ -0,0 +1,30 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1895 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + [Test] + public void SaveTest() + { + var o = new Order {Id = Guid.NewGuid(), Name = "Test Order"}; + for (int i = 0; i < 5; i++) + { + var d = new Detail {Id = Guid.NewGuid(), Name = "Test Detail " + i, Parent = o}; + o.Details.Add(d); + } + using (ISession session = OpenSession()) + { + session.Save(o); + session.Flush(); + } + using (ISession session = OpenSession()) + { + session.Delete(o); + session.Flush(); + } + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:43:59 UTC (rev 4754) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:53:45 UTC (rev 4755) @@ -395,6 +395,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\Futures\FutureQueryOverFixture.cs" /> + <Compile Include="NHSpecificTest\NH1895\DomainClasses.cs" /> + <Compile Include="NHSpecificTest\NH1895\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1922\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1922\Model.cs" /> <Compile Include="NHSpecificTest\NH1927\Fixture.cs" /> @@ -2040,6 +2042,7 @@ <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1895\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-15 12:44:11
|
Revision: 4754 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4754&view=rev Author: fabiomaulo Date: 2009-10-15 12:43:59 +0000 (Thu, 15 Oct 2009) Log Message: ----------- Fix NH-1895 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 22:03:56 UTC (rev 4753) +++ branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -140,12 +140,16 @@ protected virtual void DeleteTransientEntity(IEventSource session, object entity, bool cascadeDeleteEnabled, IEntityPersister persister, ISet transientEntities) { log.Info("handling transient entity in delete processing"); - if (transientEntities.Contains(entity)) + // NH different impl : NH-1895 + if(transientEntities == null) { + transientEntities = new HashedSet(); + } + if (!transientEntities.Add(entity)) + { log.Debug("already handled transient entity; skipping"); return; } - transientEntities.Add(entity); CascadeBeforeDelete(session, persister, entity, null, transientEntities); CascadeAfterDelete(session, persister, entity, transientEntities); } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/DomainClasses.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1895 +{ + public class Order + { + public Order() + { + Details = new List<Detail>(); + } + + public Guid Id { get; set; } + public string Name { get; set; } + public IList<Detail> Details { get; set; } + } + + public class Detail + { + public Guid Id { get; set; } + public string Name { get; set; } + public Order Parent { get; set; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/Mappings.hbm.xml 2009-10-15 12:43:59 UTC (rev 4754) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1895" + default-lazy="false"> + <class name="Order" table="[Order]"> + <id name="Id" type="guid" column="O_Id"> + <generator class="assigned" /> + </id> + <property name="Name" type="string" column="O_Name" /> + <bag name="Details" inverse="true" cascade="delete-orphan" lazy="false" > + <key column="D_OrderId" /> + <one-to-many class="Detail" /> + </bag> + </class> + <class name="Detail" table="Detail"> + <id name="Id" type="guid" column="D_Id"> + <generator class="assigned" /> + </id> + <property name="Name" type="string" column="D_Name" /> + <many-to-one name="Parent" column="D_OrderId" not-null="true" class="Order" /> + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1895/SampleTest.cs 2009-10-15 12:43:59 UTC (rev 4754) @@ -0,0 +1,30 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1895 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + [Test] + public void SaveTest() + { + var o = new Order {Id = Guid.NewGuid(), Name = "Test Order"}; + for (int i = 0; i < 5; i++) + { + var d = new Detail {Id = Guid.NewGuid(), Name = "Test Detail " + i, Parent = o}; + o.Details.Add(d); + } + using (ISession session = OpenSession()) + { + session.Save(o); + session.Flush(); + } + using (ISession session = OpenSession()) + { + session.Delete(o); + session.Flush(); + } + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 22:03:56 UTC (rev 4753) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-15 12:43:59 UTC (rev 4754) @@ -368,6 +368,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\NH1025\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1025\Model.cs" /> + <Compile Include="NHSpecificTest\NH1895\DomainClasses.cs" /> + <Compile Include="NHSpecificTest\NH1895\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1905\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1905\Model.cs" /> <Compile Include="NHSpecificTest\NH1908ThreadSafety\Fixture.cs" /> @@ -2005,6 +2007,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1895\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1025\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 22:04:07
|
Revision: 4753 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4753&view=rev Author: fabiomaulo Date: 2009-10-14 22:03:56 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Merge r4752 (fix NH-1931) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs Modified: trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs 2009-10-14 22:02:56 UTC (rev 4752) +++ trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -1,5 +1,4 @@ using System; -using System.Collections; using NHibernate.Util; using System.Collections.Generic; @@ -51,5 +50,28 @@ { get { return propertyResults; } } + + public override bool Equals(object obj) + { + return Equals(obj as NativeSQLQueryNonScalarReturn); + } + + public bool Equals(NativeSQLQueryNonScalarReturn other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.alias, alias); + } + + public override int GetHashCode() + { + return alias.GetHashCode(); + } } } Modified: trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs 2009-10-14 22:02:56 UTC (rev 4752) +++ trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -28,5 +28,28 @@ { get { return type; } } + + public override bool Equals(object obj) + { + return Equals(obj as NativeSQLQueryScalarReturn); + } + + public bool Equals(NativeSQLQueryScalarReturn other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.columnAlias, columnAlias); + } + + public override int GetHashCode() + { + return columnAlias.GetHashCode(); + } } } Modified: trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs 2009-10-14 22:02:56 UTC (rev 4752) +++ trunk/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -38,7 +38,7 @@ hCode = 29 * hCode + CollectionHelper.GetHashCode(this.querySpaces); if (this.sqlQueryReturns != null) { - hCode = 29 * hCode + sqlQueryReturns.Length; + hCode = 29 * hCode + CollectionHelper.GetHashCode(this.sqlQueryReturns); } } @@ -65,16 +65,13 @@ if (this == obj) return true; - NativeSQLQuerySpecification that = obj as NativeSQLQuerySpecification; + var that = obj as NativeSQLQuerySpecification; if (that == null) return false; - return hashCode == that.hashCode && - CollectionHelper.CollectionEquals(querySpaces, that.querySpaces) && - querySpaces.Equals(that.querySpaces) && - queryString.Equals(that.queryString) && - CollectionHelper.CollectionEquals<INativeSQLQueryReturn>(sqlQueryReturns, that.sqlQueryReturns); + // NHibernate different impl.: NativeSQLQuerySpecification is immutable and the hash is calculated at Ctor + return hashCode == that.hashCode; } public override int GetHashCode() Added: trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -0,0 +1,57 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQueryNonScalarReturnTest + { + [Test] + public void NativeSQLQueryCollectionReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null,LockMode.None); + var sr2 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryCollectionReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null,LockMode.None); + var sr2 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void NativeSQLQueryJoinReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + var sr2 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryJoinReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + var sr2 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void NativeSQLQueryRootReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + var sr2 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryRootReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + var sr2 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -0,0 +1,25 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQueryScalarReturnTest + { + [Test] + public void EqualsByAlias() + { + var sr1 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + var sr2 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void HashCodeByAlias() + { + var sr1 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + var sr2 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs 2009-10-14 22:03:56 UTC (rev 4753) @@ -0,0 +1,59 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; +using System.Collections.Generic; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQuerySpecificationTest + { + [Test] + public void Equality() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void HashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void WhenChangeReturns_NotEqual() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAliasChanged", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreNotEqual(sr1, sr2); + } + + [Test] + public void WhenChangeReturns_NotEqualHashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAliasChanged", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreNotEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void WhenChangeSpace_NotEqual() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "ANOTHER" }); + Assert.AreNotEqual(sr1, sr2); + } + + [Test] + public void WhenChangeSpace_NotEqualHashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "ANOTHER" }); + Assert.AreNotEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 22:02:56 UTC (rev 4752) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 22:03:56 UTC (rev 4753) @@ -161,6 +161,9 @@ <Compile Include="Criteria\Reptile.cs" /> <Compile Include="DriverTest\SqlClientDriverFixture.cs" /> <Compile Include="DriverTest\SqlServerCeDriverFixture.cs" /> + <Compile Include="EngineTest\NativeSQLQueryNonScalarReturnTest.cs" /> + <Compile Include="EngineTest\NativeSQLQueryScalarReturnTest.cs" /> + <Compile Include="EngineTest\NativeSQLQuerySpecificationTest.cs" /> <Compile Include="ExpressionTest\RestrictionsFixture.cs" /> <Compile Include="Criteria\Student.cs" /> <Compile Include="Criteria\StudentDTO.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 22:03:08
|
Revision: 4752 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4752&view=rev Author: fabiomaulo Date: 2009-10-14 22:02:56 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1931 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs 2009-10-14 20:50:22 UTC (rev 4751) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryNonScalarReturn.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -1,5 +1,4 @@ using System; -using System.Collections; using NHibernate.Util; using System.Collections.Generic; @@ -51,5 +50,28 @@ { get { return propertyResults; } } + + public override bool Equals(object obj) + { + return Equals(obj as NativeSQLQueryNonScalarReturn); + } + + public bool Equals(NativeSQLQueryNonScalarReturn other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.alias, alias); + } + + public override int GetHashCode() + { + return alias.GetHashCode(); + } } } Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs 2009-10-14 20:50:22 UTC (rev 4751) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQueryScalarReturn.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -28,5 +28,28 @@ { get { return type; } } + + public override bool Equals(object obj) + { + return Equals(obj as NativeSQLQueryScalarReturn); + } + + public bool Equals(NativeSQLQueryScalarReturn other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return Equals(other.columnAlias, columnAlias); + } + + public override int GetHashCode() + { + return columnAlias.GetHashCode(); + } } } Modified: branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs 2009-10-14 20:50:22 UTC (rev 4751) +++ branches/2.1.x/nhibernate/src/NHibernate/Engine/Query/Sql/NativeSQLQuerySpecification.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -38,7 +38,7 @@ hCode = 29 * hCode + CollectionHelper.GetHashCode(this.querySpaces); if (this.sqlQueryReturns != null) { - hCode = 29 * hCode + sqlQueryReturns.Length; + hCode = 29 * hCode + CollectionHelper.GetHashCode(this.sqlQueryReturns); } } @@ -65,16 +65,13 @@ if (this == obj) return true; - NativeSQLQuerySpecification that = obj as NativeSQLQuerySpecification; + var that = obj as NativeSQLQuerySpecification; if (that == null) return false; - return hashCode == that.hashCode && - CollectionHelper.CollectionEquals(querySpaces, that.querySpaces) && - querySpaces.Equals(that.querySpaces) && - queryString.Equals(that.queryString) && - CollectionHelper.CollectionEquals<INativeSQLQueryReturn>(sqlQueryReturns, that.sqlQueryReturns); + // NHibernate different impl.: NativeSQLQuerySpecification is immutable and the hash is calculated at Ctor + return hashCode == that.hashCode; } public override int GetHashCode() Added: branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryNonScalarReturnTest.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -0,0 +1,57 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQueryNonScalarReturnTest + { + [Test] + public void NativeSQLQueryCollectionReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null,LockMode.None); + var sr2 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryCollectionReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null,LockMode.None); + var sr2 = new NativeSQLQueryCollectionReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void NativeSQLQueryJoinReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + var sr2 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryJoinReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + var sr2 = new NativeSQLQueryJoinReturn("myAlias", "owner", "ownerProp", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void NativeSQLQueryRootReturnEqualsByAlias() + { + var sr1 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + var sr2 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void NativeSQLQueryRootReturnHashCodeByAlias() + { + var sr1 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + var sr2 = new NativeSQLQueryRootReturn("myAlias", "entity", null, LockMode.None); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQueryScalarReturnTest.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -0,0 +1,25 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQueryScalarReturnTest + { + [Test] + public void EqualsByAlias() + { + var sr1 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + var sr2 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void HashCodeByAlias() + { + var sr1 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + var sr2 = new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/EngineTest/NativeSQLQuerySpecificationTest.cs 2009-10-14 22:02:56 UTC (rev 4752) @@ -0,0 +1,59 @@ +using NHibernate.Engine.Query.Sql; +using NUnit.Framework; +using System.Collections.Generic; + +namespace NHibernate.Test.EngineTest +{ + [TestFixture] + public class NativeSQLQuerySpecificationTest + { + [Test] + public void Equality() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreEqual(sr1, sr2); + } + + [Test] + public void HashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void WhenChangeReturns_NotEqual() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAliasChanged", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreNotEqual(sr1, sr2); + } + + [Test] + public void WhenChangeReturns_NotEqualHashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAliasChanged", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + Assert.AreNotEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + [Test] + public void WhenChangeSpace_NotEqual() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "ANOTHER" }); + Assert.AreNotEqual(sr1, sr2); + } + + [Test] + public void WhenChangeSpace_NotEqualHashCode() + { + var sr1 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "SOMETHING" }); + var sr2 = new NativeSQLQuerySpecification("SELECT * FROM SOMETHING", new INativeSQLQueryReturn[] { new NativeSQLQueryScalarReturn("myAlias", NHibernateUtil.Int32), new NativeSQLQueryScalarReturn("otherAlias", NHibernateUtil.Int32) }, new List<string> { "ANOTHER" }); + Assert.AreNotEqual(sr1.GetHashCode(), sr2.GetHashCode()); + } + + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 20:50:22 UTC (rev 4751) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 22:02:56 UTC (rev 4752) @@ -106,6 +106,9 @@ <Compile Include="CfgTest\ConfigurationSerializationTests.cs" /> <Compile Include="CfgTest\DefaultNsAssmFixture.cs" /> <Compile Include="DriverTest\SqlServerCeDriverFixture.cs" /> + <Compile Include="EngineTest\NativeSQLQueryNonScalarReturnTest.cs" /> + <Compile Include="EngineTest\NativeSQLQueryScalarReturnTest.cs" /> + <Compile Include="EngineTest\NativeSQLQuerySpecificationTest.cs" /> <Compile Include="FilterTest\ConfigFixture.cs" /> <Compile Include="FilterTest\FilterSecondPassArgsFixture.cs" /> <Compile Include="CfgTest\HbmBinderFixture.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:50:39
|
Revision: 4751 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4751&view=rev Author: fabiomaulo Date: 2009-10-14 20:50:22 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Minor (demonstration NH-1025 not an issue implementing Equals and GetHashCode as required for set) Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Model.cs Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Fixture.cs 2009-10-14 20:50:22 UTC (rev 4751) @@ -0,0 +1,58 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1025 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void Test() + { + var e = new Entity(); + e.Components.Add(new Component(1, 2, null)); + e.Components.Add(new Component(null, 2, 3)); + e.Components.Add(new Component(1, null, 3)); + + // Save our entity with 3 Components that contain null-valued properties + // null values are required to generate invalid SQL. + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.SaveOrUpdate(e); + t.Commit(); + } + + // Retrieve entity, and add an additional component. Incorrect SQL will include + // 'WHERE ValueA = NULL AND ...' etc. Correct SQL should be 'WHERE ValueA IS NULL AND ...' etc. + // This causes the old component records to not be found, and the new collection gets appended + // to the old collection, resulting in OriginalCollection.Count + ModifiedCollection.Count records. + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var e2 = s.Get<Entity>(e.Id); + e2.Components.Add(new Component(null, null, 3)); + + s.SaveOrUpdate(e2); + t.Commit(); + } + + // NH1025 results in 7 retrieved Components, instead of the expected 4. + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var e3 =s.Get<Entity>(e.Id); + Assert.AreEqual(4, e3.Components.Count); + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + using (var t = s.BeginTransaction()) + { + s.Delete("from Entity"); + t.Commit(); + } + } + } +} Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Mappings.hbm.xml 2009-10-14 20:50:22 UTC (rev 4751) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1025"> + + <class name="Entity"> + <id name="Id"> + <generator class="native" /> + </id> + + <set name ="Components" table="Components" > + <key column="EntityID" /> + <composite-element class="Component"> + <parent name="Parent"/> + <property name="ValueA" /> + <property name="ValueB" /> + <property name="ValueC" /> + </composite-element> + </set> + </class> +</hibernate-mapping> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1025/Model.cs 2009-10-14 20:50:22 UTC (rev 4751) @@ -0,0 +1,79 @@ +using System; +using Iesi.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1025 +{ + public class Entity + { + public Entity() + { + Components = new HashedSet<Component>(); + } + + public virtual int Id { get; set; } + + public virtual ISet<Component> Components { get; set; } + } + + public class Component : IEquatable<Component> + { + public Component() + { + + } + + public Component(int? valueA, int? valueB, int? valueC) + { + ValueA = valueA; + ValueB = valueB; + ValueC = valueC; + } + + public virtual Entity Parent { get; set; } + + public virtual int? ValueA { get; set; } + public virtual int? ValueB { get; set; } + public virtual int? ValueC { get; set; } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + if (obj.GetType() != typeof (Component)) + { + return false; + } + return Equals((Component) obj); + } + + public bool Equals(Component other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + if (ReferenceEquals(this, other)) + { + return true; + } + return other.ValueA.Equals(ValueA) && other.ValueB.Equals(ValueB) && other.ValueC.Equals(ValueC); + } + + public override int GetHashCode() + { + unchecked + { + int result = (ValueA.HasValue ? ValueA.Value : 0); + result = (result * 397) ^ (ValueB.HasValue ? ValueB.Value : 0); + result = (result * 397) ^ (ValueC.HasValue ? ValueC.Value : 0); + return result; + } + } + } +} Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 20:38:28 UTC (rev 4750) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 20:50:22 UTC (rev 4751) @@ -363,6 +363,8 @@ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" /> <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> + <Compile Include="NHSpecificTest\NH1025\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1025\Model.cs" /> <Compile Include="NHSpecificTest\NH1905\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1905\Model.cs" /> <Compile Include="NHSpecificTest\NH1908ThreadSafety\Fixture.cs" /> @@ -2000,6 +2002,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1025\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:38:40
|
Revision: 4750 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4750&view=rev Author: fabiomaulo Date: 2009-10-14 20:38:28 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Merge r4749 (fix NH-1970) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2009-10-14 20:37:46 UTC (rev 4749) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2009-10-14 20:38:28 UTC (rev 4750) @@ -53,6 +53,7 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%d\", ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%m\", ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%Y\", ?1)")); + RegisterFunction("substring", new StandardSQLFunction("substr", NHibernateUtil.String)); } public override Schema.IDataBaseSchema GetDataBaseSchema(DbConnection connection) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:37:53
|
Revision: 4749 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4749&view=rev Author: fabiomaulo Date: 2009-10-14 20:37:46 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1970 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2009-10-14 20:27:08 UTC (rev 4748) +++ branches/2.1.x/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2009-10-14 20:37:46 UTC (rev 4749) @@ -53,6 +53,7 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%d\", ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%m\", ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "strftime(\"%Y\", ?1)")); + RegisterFunction("substring", new StandardSQLFunction("substr", NHibernateUtil.String)); } public override Schema.IDataBaseSchema GetDataBaseSchema(DbConnection connection) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:27:15
|
Revision: 4748 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4748&view=rev Author: fabiomaulo Date: 2009-10-14 20:27:08 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Merge r4747 (fix NH-1973) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/DateTime2Type.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs Modified: trunk/nhibernate/src/NHibernate/Type/DateTime2Type.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/DateTime2Type.cs 2009-10-14 20:25:37 UTC (rev 4747) +++ trunk/nhibernate/src/NHibernate/Type/DateTime2Type.cs 2009-10-14 20:27:08 UTC (rev 4748) @@ -19,5 +19,37 @@ { get { return "DateTime2"; } } + + public override object Get(IDataReader rs, int index) + { + try + { + return Convert.ToDateTime(rs[index]); + } + catch (Exception ex) + { + throw new FormatException(string.Format("Input string '{0}' was not in the correct format.", rs[index]), ex); + } + } + + public override void Set(IDbCommand st, object value, int index) + { + ((IDataParameter) st.Parameters[index]).Value = (DateTime) value; + } + + public override bool IsEqual(object x, object y) + { + if (x == y) + { + return true; + } + + if (x == null || y == null) + { + return false; + } + + return x.Equals(y); + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs 2009-10-14 20:25:37 UTC (rev 4747) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs 2009-10-14 20:27:08 UTC (rev 4748) @@ -33,5 +33,14 @@ SavingAndRetrievingAction(new AllDates { Sql_datetime2 = DateTime.MaxValue }, entity => DateTimeAssert.AreEqual(entity.Sql_datetime2, DateTime.MaxValue)); } + + [Test] + public void SaveMillisecond() + { + DateTime datetime2 = DateTime.MinValue.AddMilliseconds(123); + + SavingAndRetrievingAction(new AllDates { Sql_datetime2 = datetime2 }, + entity => Assert.That(entity.Sql_datetime2, Is.EqualTo(datetime2))); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:25:49
|
Revision: 4747 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4747&view=rev Author: fabiomaulo Date: 2009-10-14 20:25:37 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1973 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Type/DateTime2Type.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Type/DateTime2Type.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Type/DateTime2Type.cs 2009-10-14 20:22:58 UTC (rev 4746) +++ branches/2.1.x/nhibernate/src/NHibernate/Type/DateTime2Type.cs 2009-10-14 20:25:37 UTC (rev 4747) @@ -19,5 +19,37 @@ { get { return "DateTime2"; } } + + public override object Get(IDataReader rs, int index) + { + try + { + return Convert.ToDateTime(rs[index]); + } + catch (Exception ex) + { + throw new FormatException(string.Format("Input value '{0}' was not in the correct format.", rs[index]), ex); + } + } + + public override void Set(IDbCommand st, object value, int index) + { + ((IDataParameter) st.Parameters[index]).Value = (DateTime) value; + } + + public override bool IsEqual(object x, object y) + { + if (x == y) + { + return true; + } + + if (x == null || y == null) + { + return false; + } + + return x.Equals(y); + } } } \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs 2009-10-14 20:22:58 UTC (rev 4746) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/DateTime2Fixture.cs 2009-10-14 20:25:37 UTC (rev 4747) @@ -33,5 +33,14 @@ SavingAndRetrievingAction(new AllDates { Sql_datetime2 = DateTime.MaxValue }, entity => DateTimeAssert.AreEqual(entity.Sql_datetime2, DateTime.MaxValue)); } + + [Test] + public void SaveMillisecond() + { + DateTime datetime2 = DateTime.MinValue.AddMilliseconds(123); + + SavingAndRetrievingAction(new AllDates { Sql_datetime2 = datetime2 }, + entity => Assert.That(entity.Sql_datetime2, Is.EqualTo(datetime2))); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 20:23:07
|
Revision: 4746 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4746&view=rev Author: fabiomaulo Date: 2009-10-14 20:22:58 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Merge r4745 (fix NH-1985) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 19:45:17 UTC (rev 4745) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 20:22:58 UTC (rev 4746) @@ -90,12 +90,11 @@ version = entityEntry.Version; } - /*if ( !persister.isMutable() ) { - throw new HibernateException( - "attempted to delete an object of immutable class: " + - MessageHelper.infoString(persister) - ); - }*/ + if (!persister.IsMutable) + { + throw new HibernateException("Attempted to delete an object of immutable class: " + + MessageHelper.InfoString(persister)); + } if (InvokeDeleteLifecycle(source, entity, persister)) { Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs 2009-10-14 20:22:58 UTC (rev 4746) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1985 +{ + public class DomainClass + { + public int Id { get; set; } + + public string Label { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml 2009-10-14 20:22:58 UTC (rev 4746) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1985" + default-lazy="false"> + <class name="DomainClass" mutable="false"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="Label" /> + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2009-10-14 20:22:58 UTC (rev 4746) @@ -0,0 +1,66 @@ +using System; +using System.Data; +using NHibernate.Connection; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1985 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + + if (0 == ExecuteStatement("INSERT INTO DomainClass (Id, Label) VALUES (1, 'TEST record');")) + { + throw new ApplicationException("Insertion of test record failed."); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + + ExecuteStatement("DELETE FROM DomainClass WHERE Id=1;"); + } + + [Test] + public void AttemptToDeleteImmutableObjectShouldThrow() + { + using (ISession session = OpenSession()) + { + Assert.Throws<HibernateException>(() => + { + using (ITransaction trans = session.BeginTransaction()) + { + var entity = session.Get<DomainClass>(1); + session.Delete(entity); + + trans.Commit(); // This used to throw... + } + }); + } + + using (IConnectionProvider prov = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties)) + { + IDbConnection conn = prov.GetConnection(); + + try + { + using (IDbCommand comm = conn.CreateCommand()) + { + comm.CommandText = "SELECT Id FROM DomainClass WHERE Id=1 AND Label='TEST record'"; + object result = comm.ExecuteScalar(); + + Assert.That(result != null, "Immutable object has been deleted!"); + } + } + finally + { + prov.CloseConnection(conn); + } + } + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 19:45:17 UTC (rev 4745) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 20:22:58 UTC (rev 4746) @@ -617,6 +617,8 @@ <Compile Include="NHSpecificTest\NH1969\DummyEntity.cs" /> <Compile Include="NHSpecificTest\NH1969\EntityWithTypeProperty.cs" /> <Compile Include="NHSpecificTest\NH1969\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1985\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1985\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1990\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1990\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> @@ -2035,6 +2037,7 @@ <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1948\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 19:45:27
|
Revision: 4745 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4745&view=rev Author: fabiomaulo Date: 2009-10-14 19:45:17 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1985 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 19:09:18 UTC (rev 4744) +++ branches/2.1.x/nhibernate/src/NHibernate/Event/Default/DefaultDeleteEventListener.cs 2009-10-14 19:45:17 UTC (rev 4745) @@ -90,12 +90,11 @@ version = entityEntry.Version; } - /*if ( !persister.isMutable() ) { - throw new HibernateException( - "attempted to delete an object of immutable class: " + - MessageHelper.infoString(persister) - ); - }*/ + if (!persister.IsMutable) + { + throw new HibernateException("Attempted to delete an object of immutable class: " + + MessageHelper.InfoString(persister)); + } if (InvokeDeleteLifecycle(source, entity, persister)) { Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/DomainClass.cs 2009-10-14 19:45:17 UTC (rev 4745) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.NHSpecificTest.NH1985 +{ + public class DomainClass + { + public int Id { get; set; } + + public string Label { get; set; } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/Mappings.hbm.xml 2009-10-14 19:45:17 UTC (rev 4745) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1985" + default-lazy="false"> + <class name="DomainClass" mutable="false"> + <id name="Id"> + <generator class="assigned" /> + </id> + <property name="Label" /> + </class> +</hibernate-mapping> \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1985/SampleTest.cs 2009-10-14 19:45:17 UTC (rev 4745) @@ -0,0 +1,66 @@ +using System; +using System.Data; +using NHibernate.Connection; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1985 +{ + [TestFixture] + public class SampleTest : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + + if (0 == ExecuteStatement("INSERT INTO DomainClass (Id, Label) VALUES (1, 'TEST record');")) + { + throw new ApplicationException("Insertion of test record failed."); + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + + ExecuteStatement("DELETE FROM DomainClass WHERE Id=1;"); + } + + [Test] + public void AttemptToDeleteImmutableObjectShouldThrow() + { + using (ISession session = OpenSession()) + { + Assert.Throws<HibernateException>(() => + { + using (ITransaction trans = session.BeginTransaction()) + { + var entity = session.Get<DomainClass>(1); + session.Delete(entity); + + trans.Commit(); // This used to throw... + } + }); + } + + using (IConnectionProvider prov = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties)) + { + IDbConnection conn = prov.GetConnection(); + + try + { + using (IDbCommand comm = conn.CreateCommand()) + { + comm.CommandText = "SELECT Id FROM DomainClass WHERE Id=1 AND Label='TEST record'"; + object result = comm.ExecuteScalar(); + + Assert.That(result != null, "Immutable object has been deleted!"); + } + } + finally + { + prov.CloseConnection(conn); + } + } + } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 19:09:18 UTC (rev 4744) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 19:45:17 UTC (rev 4745) @@ -583,6 +583,8 @@ <Compile Include="NHSpecificTest\NH1948\Model.cs" /> <Compile Include="NHSpecificTest\NH1959\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1959\Model.cs" /> + <Compile Include="NHSpecificTest\NH1985\DomainClass.cs" /> + <Compile Include="NHSpecificTest\NH1985\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1990\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1990\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> @@ -1998,6 +2000,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1985\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1948\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 19:09:27
|
Revision: 4744 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4744&view=rev Author: fabiomaulo Date: 2009-10-14 19:09:18 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Merge r4742, r4743 (fix NH-1990, NH-1992) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs trunk/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs trunk/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs 2009-10-14 17:26:57 UTC (rev 4743) +++ trunk/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs 2009-10-14 19:09:18 UTC (rev 4744) @@ -79,6 +79,7 @@ private bool afterInsert; private bool afterOn; private bool beginLine = true; + private bool endCommandFound; private int indent = 1; private int inFunction; @@ -186,6 +187,7 @@ { Out(); indent = 1; + endCommandFound = true; Newline(); } @@ -285,6 +287,7 @@ { afterInsert = true; } + endCommandFound = false; } private void Select() @@ -296,6 +299,7 @@ afterByOrFromOrSelects.Insert(afterByOrFromOrSelects.Count, afterByOrSetOrFromOrSelect); parensSinceSelect = 0; afterByOrSetOrFromOrSelect = true; + endCommandFound = false; } private void Out() @@ -353,6 +357,11 @@ private void CloseParen() { + if (endCommandFound) + { + Out(); + return; + } parensSinceSelect--; if (parensSinceSelect < 0) { @@ -384,6 +393,11 @@ private void OpenParen() { + if(endCommandFound) + { + Out(); + return; + } if (IsFunctionName(lastToken) || inFunction > 0) { inFunction++; Modified: trunk/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs 2009-10-14 17:26:57 UTC (rev 4743) +++ trunk/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs 2009-10-14 19:09:18 UTC (rev 4744) @@ -3,6 +3,7 @@ using NHibernate.Persister.Collection; using NHibernate.SqlCommand; using NHibernate.Type; +using NHibernate.Util; namespace NHibernate.Loader.Collection { @@ -31,8 +32,8 @@ namedParameters = queryParameters.NamedParameters; // NH Different behavior: to deal with positionslParameter+NamedParameter+ParameterOfFilters - types = queryParameters.PositionalParameterTypes; - values = queryParameters.PositionalParameterValues; + types = new List<IType>(new JoinedEnumerable<IType>(queryParameters.FilteredParameterTypes, queryParameters.PositionalParameterTypes)).ToArray(); + values = new List<object>(new JoinedEnumerable<object>(queryParameters.FilteredParameterValues, queryParameters.PositionalParameterValues)).ToArray(); this.namedParameterLocMap = namedParameterLocMap; } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs 2009-10-14 19:09:18 UTC (rev 4744) @@ -0,0 +1,134 @@ +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1990 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + for (int i = 0; i < 10; i++) + { + var feed = new NewsFeed + { + Url = string.Format("Feed{0}Uri", i), + Title = string.Format("Feed{0}", i), + Status = (i % 2 == 0 ? 1 : 2) + }; + s.Save(feed); + + for (int j = 0; j < 8; j++) + { + var item = new NewsItem + {Title = string.Format("Feed{0}Item{1}", i, j), Status = (j % 2 == 0 ? 1 : 2), Feed = feed}; + s.Save(item); + } + } + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete(string.Format("from {0}", typeof (NewsItem).Name)); + s.Delete(string.Format("from {0}", typeof (NewsFeed).Name)); + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + ICriteria criteria = s.CreateCriteria(typeof (NewsFeed), "NewsFeed"); + IList<NewsFeed> feeds = criteria.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(5)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParametersAndPositionalParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + ICriteria criteria = s.CreateCriteria(typeof (NewsFeed), "NewsFeed"); + criteria.Add(Restrictions.In("Url", new[] {"Feed2Uri", "Feed4Uri", "Feed8Uri"})); + + IList<NewsFeed> feeds = criteria.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(3)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParametersAndPositionalParametersAndNamedParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + var hql = new StringBuilder(); + hql.AppendLine("from NewsFeed"); + hql.AppendLine("where (Url = ? or Url = ?) and Title in (:TitleList)) "); + + IQuery query = s.CreateQuery(hql.ToString()); + query.SetString(0, "Feed4Uri"); + query.SetString(1, "Feed8Uri"); + query.SetParameterList("TitleList", new[] {"Feed2", "Feed4", "Feed8"}); + + IList<NewsFeed> feeds = query.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(2)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml 2009-10-14 19:09:18 UTC (rev 4744) @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1990" + assembly="NHibernate.Test"> + + <class name="NewsFeed" table="NWS_Feed" batch-size="100"> + <id name="Id" type="Guid" column="OID"> + <generator class="guid"></generator> + </id> + <property name="Title" type="String" not-null="true"/> + <property name="Url" type="String" not-null="true"/> + <property name="Status" type="Int32" not-null="true"/> + <bag name="Items" cascade="all" fetch="subselect" inverse="true" > + <key column="FK_Feed_OID"/> + <one-to-many class="NewsItem"></one-to-many> + <filter name="StatusFilter" condition=":Status=Status" /> + </bag> + <filter name="StatusFilter" condition=":Status=Status" /> + </class> + + <class name="NewsItem" table="NWS_Item" batch-size="100"> + <id name="Id" type="Guid" column="OID"> + <generator class="guid"></generator> + </id> + <property name="Title" type="String" not-null="true"/> + <property name="Status" type="Int32" not-null="true"/> + <many-to-one name="Feed" class="NewsFeed" column="FK_Feed_OID" not-null="true"/> + + <filter name="StatusFilter" condition=":Status=Status" /> + </class> + + <filter-def name="StatusFilter"> + <filter-param name="Status" type="Int32"/> + </filter-def> +</hibernate-mapping> + + Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs 2009-10-14 19:09:18 UTC (rev 4744) @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1990 +{ + public class NewsFeed + { + public NewsFeed() + { + Items = new List<NewsItem>(); + } + + public virtual Guid Id { get; set; } + public virtual string Title { get; set; } + public virtual string Url { get; set; } + public virtual int Status { get; set; } + public virtual IList<NewsItem> Items { get; set; } + } + + public class NewsItem + { + public virtual Guid Id { get; set; } + public virtual string Title { get; set; } + public virtual int Status { get; set; } + public virtual NewsFeed Feed { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 17:26:57 UTC (rev 4743) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 19:09:18 UTC (rev 4744) @@ -617,6 +617,8 @@ <Compile Include="NHSpecificTest\NH1969\DummyEntity.cs" /> <Compile Include="NHSpecificTest\NH1969\EntityWithTypeProperty.cs" /> <Compile Include="NHSpecificTest\NH1969\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1990\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1990\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1439,6 +1441,7 @@ <Compile Include="UserCollection\User.cs" /> <Compile Include="UserCollection\UserCollectionTypeTest.cs" /> <Compile Include="UtilityTest\AssemblyQualifiedTypeNameFixture.cs" /> + <Compile Include="UtilityTest\BasicFormatterFixture.cs" /> <Compile Include="UtilityTest\ExpressionsHelperFixture.cs" /> <Compile Include="UtilityTest\IdentityMapFixture.cs" /> <Compile Include="UtilityTest\IdentityMapSequencedFixture.cs" /> @@ -2032,6 +2035,7 @@ <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1948\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1941\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs 2009-10-14 19:09:18 UTC (rev 4744) @@ -0,0 +1,23 @@ +using NHibernate.AdoNet.Util; +using NUnit.Framework; + +namespace NHibernate.Test.UtilityTest +{ + [TestFixture] + public class BasicFormatterFixture + { + [Test] + public void StringWithNestedDelimiters() + { + string formattedSql = null; + IFormatter formatter = new BasicFormatter(); + string sql = @"INSERT INTO Table (Name, id) VALUES (@p0, @p1); @p0 = 'a'(b', @p1 = 1"; + Assert.DoesNotThrow(() => formattedSql = formatter.Format(sql)); + Assert.That(formattedSql, Text.Contains("'a'(b'")); + + sql = @"UPDATE Table SET Column = @p0;@p0 = '(')'"; + Assert.DoesNotThrow(() => formattedSql = formatter.Format(sql)); + Assert.That(formattedSql, Text.Contains("'(')'")); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 17:27:05
|
Revision: 4743 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4743&view=rev Author: fabiomaulo Date: 2009-10-14 17:26:57 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1990 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs 2009-10-14 16:19:19 UTC (rev 4742) +++ branches/2.1.x/nhibernate/src/NHibernate/Loader/Collection/SubselectOneToManyLoader.cs 2009-10-14 17:26:57 UTC (rev 4743) @@ -3,6 +3,7 @@ using NHibernate.Persister.Collection; using NHibernate.SqlCommand; using NHibernate.Type; +using NHibernate.Util; namespace NHibernate.Loader.Collection { @@ -31,8 +32,8 @@ namedParameters = queryParameters.NamedParameters; // NH Different behavior: to deal with positionslParameter+NamedParameter+ParameterOfFilters - types = queryParameters.PositionalParameterTypes; - values = queryParameters.PositionalParameterValues; + types = new List<IType>(new JoinedEnumerable<IType>(queryParameters.FilteredParameterTypes, queryParameters.PositionalParameterTypes)).ToArray(); + values = new List<object>(new JoinedEnumerable<object>(queryParameters.FilteredParameterValues, queryParameters.PositionalParameterValues)).ToArray(); this.namedParameterLocMap = namedParameterLocMap; } Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Fixture.cs 2009-10-14 17:26:57 UTC (rev 4743) @@ -0,0 +1,134 @@ +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1990 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + for (int i = 0; i < 10; i++) + { + var feed = new NewsFeed + { + Url = string.Format("Feed{0}Uri", i), + Title = string.Format("Feed{0}", i), + Status = (i % 2 == 0 ? 1 : 2) + }; + s.Save(feed); + + for (int j = 0; j < 8; j++) + { + var item = new NewsItem + {Title = string.Format("Feed{0}Item{1}", i, j), Status = (j % 2 == 0 ? 1 : 2), Feed = feed}; + s.Save(item); + } + } + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete(string.Format("from {0}", typeof (NewsItem).Name)); + s.Delete(string.Format("from {0}", typeof (NewsFeed).Name)); + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + ICriteria criteria = s.CreateCriteria(typeof (NewsFeed), "NewsFeed"); + IList<NewsFeed> feeds = criteria.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(5)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParametersAndPositionalParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + ICriteria criteria = s.CreateCriteria(typeof (NewsFeed), "NewsFeed"); + criteria.Add(Restrictions.In("Url", new[] {"Feed2Uri", "Feed4Uri", "Feed8Uri"})); + + IList<NewsFeed> feeds = criteria.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(3)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + + [Test] + public void FetchingBySubqueryFilterParametersAndPositionalParametersAndNamedParameters() + { + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + IFilter filter = s.EnableFilter("StatusFilter"); + filter.SetParameter("Status", 1); + + var hql = new StringBuilder(); + hql.AppendLine("from NewsFeed"); + hql.AppendLine("where (Url = ? or Url = ?) and Title in (:TitleList)) "); + + IQuery query = s.CreateQuery(hql.ToString()); + query.SetString(0, "Feed4Uri"); + query.SetString(1, "Feed8Uri"); + query.SetParameterList("TitleList", new[] {"Feed2", "Feed4", "Feed8"}); + + IList<NewsFeed> feeds = query.List<NewsFeed>(); + + Assert.That(feeds.Count, Is.EqualTo(2)); + foreach (NewsFeed feed in feeds) + { + Assert.That(feed.Items.Count, Is.EqualTo(4)); + } + + tx.Commit(); + } + } + } + } +} \ No newline at end of file Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Mappings.hbm.xml 2009-10-14 17:26:57 UTC (rev 4743) @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1990" + assembly="NHibernate.Test"> + + <class name="NewsFeed" table="NWS_Feed" batch-size="100"> + <id name="Id" type="Guid" column="OID"> + <generator class="guid"></generator> + </id> + <property name="Title" type="String" not-null="true"/> + <property name="Url" type="String" not-null="true"/> + <property name="Status" type="Int32" not-null="true"/> + <bag name="Items" cascade="all" fetch="subselect" inverse="true" > + <key column="FK_Feed_OID"/> + <one-to-many class="NewsItem"></one-to-many> + <filter name="StatusFilter" condition=":Status=Status" /> + </bag> + <filter name="StatusFilter" condition=":Status=Status" /> + </class> + + <class name="NewsItem" table="NWS_Item" batch-size="100"> + <id name="Id" type="Guid" column="OID"> + <generator class="guid"></generator> + </id> + <property name="Title" type="String" not-null="true"/> + <property name="Status" type="Int32" not-null="true"/> + <many-to-one name="Feed" class="NewsFeed" column="FK_Feed_OID" not-null="true"/> + + <filter name="StatusFilter" condition=":Status=Status" /> + </class> + + <filter-def name="StatusFilter"> + <filter-param name="Status" type="Int32"/> + </filter-def> +</hibernate-mapping> + + Added: branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1990/Model.cs 2009-10-14 17:26:57 UTC (rev 4743) @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1990 +{ + public class NewsFeed + { + public NewsFeed() + { + Items = new List<NewsItem>(); + } + + public virtual Guid Id { get; set; } + public virtual string Title { get; set; } + public virtual string Url { get; set; } + public virtual int Status { get; set; } + public virtual IList<NewsItem> Items { get; set; } + } + + public class NewsItem + { + public virtual Guid Id { get; set; } + public virtual string Title { get; set; } + public virtual int Status { get; set; } + public virtual NewsFeed Feed { get; set; } + } +} \ No newline at end of file Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 16:19:19 UTC (rev 4742) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 17:26:57 UTC (rev 4743) @@ -583,6 +583,8 @@ <Compile Include="NHSpecificTest\NH1948\Model.cs" /> <Compile Include="NHSpecificTest\NH1959\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1959\Model.cs" /> + <Compile Include="NHSpecificTest\NH1990\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1990\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -1996,6 +1998,7 @@ <EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1990\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1959\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1948\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1941\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2009-10-14 16:19:29
|
Revision: 4742 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4742&view=rev Author: fabiomaulo Date: 2009-10-14 16:19:19 +0000 (Wed, 14 Oct 2009) Log Message: ----------- Fix NH-1992 Modified Paths: -------------- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs Modified: branches/2.1.x/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs 2009-10-08 17:50:58 UTC (rev 4741) +++ branches/2.1.x/nhibernate/src/NHibernate/AdoNet/Util/BasicFormatter.cs 2009-10-14 16:19:19 UTC (rev 4742) @@ -79,6 +79,7 @@ private bool afterInsert; private bool afterOn; private bool beginLine = true; + private bool endCommandFound; private int indent = 1; private int inFunction; @@ -186,6 +187,7 @@ { Out(); indent = 1; + endCommandFound = true; Newline(); } @@ -285,6 +287,7 @@ { afterInsert = true; } + endCommandFound = false; } private void Select() @@ -296,6 +299,7 @@ afterByOrFromOrSelects.Insert(afterByOrFromOrSelects.Count, afterByOrSetOrFromOrSelect); parensSinceSelect = 0; afterByOrSetOrFromOrSelect = true; + endCommandFound = false; } private void Out() @@ -353,6 +357,11 @@ private void CloseParen() { + if (endCommandFound) + { + Out(); + return; + } parensSinceSelect--; if (parensSinceSelect < 0) { @@ -384,6 +393,11 @@ private void OpenParen() { + if(endCommandFound) + { + Out(); + return; + } if (IsFunctionName(lastToken) || inFunction > 0) { inFunction++; Modified: branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-08 17:50:58 UTC (rev 4741) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-10-14 16:19:19 UTC (rev 4742) @@ -1405,6 +1405,7 @@ <Compile Include="UserCollection\User.cs" /> <Compile Include="UserCollection\UserCollectionTypeTest.cs" /> <Compile Include="UtilityTest\AssemblyQualifiedTypeNameFixture.cs" /> + <Compile Include="UtilityTest\BasicFormatterFixture.cs" /> <Compile Include="UtilityTest\IdentityMapFixture.cs" /> <Compile Include="UtilityTest\IdentityMapSequencedFixture.cs" /> <Compile Include="UtilityTest\JoinedEnumerableFixture.cs" /> Added: branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs =================================================================== --- branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs (rev 0) +++ branches/2.1.x/nhibernate/src/NHibernate.Test/UtilityTest/BasicFormatterFixture.cs 2009-10-14 16:19:19 UTC (rev 4742) @@ -0,0 +1,23 @@ +using NHibernate.AdoNet.Util; +using NUnit.Framework; + +namespace NHibernate.Test.UtilityTest +{ + [TestFixture] + public class BasicFormatterFixture + { + [Test] + public void StringWithNestedDelimiters() + { + string formattedSql = null; + IFormatter formatter = new BasicFormatter(); + string sql = @"INSERT INTO Table (Name, id) VALUES (@p0, @p1); @p0 = 'a'(b', @p1 = 1"; + Assert.DoesNotThrow(() => formattedSql = formatter.Format(sql)); + Assert.That(formattedSql, Text.Contains("'a'(b'")); + + sql = @"UPDATE Table SET Column = @p0;@p0 = '(')'"; + Assert.DoesNotThrow(() => formattedSql = formatter.Format(sql)); + Assert.That(formattedSql, Text.Contains("'(')'")); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |