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...> - 2011-03-25 12:01:11
|
Revision: 5528 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5528&view=rev Author: fabiomaulo Date: 2011-03-25 12:01:05 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Ups!! Modified Paths: -------------- trunk/nhibernate/build-common/teamcity-hibernate.cfg.xml Modified: trunk/nhibernate/build-common/teamcity-hibernate.cfg.xml =================================================================== --- trunk/nhibernate/build-common/teamcity-hibernate.cfg.xml 2011-03-24 23:28:25 UTC (rev 5527) +++ trunk/nhibernate/build-common/teamcity-hibernate.cfg.xml 2011-03-25 12:01:05 UTC (rev 5528) @@ -21,7 +21,6 @@ <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="connection.connection_string">Server=.\SQLExpress;initial catalog=nhibernate;Integrated Security=SSPI</property> <property name="show_sql">false</property> - <property name="use_outer_join">true</property> <property name="command_timeout">444</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <property name="adonet.wrap_result_sets">false</property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 23:28:31
|
Revision: 5527 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5527&view=rev Author: fabiomaulo Date: 2011-03-24 23:28:25 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Minor BREAKING CHANGE (removed unused property from configuration schema) Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Dialect/IngresDialect.cs trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd trunk/nhibernate/src/NHibernate.Test/App.config Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/releasenotes.txt 2011-03-24 23:28:25 UTC (rev 5527) @@ -1,4 +1,6 @@ ** Known BREAKING CHANGES from NH3.1.0.GA to NH3.2.0.GA + ##### Design time ##### + * removed obsolete "use_outer_join" property from nhibernate-configuration.xsd (simply remove it from your xml configuration) ##### Possible Breaking Changes ##### * [NH-2550] - Allow public access to FieldInterceptor Session (IFieldInterceptor changed) Modified: trunk/nhibernate/src/NHibernate/Dialect/IngresDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/IngresDialect.cs 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate/Dialect/IngresDialect.cs 2011-03-24 23:28:25 UTC (rev 5527) @@ -14,10 +14,6 @@ /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.IngresDriver" /></description> /// </item> Modified: trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate/Dialect/MySQLDialect.cs 2011-03-24 23:28:25 UTC (rev 5527) @@ -22,10 +22,6 @@ /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.MySqlDataDriver" /></description> /// </item> Modified: trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate/Dialect/OracleLiteDialect.cs 2011-03-24 23:28:25 UTC (rev 5527) @@ -16,10 +16,6 @@ /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.OracleLiteDataClientDriver" /></description> /// </item> Modified: trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate/Dialect/PostgreSQLDialect.cs 2011-03-24 23:28:25 UTC (rev 5527) @@ -17,10 +17,6 @@ /// <description>Default Value</description> /// </listheader> /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> /// <term>connection.driver_class</term> /// <description><see cref="NHibernate.Driver.NpgsqlDriver" /></description> /// </item> Modified: trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd =================================================================== --- trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate/nhibernate-configuration.xsd 2011-03-24 23:28:25 UTC (rev 5527) @@ -102,7 +102,6 @@ <xs:enumeration value="command_timeout" /> <xs:enumeration value="adonet.batch_size" /> <xs:enumeration value="use_proxy_validator" /> - <xs:enumeration value="use_outer_join" /> <xs:enumeration value="xml.output_stylesheet" /> <xs:enumeration value="generate_statistics" /> <xs:enumeration value="query.startup_check" /> Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2011-03-24 22:51:46 UTC (rev 5526) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2011-03-24 23:28:25 UTC (rev 5527) @@ -58,7 +58,6 @@ <property name="connection.connection_string">Server=localhost\sqlexpress;initial catalog=nhibernate;Integrated Security=SSPI</property> <property name="show_sql">false</property> - <property name="use_outer_join">true</property> <property name="command_timeout">444</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <property name="adonet.wrap_result_sets">false</property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 22:51:52
|
Revision: 5526 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5526&view=rev Author: fabiomaulo Date: 2011-03-24 22:51:46 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Passing test of NH-1925 (was an issue but was fixed fixing something else) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Model.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Fixture.cs 2011-03-24 22:51:46 UTC (rev 5526) @@ -0,0 +1,101 @@ +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1925 +{ + [TestFixture] + public class Fixture : BugTestCase + { + private const string NAME_JOE = "Joe"; + private const string NAME_ALLEN = "Allen"; + + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var joe = new Customer {Name = NAME_JOE}; + session.Save(joe); + + var allen = new Customer {Name = NAME_ALLEN}; + session.Save(allen); + + var joeInvoice0 = new Invoice {Customer = joe, Number = 0}; + session.Save(joeInvoice0); + + var allenInvoice1 = new Invoice {Customer = allen, Number = 1}; + session.Save(allenInvoice1); + + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Invoice"); + session.Delete("from Customer"); + tx.Commit(); + } + } + base.OnTearDown(); + } + + private void FindJoesLatestInvoice(string hql) + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + IList list = session.CreateQuery(hql) + .SetString("name", NAME_JOE) + .List(); + + Assert.That(list, Is.Not.Empty); + tx.Commit(); + } + } + } + + [Test] + public void Query1() + { + FindJoesLatestInvoice( + @" + select invoice + from Invoice invoice + join invoice.Customer customer + where + invoice.Number = ( + select max(invoice2.Number) + from + invoice.Customer d2 + join d2.Invoices invoice2 + where + d2 = customer + ) + and customer.Name = :name + "); + } + + [Test] + public void Query2() + { + FindJoesLatestInvoice( + @" + select invoice + from Invoice invoice + join invoice.Customer customer + where + invoice.Number = (select max(invoice2.Number) from customer.Invoices invoice2) + and customer.Name = :name + "); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Mappings.hbm.xml 2011-03-24 22:51:46 UTC (rev 5526) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1925"> + + <class name="Customer" > + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + <property name="Name" type="String" /> + + <set name="Invoices" inverse="true" > + <key column="CustomerID"/> + <one-to-many class="Invoice"/> + </set> + </class> + + <class name="Invoice"> + <id name="ID" type="Int32"> + <generator class="hilo" /> + </id> + + <property name="Number" type="Int32" /> + <many-to-one name="Customer" column="CustomerID" class="Customer" /> + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1925/Model.cs 2011-03-24 22:51:46 UTC (rev 5526) @@ -0,0 +1,18 @@ +using Iesi.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1925 +{ + public class Customer + { + public virtual int ID { get; private set; } + public virtual ISet<Invoice> Invoices { get; set; } + public virtual string Name { get; set; } + } + + public class Invoice + { + public virtual int ID { get; private set; } + public virtual Customer Customer { get; set; } + public virtual int Number { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 21:46:41 UTC (rev 5525) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 22:51:46 UTC (rev 5526) @@ -533,6 +533,8 @@ <Compile Include="NHSpecificTest\NH1836\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1869\Entities.cs" /> <Compile Include="NHSpecificTest\NH1869\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1925\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1925\Model.cs" /> <Compile Include="NHSpecificTest\NH2037\Domain.cs" /> <Compile Include="NHSpecificTest\NH2037\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2043\Domain.cs" /> @@ -2488,6 +2490,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1925\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2527\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1323\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2580\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 21:46:47
|
Revision: 5525 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5525&view=rev Author: fabiomaulo Date: 2011-03-24 21:46:41 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Minor (passing test) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/Table.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1399/Fixture.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/Table.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/Table.cs 2011-03-24 21:07:55 UTC (rev 5524) +++ trunk/nhibernate/src/NHibernate/Mapping/Table.cs 2011-03-24 21:46:41 UTC (rev 5525) @@ -804,7 +804,7 @@ public string UniqueColumnString(IEnumerable iterator, string referencedEntityName) { - // NH Different implementation (NH-1339) + // NH Different implementation (NH-1399) int result = 37; if (referencedEntityName != null) { Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1399/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1399/Fixture.cs 2011-03-24 21:07:55 UTC (rev 5524) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1399/Fixture.cs 2011-03-24 21:46:41 UTC (rev 5525) @@ -1,5 +1,6 @@ using NHibernate.Mapping; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.NHSpecificTest.NH1399 { @@ -17,5 +18,29 @@ string t2Fk = table1.UniqueColumnString(new object[] { table1ITestManyB }, "BluewireTechnologies.Core.Framework.DynamicTypes2.Albatross.ITestManyB"); Assert.AreNotEqual(t1Fk, t2Fk, "Different columns in differents tables create the same FK name."); } + + [Test] + public void UsingTwoInstancesWithSameValuesTheFkNameIsTheSame() + { + // This test is to be sure that an eventual SchemaUpdate will find the FK with the same name + // The FK name should not use values depending on instence, istead should use values depending on table/columns names. + Table table1 = new Table("ATABLE"); + + Column table1ITestManyA = new Column("itestmanyaid"); + Column table1ITestManyB = new Column("itestmanybid"); + string t1Fk = table1.UniqueColumnString(new object[] { table1ITestManyA }, "BluewireTechnologies.Core.Framework.DynamicTypes2.Albatross.ITestManyA"); + string t2Fk = table1.UniqueColumnString(new object[] { table1ITestManyB }, "BluewireTechnologies.Core.Framework.DynamicTypes2.Albatross.ITestManyB"); + + + Table table1_ = new Table("ATABLE"); + + Column table1ITestManyA_ = new Column("itestmanyaid"); + Column table1ITestManyB_ = new Column("itestmanybid"); + string t1Fk_ = table1_.UniqueColumnString(new object[] { table1ITestManyA_ }, "BluewireTechnologies.Core.Framework.DynamicTypes2.Albatross.ITestManyA"); + string t2Fk_ = table1_.UniqueColumnString(new object[] { table1ITestManyB_ }, "BluewireTechnologies.Core.Framework.DynamicTypes2.Albatross.ITestManyB"); + + t1Fk_.Should().Be.EqualTo(t1Fk); + t2Fk_.Should().Be.EqualTo(t2Fk); + } } } \ 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...> - 2011-03-24 21:08:01
|
Revision: 5524 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5524&view=rev Author: fabiomaulo Date: 2011-03-24 21:07:55 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Passing tests for NH-2527 using no-batcher Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/FixtureWithNoBatcher.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Model.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/FixtureWithNoBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/FixtureWithNoBatcher.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/FixtureWithNoBatcher.cs 2011-03-24 21:07:55 UTC (rev 5524) @@ -0,0 +1,78 @@ +using NHibernate.AdoNet; +using NHibernate.Cfg.Loquacious; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2527 +{ + public class FixtureWithNoBatcher : BugTestCase + { + + protected override void Configure(Cfg.Configuration configuration) + { + configuration.DataBaseIntegration(x => + { + x.BatchSize = 0; + x.Batcher<NonBatchingBatcherFactory>(); + }); + } + + protected override void OnSetUp() + { + base.OnSetUp(); + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var parent = new Parent(); + var childOne = new Child(); + parent.Childs.Add(childOne); + session.Save(parent); + + tx.Commit(); + } + } + } + + protected override void OnTearDown() + { + base.OnTearDown(); + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Child"); + session.Delete("from Parent"); + tx.Commit(); + } + } + } + + [Test] + public void DisposedCommandShouldNotBeReused() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + var parent = session.CreateCriteria<Parent>().UniqueResult<Parent>(); + + Child childOne = parent.Childs[0]; + + var childTwo = new Child(); + parent.Childs.Add(childTwo); + + Child childToMove = parent.Childs[1]; + parent.Childs.RemoveAt(1); + parent.Childs.Insert(0, childToMove); + + Assert.DoesNotThrow(() => { tx.Commit(); }); + + Assert.AreEqual(childTwo.Id, parent.Childs[0].Id); + Assert.AreEqual(childOne.Id, parent.Childs[1].Id); + } + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Mappings.hbm.xml 2011-03-24 21:07:55 UTC (rev 5524) @@ -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.NH2527"> + <class name="Parent"> + <id name="Id"> + <generator class="guid" /> + </id> + <list name="Childs" cascade="all-delete-orphan" fetch="subselect"> + <key column="parent_id" /> + <index column="pos" /> + <one-to-many class="Child" /> + </list> + </class> + + <class name="Child"> + <id name="Id"> + <generator class="guid" /> + </id> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2527/Model.cs 2011-03-24 21:07:55 UTC (rev 5524) @@ -0,0 +1,17 @@ +namespace NHibernate.Test.NHSpecificTest.NH2527 { + using System; + using System.Collections.Generic; + + public class Parent { + public Parent() { + Childs = new List<Child>(); + } + + public virtual Guid Id { get; set; } + public virtual IList<Child> Childs { get; set; } + } + + public class Child { + public virtual Guid Id { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 20:38:23 UTC (rev 5523) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 21:07:55 UTC (rev 5524) @@ -655,6 +655,8 @@ <Compile Include="NHSpecificTest\NH2491\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2507\Animal.cs" /> <Compile Include="NHSpecificTest\NH2507\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2527\FixtureWithNoBatcher.cs" /> + <Compile Include="NHSpecificTest\NH2527\Model.cs" /> <Compile Include="NHSpecificTest\NH2530\Domain.cs" /> <Compile Include="NHSpecificTest\NH2530\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2554\Fixture.cs" /> @@ -2486,6 +2488,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2527\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1323\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2580\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2390\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 20:38:30
|
Revision: 5523 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5523&view=rev Author: fabiomaulo Date: 2011-03-24 20:38:23 +0000 (Thu, 24 Mar 2011) Log Message: ----------- NH-1323 no viable Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/CheckViability.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/CheckViability.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/CheckViability.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/CheckViability.cs 2011-03-24 20:38:23 UTC (rev 5523) @@ -0,0 +1,202 @@ +using System; +using NHibernate.Collection; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH1323 +{ + [Explicit("Demonstration of not viability")] + public class CheckViability: BugTestCase + { + public class FullInitializedRetrievedEntity : IDisposable + { + private readonly ISessionFactory factory; + private readonly MyClass entity; + + public FullInitializedRetrievedEntity(ISessionFactory factory) + { + this.factory = factory; + object savedId; + using (var session = factory.OpenSession()) + using (session.BeginTransaction()) + { + var entity = new MyClass(); + entity.Children.Add(new MyChild { Parent = entity }); + entity.Components.Add(new MyComponent { Something = "something" }); + entity.Elements.Add("somethingelse"); + savedId = session.Save(entity); + session.Transaction.Commit(); + } + + using (var session = factory.OpenSession()) + using (session.BeginTransaction()) + { + entity = session.Get<MyClass>(savedId); + NHibernateUtil.Initialize(entity.Children); + NHibernateUtil.Initialize(entity.Components); + NHibernateUtil.Initialize(entity.Elements); + session.Transaction.Commit(); + } + } + + public MyClass Entity + { + get { return entity; } + } + + public void Dispose() + { + using (var s = factory.OpenSession()) + { + s.Delete("from MyClass"); + s.Flush(); + } + } + } + + [Test] + public void WhenReassociateCollectionUsingMergeThenReassingOwner() + { + using (var scenario = new FullInitializedRetrievedEntity(Sfi)) + { + ((IPersistentCollection)scenario.Entity.Children).Owner = null; + ((IPersistentCollection)scenario.Entity.Components).Owner = null; + ((IPersistentCollection)scenario.Entity.Elements).Owner = null; + + // When I reassociate the collections the Owner has value + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var merged = (MyClass)session.Merge(scenario.Entity); + ((IPersistentCollection)merged.Children).Owner.Should().Not.Be.Null(); + ((IPersistentCollection)merged.Components).Owner.Should().Not.Be.Null(); + ((IPersistentCollection)merged.Elements).Owner.Should().Not.Be.Null(); + session.Transaction.Commit(); + } + } + } + + [Test] + public void WhenReassociateCollectionUsingLockThenTheCommitNotThrows() + { + using (var scenario = new FullInitializedRetrievedEntity(Sfi)) + { + ((IPersistentCollection)scenario.Entity.Children).Owner = null; + ((IPersistentCollection)scenario.Entity.Components).Owner = null; + ((IPersistentCollection)scenario.Entity.Elements).Owner = null; + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + // When I reassociate the collections the Owner is null + session.Lock(scenario.Entity, LockMode.None); + // If I change something in each collection, there is no problems + scenario.Entity.Children.Add(new MyChild { Parent = scenario.Entity }); + scenario.Entity.Components.Add(new MyComponent { Something = "something" }); + scenario.Entity.Elements.Add("somethingelse"); + session.Transaction.Commit(); + } + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var fresh = session.Get<MyClass>(scenario.Entity.Id); + fresh.Children.Should().Have.Count.EqualTo(2); + fresh.Components.Should().Have.Count.EqualTo(2); + fresh.Elements.Should().Have.Count.EqualTo(2); + session.Transaction.Commit(); + } + } + } + + [Test] + public void WhenReassociateCollectionUsingUpdateThenTheCommitNotThrows() + { + using (var scenario = new FullInitializedRetrievedEntity(Sfi)) + { + ((IPersistentCollection)scenario.Entity.Children).Owner = null; + ((IPersistentCollection)scenario.Entity.Components).Owner = null; + ((IPersistentCollection)scenario.Entity.Elements).Owner = null; + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + scenario.Entity.Children.Add(new MyChild { Parent = scenario.Entity }); + scenario.Entity.Components.Add(new MyComponent { Something = "something" }); + scenario.Entity.Elements.Add("somethingelse"); + // When I reassociate the collections the Owner is null + session.Update(scenario.Entity); + session.Transaction.Commit(); + } + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var fresh = session.Get<MyClass>(scenario.Entity.Id); + fresh.Children.Should().Have.Count.EqualTo(2); + fresh.Components.Should().Have.Count.EqualTo(2); + fresh.Elements.Should().Have.Count.EqualTo(2); + session.Transaction.Commit(); + } + } + } + + [Test] + public void WhenReassociateCollectionUsingSaveOrUpdateThenTheCommitNotThrows() + { + using (var scenario = new FullInitializedRetrievedEntity(Sfi)) + { + ((IPersistentCollection)scenario.Entity.Children).Owner = null; + ((IPersistentCollection)scenario.Entity.Components).Owner = null; + ((IPersistentCollection)scenario.Entity.Elements).Owner = null; + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + scenario.Entity.Children.Add(new MyChild { Parent = scenario.Entity }); + scenario.Entity.Components.Add(new MyComponent { Something = "something" }); + scenario.Entity.Elements.Add("somethingelse"); + // When I reassociate the collections the Owner is null + session.SaveOrUpdate(scenario.Entity); + session.Transaction.Commit(); + } + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var fresh = session.Get<MyClass>(scenario.Entity.Id); + fresh.Children.Should().Have.Count.EqualTo(2); + fresh.Components.Should().Have.Count.EqualTo(2); + fresh.Elements.Should().Have.Count.EqualTo(2); + session.Transaction.Commit(); + } + } + } + + [Test] + public void WhenReassociateCollectionUsingDeleteThenTheCommitNotThrows() + { + using (var scenario = new FullInitializedRetrievedEntity(Sfi)) + { + ((IPersistentCollection)scenario.Entity.Children).Owner = null; + ((IPersistentCollection)scenario.Entity.Components).Owner = null; + ((IPersistentCollection)scenario.Entity.Elements).Owner = null; + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + session.Delete(scenario.Entity); + session.Transaction.Commit(); + } + + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var fresh = session.Get<MyClass>(scenario.Entity.Id); + fresh.Should().Be.Null(); + session.Transaction.Commit(); + } + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Domain.cs 2011-03-24 20:38:23 UTC (rev 5523) @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH1323 +{ + [Serializable] + public class MyClass + { + public MyClass() + { + Children = new List<MyChild>(); + Components = new List<MyComponent>(); + Elements = new List<string>(); + } + public virtual string Description { get; set; } + public virtual Guid Id { get; set; } + public virtual IList<MyChild> Children { get; set; } + public virtual IList<MyComponent> Components { get; set; } + public virtual IList<string> Elements { get; set; } + } + + [Serializable] + public class MyChild + { + public virtual Guid Id { get; set; } + public virtual MyClass Parent { get; set; } + } + + [Serializable] + public class MyComponent + { + public virtual string Something { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1323/Mappings.hbm.xml 2011-03-24 20:38:23 UTC (rev 5523) @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH1323" + assembly="NHibernate.Test"> + <class name="MyClass"> + <id name="Id" type="Guid"> + <generator class="guid.comb" /> + </id> + <property name="Description" /> + <bag name="Children" inverse="true" cascade="all,delete-orphan"> + <key column="ParentId" on-delete="cascade" /> + <one-to-many class="MyChild" /> + </bag> + <bag name="Components" table="MyClassComponents"> + <key column="MyClassId" /> + <composite-element class="MyComponent"> + <property name="Something" /> + </composite-element> + </bag> + <bag name="Elements" table="MyClassElements"> + <key column="MyClassId" /> + <element column="ElementsElement" type="String" /> + </bag> + </class> + <class name="MyChild"> + <id name="Id" type="Guid"> + <generator class="guid.comb" /> + </id> + <many-to-one name="Parent" column="ParentId" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 18:47:41 UTC (rev 5522) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 20:38:23 UTC (rev 5523) @@ -524,6 +524,8 @@ <Compile Include="NHSpecificTest\NH1136\Person.cs" /> <Compile Include="NHSpecificTest\NH1136\ReverseSortComparer.cs" /> <Compile Include="NHSpecificTest\NH1136\TemporalAddressType.cs" /> + <Compile Include="NHSpecificTest\NH1323\CheckViability.cs" /> + <Compile Include="NHSpecificTest\NH1323\Domain.cs" /> <Compile Include="NHSpecificTest\NH1421\AnEntity.cs" /> <Compile Include="NHSpecificTest\NH1421\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1836\Entity.cs" /> @@ -2484,6 +2486,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1323\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2580\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2390\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2491\Mappings.hbm.xml" /> @@ -2879,7 +2882,6 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> - <Folder Include="NHSpecificTest\NH2554" /> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-24 18:47:48
|
Revision: 5522 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5522&view=rev Author: patearl Date: 2011-03-24 18:47:41 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Made two tests ignore dialects without batchers. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs 2011-03-24 18:29:10 UTC (rev 5521) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1850/Fixture.cs 2011-03-24 18:47:41 UTC (rev 5522) @@ -14,6 +14,11 @@ configuration.SetProperty(Environment.BatchSize, "1"); } + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect.SupportsSqlBatches; + } + [Test] public void CanGetQueryDurationForDelete() { Modified: trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-03-24 18:29:10 UTC (rev 5521) +++ trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-03-24 18:47:41 UTC (rev 5522) @@ -183,6 +183,9 @@ [Test] public void WhenSetTheBatchSizeThenSetTheBatchSizeOfTheBatcher() { + if (!Dialect.SupportsSqlBatches) + Assert.Ignore("Dialect does not support sql batches."); + using (IStatelessSession ss = sessions.OpenStatelessSession()) { ss.SetBatchSize(37); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 18:29:16
|
Revision: 5521 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5521&view=rev Author: fabiomaulo Date: 2011-03-24 18:29:10 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Minor Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs 2011-03-24 18:06:06 UTC (rev 5520) +++ trunk/nhibernate/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs 2011-03-24 18:29:10 UTC (rev 5521) @@ -5,6 +5,7 @@ using NHibernate.AdoNet; using NHibernate.Cfg; using NHibernate.Cfg.Loquacious; +using NHibernate.Connection; using NHibernate.Engine; using NHibernate.SqlCommand; using NHibernate.SqlTypes; @@ -28,6 +29,11 @@ get { return "NHibernate.Test"; } } + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect.SupportsSqlBatches; + } + protected override void Configure(Configuration configuration) { configuration.DataBaseIntegration(x => This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-24 18:06:13
|
Revision: 5520 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5520&view=rev Author: fabiomaulo Date: 2011-03-24 18:06:06 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Fix NH-2495 (thanks to Gerke Geurts) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs trunk/nhibernate/src/NHibernate/Loader/Custom/CustomLoader.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/QueryTest/MultipleMixedQueriesFixture.cs Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-03-24 17:28:29 UTC (rev 5519) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-03-24 18:06:06 UTC (rev 5520) @@ -8,7 +8,10 @@ using NHibernate.Cache; using NHibernate.Driver; using NHibernate.Engine; +using NHibernate.Engine.Query.Sql; using NHibernate.Hql; +using NHibernate.Loader.Custom; +using NHibernate.Loader.Custom.Sql; using NHibernate.SqlCommand; using NHibernate.SqlTypes; using NHibernate.Transform; @@ -21,9 +24,9 @@ private static readonly IInternalLogger log = LoggerProvider.LoggerFor(typeof(MultiQueryImpl)); private readonly List<IQuery> queries = new List<IQuery>(); - private readonly List<IQueryTranslator> translators = new List<IQueryTranslator>(); - private readonly IList<System.Type> resultCollectionGenericType = new List<System.Type>(); - private readonly List<QueryParameters> parameters = new List<QueryParameters>(); + private readonly List<ITranslator> translators = new List<ITranslator>(); + private readonly IList<System.Type> resultCollectionGenericType = new List<System.Type>(); + private readonly List<QueryParameters> parameters = new List<QueryParameters>(); private IList queryResults; private readonly Dictionary<string, int> queryResultPositions = new Dictionary<string, int>(); private string cacheRegion; @@ -51,6 +54,8 @@ this.session = session; } + #region Parameters setting + public IMultiQuery SetResultTransformer(IResultTransformer transformer) { resultTransformer = transformer; @@ -267,6 +272,9 @@ return this; } + + #endregion + public IMultiQuery AddNamedQuery<T>(string key, string namedQuery) { ThrowIfKeyAlreadyExists(key); @@ -439,8 +447,8 @@ { // TODO : we need a test to check the behavior when the query has a 'new' istead a trasformer // we should take the HolderInstantiator directly from QueryTranslator... taking care with Parameters. - return Parameters[queryPosition].ResultTransformer != null ? - new HolderInstantiator(Parameters[queryPosition].ResultTransformer, translators[queryPosition].ReturnAliases) + return Parameters[queryPosition].ResultTransformer != null ? + new HolderInstantiator(Parameters[queryPosition].ResultTransformer, translators[queryPosition].ReturnAliases) : HolderInstantiator.NoopInstantiator; } @@ -480,10 +488,12 @@ try { if (log.IsDebugEnabled) + { log.DebugFormat("Executing {0} queries", translators.Count); + } for (int i = 0; i < translators.Count; i++) { - IQueryTranslator translator = Translators[i]; + ITranslator translator = Translators[i]; QueryParameters parameter = Parameters[i]; IList tempResults; if (resultCollectionGenericType[i] == typeof(object)) @@ -529,13 +539,13 @@ object result = translator.Loader.GetRowFromResultSet(reader, - session, - parameter, - lockModeArray, - optionalObjectKey, - hydratedObjects[i], - keys, - true); + session, + parameter, + lockModeArray, + optionalObjectKey, + hydratedObjects[i], + keys, + true); tempResults.Add(result); @@ -572,7 +582,7 @@ } for (int i = 0; i < translators.Count; i++) { - IQueryTranslator translator = translators[i]; + ITranslator translator = translators[i]; QueryParameters parameter = parameters[i]; translator.Loader.InitializeEntitiesAndCollections(hydratedObjects[i], reader, session, false); @@ -614,9 +624,7 @@ QueryParameters queryParameters = query.GetQueryParameters(); queryParameters.ValidateParameters(); query.VerifyParameters(); - IQueryTranslator[] queryTranslators = - session.GetQueries(query.ExpandParameterLists(queryParameters.NamedParameters), false); - foreach (IQueryTranslator translator in queryTranslators) + foreach (var translator in GetTranslators(query, queryParameters)) { translators.Add(translator); parameters.Add(queryParameters); @@ -628,12 +636,30 @@ } } - private static QueryParameters GetFilteredQueryParameters(QueryParameters queryParameters, IQueryTranslator translator) + private IEnumerable<ITranslator> GetTranslators(AbstractQueryImpl query, QueryParameters queryParameters) { + // NOTE: updates queryParameters.NamedParameters as (desired) side effect + var queryString = query.ExpandParameterLists(queryParameters.NamedParameters); + + var sqlQuery = query as ISQLQuery; + if (sqlQuery != null) + { + yield return new SqlTranslator(sqlQuery, session.Factory); + yield break; + } + + foreach (var queryTranslator in session.GetQueries(queryString, false)) + { + yield return new HqlTranslatorWrapper(queryTranslator); + } + } + + private static QueryParameters GetFilteredQueryParameters(QueryParameters queryParameters, ITranslator translator) + { QueryParameters filteredQueryParameters = queryParameters; Dictionary<string, TypedValue> namedParameters = new Dictionary<string, TypedValue>(queryParameters.NamedParameters); filteredQueryParameters.NamedParameters.Clear(); - foreach (string paramName in translator.GetParameterTranslations().GetNamedParameterNames()) + foreach (string paramName in translator.GetNamedParameterNames()) { TypedValue v; if (namedParameters.TryGetValue(paramName, out v)) @@ -723,9 +749,9 @@ List<IType[]> resultTypesList = new List<IType[]>(Translators.Count); for (int i = 0; i < Translators.Count; i++) { - IQueryTranslator queryTranslator = Translators[i]; + ITranslator queryTranslator = Translators[i]; querySpaces.AddAll(queryTranslator.QuerySpaces); - resultTypesList.Add(queryTranslator.ActualReturnTypes); + resultTypesList.Add(queryTranslator.ReturnTypes); } int[] firstRows = new int[Parameters.Count]; int[] maxRows = new int[Parameters.Count]; @@ -755,12 +781,14 @@ return GetResultList(result); } - private IList<IQueryTranslator> Translators + private IList<ITranslator> Translators { get { if (sqlString == null) + { AggregateQueriesInformation(); + } return translators; } } @@ -808,18 +836,94 @@ private int AddQueryForLaterExecutionAndReturnIndexOfQuery(System.Type resultGenericListType, IQuery query) { - ThrowNotSupportedIfSqlQuery(query); ((AbstractQueryImpl)query).SetIgnoreUknownNamedParameters(true); queries.Add(query); resultCollectionGenericType.Add(resultGenericListType); return queries.Count - 1; } - protected void ThrowNotSupportedIfSqlQuery(IQuery query) + + #endregion + + private interface ITranslator { - if (query is ISQLQuery) - throw new NotSupportedException("Sql queries in MultiQuery are currently not supported."); + Loader.Loader Loader { get; } + IType[] ReturnTypes { get; } + string[] ReturnAliases { get; } + ICollection<string> QuerySpaces { get; } + IEnumerable<string> GetNamedParameterNames(); } - #endregion + private class HqlTranslatorWrapper : ITranslator + { + private readonly IQueryTranslator innerTranslator; + + public HqlTranslatorWrapper(IQueryTranslator translator) + { + innerTranslator = translator; + } + + public Loader.Loader Loader + { + get { return innerTranslator.Loader; } + } + + public IType[] ReturnTypes + { + get { return innerTranslator.ActualReturnTypes; } + } + + public ICollection<string> QuerySpaces + { + get { return innerTranslator.QuerySpaces; } + } + + public string[] ReturnAliases + { + get { return innerTranslator.ReturnAliases; } + } + + public IEnumerable<string> GetNamedParameterNames() + { + return innerTranslator.GetParameterTranslations().GetNamedParameterNames(); + } + } + + private class SqlTranslator : ITranslator + { + private readonly CustomLoader loader; + + public SqlTranslator(ISQLQuery sqlQuery, ISessionFactoryImplementor sessionFactory) + { + var sqlQueryImpl = (SqlQueryImpl) sqlQuery; + NativeSQLQuerySpecification sqlQuerySpec = sqlQueryImpl.GenerateQuerySpecification(sqlQueryImpl.NamedParams); + var sqlCustomQuery = new SQLCustomQuery(sqlQuerySpec.SqlQueryReturns, sqlQuerySpec.QueryString, sqlQuerySpec.QuerySpaces, sessionFactory); + loader = new CustomLoader(sqlCustomQuery, sessionFactory); + } + + public IType[] ReturnTypes + { + get { return loader.ResultTypes; } + } + + public Loader.Loader Loader + { + get { return loader; } + } + + public ICollection<string> QuerySpaces + { + get { return loader.QuerySpaces; } + } + + public string[] ReturnAliases + { + get { return loader.ReturnAliases; } + } + + public IEnumerable<string> GetNamedParameterNames() + { + return loader.NamedParameters; + } + } } } Modified: trunk/nhibernate/src/NHibernate/Loader/Custom/CustomLoader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Loader/Custom/CustomLoader.cs 2011-03-24 17:28:29 UTC (rev 5519) +++ trunk/nhibernate/src/NHibernate/Loader/Custom/CustomLoader.cs 2011-03-24 18:06:06 UTC (rev 5520) @@ -402,6 +402,21 @@ } } + public IType[] ResultTypes + { + get { return resultTypes; } + } + + public string[] ReturnAliases + { + get { return transformerAliases; } + } + + public IEnumerable<string> NamedParameters + { + get { return namedParameterBindPoints.Keys; } + } + public interface IResultColumnProcessor { object Extract(object[] data, IDataReader resultSet, ISessionImplementor session); Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs 2011-03-24 17:28:29 UTC (rev 5519) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1508/Fixture.cs 2011-03-24 18:06:06 UTC (rev 5520) @@ -1,6 +1,7 @@ using System; using NHibernate.Driver; using NUnit.Framework; +using SharpTestsEx; namespace NHibernate.Test.NHSpecificTest.NH1508 { @@ -66,28 +67,27 @@ } [Test] - public void ThrowsExceptionWhenSqlQueryIsGiven() + public void DoesntThrowsExceptionWhenSqlQueryIsGiven() { using (ISession session = OpenSession()) using (ITransaction tx = session.BeginTransaction()) { ISQLQuery sqlQuery = session.CreateSQLQuery("select * from Document"); - Assert.Throws<NotSupportedException>(() => session.CreateMultiQuery().Add(sqlQuery)); + var multiquery = session.CreateMultiQuery(); + multiquery.Executing(x => x.Add(sqlQuery)).NotThrows(); } } [Test] - public void ThrowsExceptionWhenNamedSqlQueryIsGiven() + public void DoesntThrowsExceptionWhenNamedSqlQueryIsGiven() { using (ISession session = OpenSession()) using (ITransaction tx = session.BeginTransaction()) { - Assert.Throws<NotSupportedException>(() =>session - .CreateMultiQuery() - .AddNamedQuery("SampleSqlQuery")); + var multiquery = session.CreateMultiQuery(); + multiquery.Executing(x => x.AddNamedQuery("SampleSqlQuery")).NotThrows(); } } - } } Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 17:28:29 UTC (rev 5519) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 18:06:06 UTC (rev 5520) @@ -667,6 +667,7 @@ <Compile Include="PolymorphicGetAndLoad\PolymorphicGetAndLoadTest.cs" /> <Compile Include="PropertyTest\FieldCamelCaseMUnderscoreFixture.cs" /> <Compile Include="PropertyTest\NoSetterCamelCaseMUnderscoreFixture.cs" /> + <Compile Include="QueryTest\MultipleMixedQueriesFixture.cs" /> <Compile Include="ReadOnly\AbstractReadOnlyTest.cs" /> <Compile Include="ReadOnly\Container.cs" /> <Compile Include="ReadOnly\Course.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/QueryTest/MultipleMixedQueriesFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/QueryTest/MultipleMixedQueriesFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/QueryTest/MultipleMixedQueriesFixture.cs 2011-03-24 18:06:06 UTC (rev 5520) @@ -0,0 +1,517 @@ +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using NHibernate.Cache; +using NHibernate.Driver; +using NHibernate.Engine; +using NHibernate.Test.SecondLevelCacheTests; +using NHibernate.Transform; +using NUnit.Framework; +using System; + +namespace NHibernate.Test.QueryTest +{ + public class MultipleMixedQueriesFixture : TestCase + { + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override IList Mappings + { + get { return new string[] { "SecondLevelCacheTest.Item.hbm.xml" }; } + } + + [TestFixtureSetUp] + public void CheckMultiQuerySupport() + { + base.TestFixtureSetUp(); + IDriver driver = sessions.ConnectionProvider.Driver; + if (!driver.SupportsMultipleQueries) + { + Assert.Ignore("Driver {0} does not support multi-queries", driver.GetType().FullName); + } + } + + [Test] + public void NH_1085_WillIgnoreParametersIfDoesNotAppearInQuery() + { + using (ISession s = sessions.OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id in (:ids)").AddEntity(typeof (Item))) + .Add(s.CreateSQLQuery("select * from ITEM where Id in (:ids2)").AddEntity(typeof (Item))) + .SetParameterList("ids", new int[] {50}) + .SetParameterList("ids2", new int[] {50}); + multiQuery.List(); + } + } + + [Test] + public void NH_1085_WillGiveReasonableErrorIfBadParameterName() + { + using (ISession s = sessions.OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id in (:ids)").AddEntity(typeof(Item))) + .Add(s.CreateSQLQuery("select * from ITEM where Id in (:ids2)").AddEntity(typeof(Item))); + var e = Assert.Throws<QueryException>(() => multiQuery.List()); + Assert.That(e.Message, Is.EqualTo("Not all named parameters have been set: ['ids'] [select * from ITEM where Id in (:ids)]")); + } + } + + [Test] + public void CanGetMultiQueryFromSecondLevelCache() + { + CreateItems(); + //set the query in the cache + DoMutiQueryAndAssert(); + + Hashtable cacheHashtable = GetHashTableUsedAsQueryCache(); + IList cachedListEntry = (IList)new ArrayList(cacheHashtable.Values)[0]; + IList cachedQuery = (IList)cachedListEntry[1]; + + IList firstQueryResults = (IList)cachedQuery[0]; + firstQueryResults.Clear(); + firstQueryResults.Add(3); + firstQueryResults.Add(4); + + IList secondQueryResults = (IList)cachedQuery[1]; + secondQueryResults[0] = 2L; + + using (ISession s = sessions.OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id > ?").AddEntity(typeof(Item)) + .SetInt32(0, 50) + .SetFirstResult(10)) + .Add(s.CreateQuery("select count(*) from Item i where i.Id > ?") + .SetInt32(0, 50)); + multiQuery.SetCacheable(true); + IList results = multiQuery.List(); + IList items = (IList)results[0]; + Assert.AreEqual(2, items.Count); + long count = (long)((IList)results[1])[0]; + Assert.AreEqual(2L, count); + } + + RemoveAllItems(); + } + + [Test] + public void CanSpecifyParameterOnMultiQueryWhenItIsNotUsedInAllQueries() + { + using (ISession s = OpenSession()) + { + s.CreateMultiQuery() + .Add("from Item") + .Add(s.CreateSQLQuery("select * from ITEM where Id > :id").AddEntity(typeof(Item))) + .SetParameter("id", 5) + .List(); + } + } + + [Test] + public void CanSpecifyParameterOnMultiQueryWhenItIsNotUsedInAllQueries_MoreThanOneParameter() + { + using (ISession s = OpenSession()) + { + s.CreateMultiQuery() + .Add("from Item") + .Add(s.CreateSQLQuery("select * from ITEM where Id = :id or Id = :id2").AddEntity(typeof(Item))) + .Add("from Item i where i.Id = :id2") + .SetParameter("id", 5) + .SetInt32("id2", 5) + .List(); + } + } + + [Test] + public void TwoMultiQueriesWithDifferentPagingGetDifferentResultsWhenUsingCachedQueries() + { + CreateItems(); + using (ISession s = OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateQuery("from Item i where i.Id > ?") + .SetInt32(0, 50) + .SetFirstResult(10)) + .Add(s.CreateSQLQuery("select count(*) as count from ITEM where Id > ?").AddScalar("count", NHibernateUtil.Int64) + .SetInt32(0, 50)); + + multiQuery.SetCacheable(true); + IList results = multiQuery.List(); + IList items = (IList)results[0]; + Assert.AreEqual(89, items.Count); + long count = (long)((IList)results[1])[0]; + Assert.AreEqual(99L, count); + } + + using (ISession s = OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id > ?").AddEntity(typeof(Item)) + .SetInt32(0, 50) + .SetFirstResult(20)) + .Add(s.CreateQuery("select count(*) from Item i where i.Id > ?") + .SetInt32(0, 50)); + multiQuery.SetCacheable(true); + IList results = multiQuery.List(); + IList items = (IList)results[0]; + Assert.AreEqual(79, items.Count, + "Should have gotten different result here, because the paging is different"); + long count = (long)((IList)results[1])[0]; + Assert.AreEqual(99L, count); + } + + RemoveAllItems(); + } + + [Test] + public void CanUseSecondLevelCacheWithPositionalParameters() + { + Hashtable cacheHashtable = GetHashTableUsedAsQueryCache(); + cacheHashtable.Clear(); + + CreateItems(); + + DoMutiQueryAndAssert(); + + Assert.AreEqual(1, cacheHashtable.Count); + + RemoveAllItems(); + } + + private void DoMutiQueryAndAssert() + { + using (ISession s = OpenSession()) + { + IMultiQuery multiQuery = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id > ?").AddEntity(typeof(Item)) + .SetInt32(0, 50) + .SetFirstResult(10)) + .Add(s.CreateQuery("select count(*) from Item i where i.Id > ?") + .SetInt32(0, 50)); + multiQuery.SetCacheable(true); + IList results = multiQuery.List(); + IList items = (IList)results[0]; + Assert.AreEqual(89, items.Count); + long count = (long)((IList)results[1])[0]; + Assert.AreEqual(99L, count); + } + } + + private void CreateItems() + { + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + for (int i = 0; i < 150; i++) + { + Item item = new Item(); + item.Id = i; + s.Save(item); + } + t.Commit(); + } + } + + private Hashtable GetHashTableUsedAsQueryCache() + { + ISessionFactoryImplementor factory = (ISessionFactoryImplementor)sessions; + //need the inner hashtable in the cache + HashtableCache cache = (HashtableCache) + typeof(StandardQueryCache) + .GetField("queryCache", BindingFlags.Instance | BindingFlags.NonPublic) + .GetValue(factory.GetQueryCache(null)); + + return (Hashtable)typeof(HashtableCache) + .GetField("hashtable", BindingFlags.Instance | BindingFlags.NonPublic) + .GetValue(cache); + } + + [Test] + public void CanUseWithParameterizedQueriesAndLimit() + { + using (ISession s = OpenSession()) + { + for (int i = 0; i < 150; i++) + { + Item item = new Item(); + item.Id = i; + s.Save(item); + } + s.Flush(); + } + + using (ISession s = OpenSession()) + { + IQuery getItems = s.CreateSQLQuery("select * from ITEM where Id > :id").AddEntity(typeof(Item)).SetFirstResult(10); + IQuery countItems = s.CreateQuery("select count(*) from Item i where i.Id > :id"); + + IList results = s.CreateMultiQuery() + .Add(getItems) + .Add(countItems) + .SetInt32("id", 50) + .List(); + IList items = (IList)results[0]; + Assert.AreEqual(89, items.Count); + long count = (long)((IList)results[1])[0]; + Assert.AreEqual(99L, count); + } + + RemoveAllItems(); + } + + private void RemoveAllItems() + { + using (ISession s = OpenSession()) + { + s.Delete("from Item"); + s.Flush(); + } + } + + [Test] + public void CanUseSetParameterList() + { + using (ISession s = OpenSession()) + { + Item item = new Item(); + item.Id = 1; + s.Save(item); + s.Flush(); + } + + using (ISession s = OpenSession()) + { + IList results = s.CreateMultiQuery() + .Add(s.CreateSQLQuery("select * from ITEM where Id in (:items)").AddEntity(typeof(Item))) + .Add("select count(*) from Item i where i.id in (:items)") + .SetParameterList("items", new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }) + .List(); + + IList items = (IList)results[0]; + Item fromDb = (Item)items[0]; + Assert.AreEqual(1, fromDb.Id); + + IList counts = (IList)results[1]; + long count = (long)counts[0]; + Assert.AreEqual(1L, count); + } + + using (ISession s = OpenSession()) + { + s.Delete("from Item"); + s.Flush(); + } + } + + [Test] + public void CanExecuteMultiplyQueriesInSingleRoundTrip() + { + using (ISession s = OpenSession()) + { + Item item = new Item(); + item.Id = 1; + s.Save(item); + s.Flush(); + } + + using (ISession s = OpenSession()) + { + IQuery getItems = s.CreateSQLQuery("select * from ITEM").AddEntity(typeof(Item)); + IQuery countItems = s.CreateQuery("select count(*) from Item"); + + IList results = s.CreateMultiQuery() + .Add(getItems) + .Add(countItems) + .List(); + IList items = (IList)results[0]; + Item fromDb = (Item)items[0]; + Assert.AreEqual(1, fromDb.Id); + + IList counts = (IList)results[1]; + long count = (long)counts[0]; + Assert.AreEqual(1L, count); + } + + using (ISession s = OpenSession()) + { + s.Delete("from Item"); + s.Flush(); + } + } + + [Test] + public void CanAddIQueryWithKeyAndRetrieveResultsWithKey() + { + CreateItems(); + + using (ISession session = OpenSession()) + { + IMultiQuery multiQuery = session.CreateMultiQuery(); + + IQuery firstQuery = session.CreateSQLQuery("select * from ITEM where Id < :id").AddEntity(typeof(Item)) + .SetInt32("id", 50); + + IQuery secondQuery = session.CreateQuery("from Item"); + + multiQuery.Add("first", firstQuery).Add("second", secondQuery); + + IList secondResult = (IList)multiQuery.GetResult("second"); + IList firstResult = (IList)multiQuery.GetResult("first"); + + Assert.Greater(secondResult.Count, firstResult.Count); + } + + RemoveAllItems(); + } + + [Test] + public void CanNotAddQueryWithKeyThatAlreadyExists() + { + using (ISession session = OpenSession()) + { + IMultiQuery multiQuery = session.CreateMultiQuery(); + + IQuery firstQuery = session.CreateSQLQuery("select * from ITEM where Id < :id").AddEntity(typeof(Item)) + .SetInt32("id", 50); + + try + { + IQuery secondQuery = session.CreateSQLQuery("select * from ITEM").AddEntity(typeof(Item)); + multiQuery.Add("first", firstQuery).Add("second", secondQuery); + } + catch (InvalidOperationException) + { + } + catch (Exception) + { + Assert.Fail("This should've thrown an InvalidOperationException"); + } + } + } + + [Test] + public void CanNotRetrieveQueryResultWithUnknownKey() + { + using (ISession session = OpenSession()) + { + IMultiQuery multiQuery = session.CreateMultiQuery(); + + multiQuery.Add("firstQuery", session.CreateSQLQuery("select * from ITEM").AddEntity(typeof(Item))); + + try + { + IList firstResult = (IList)multiQuery.GetResult("unknownKey"); + Assert.Fail("This should've thrown an InvalidOperationException"); + } + catch (InvalidOperationException) + { + } + catch (Exception) + { + Assert.Fail("This should've thrown an InvalidOperationException"); + } + + } + } + + [Test] + public void ExecutingQueryThroughMultiQueryTransformsResults() + { + CreateItems(); + + using (ISession session = OpenSession()) + { + ResultTransformerStub transformer = new ResultTransformerStub(); + IQuery query = session.CreateSQLQuery("select * from ITEM").AddEntity(typeof(Item)) + .SetResultTransformer(transformer); + session.CreateMultiQuery() + .Add(query) + .List(); + + Assert.IsTrue(transformer.WasTransformTupleCalled, "Transform Tuple was not called"); + Assert.IsTrue(transformer.WasTransformListCalled, "Transform List was not called"); + } + + RemoveAllItems(); + } + + [Test] + public void ExecutingQueryThroughMultiQueryTransformsResults_When_setting_on_multi_query_directly() + { + CreateItems(); + + using (ISession session = OpenSession()) + { + ResultTransformerStub transformer = new ResultTransformerStub(); + IQuery query = session.CreateSQLQuery("select * from ITEM").AddEntity(typeof(Item)); + session.CreateMultiQuery() + .Add(query) + .SetResultTransformer(transformer) + .List(); + + Assert.IsTrue(transformer.WasTransformTupleCalled, "Transform Tuple was not called"); + Assert.IsTrue(transformer.WasTransformListCalled, "Transform List was not called"); + } + + RemoveAllItems(); + } + + + [Test] + public void CanGetResultsInAGenericList() + { + using (ISession s = OpenSession()) + { + IQuery getItems = s.CreateQuery("from Item"); + IQuery countItems = s.CreateSQLQuery("select count(*) as count from ITEM").AddScalar("count", NHibernateUtil.Int64); + + IList results = s.CreateMultiQuery() + .Add(getItems) + .Add<long>(countItems) + .List(); + + Assert.That(results[0], Is.InstanceOf<ArrayList>()); + Assert.That(results[1], Is.InstanceOf<List<long>>()); + } + } + + public class ResultTransformerStub : IResultTransformer + { + private bool _wasTransformTupleCalled; + private bool _wasTransformListCalled; + + public bool WasTransformTupleCalled + { + get { return _wasTransformTupleCalled; } + } + + public bool WasTransformListCalled + { + get { return _wasTransformListCalled; } + } + + public ResultTransformerStub() + { + _wasTransformTupleCalled = false; + _wasTransformListCalled = false; + } + + public object TransformTuple(object[] tuple, string[] aliases) + { + _wasTransformTupleCalled = true; + return tuple; + } + + public IList TransformList(IList collection) + { + _wasTransformListCalled = true; + return collection; + } + } + } +} \ 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: <jul...@us...> - 2011-03-24 17:28:36
|
Revision: 5519 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5519&view=rev Author: julian-maughan Date: 2011-03-24 17:28:29 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Remove Test attribute from a method that is not a test Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs 2011-03-24 17:19:43 UTC (rev 5518) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1864/Fixture.cs 2011-03-24 17:28:29 UTC (rev 5519) @@ -7,26 +7,6 @@ public class Fixture : BugTestCase { [Test] - public void ExecuteQuery(Action<ISession> sessionModifier) - { - using (ISession session = OpenSession()) - { - using (ITransaction tx = session.BeginTransaction()) - { - sessionModifier(session); - session.CreateQuery( - @"select cat - from Invoice inv, Category cat - where cat.ValidUntil = :now and inv.Foo = :foo - ") - .SetInt32("foo", 42).SetDateTime("now", DateTime.Now).List(); - - tx.Commit(); - } - } - } - - [Test] public void Bug() { Assert.DoesNotThrow(() => ExecuteQuery(s=> s.EnableFilter("validity").SetParameter("date", DateTime.Now))); @@ -46,5 +26,24 @@ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now))); } + + private void ExecuteQuery(Action<ISession> sessionModifier) + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + sessionModifier(session); + + session + .CreateQuery(@"select cat from Invoice inv, Category cat where cat.ValidUntil = :now and inv.Foo = :foo") + .SetInt32("foo", 42) + .SetDateTime("now", DateTime.Now) + .List(); + + tx.Commit(); + } + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jul...@us...> - 2011-03-24 17:19:50
|
Revision: 5518 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5518&view=rev Author: julian-maughan Date: 2011-03-24 17:19:43 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Added data-type keywords to SQL Server dialects (NH-2554). Also updated the class-level XML comment block to reflect some recent changes to default properties. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Model.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-24 02:51:16 UTC (rev 5517) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-24 17:19:43 UTC (rev 5518) @@ -21,22 +21,22 @@ /// <remarks> /// The MsSql2000Dialect defaults the following configuration properties: /// <list type="table"> - /// <listheader> - /// <term>Property</term> - /// <description>Default Value</description> - /// </listheader> - /// <item> - /// <term>use_outer_join</term> - /// <description><see langword="true" /></description> - /// </item> - /// <item> - /// <term>connection.driver_class</term> - /// <description><see cref="NHibernate.Driver.SqlClientDriver" /></description> - /// </item> - /// <item> - /// <term>prepare_sql</term> - /// <description><see langword="false" /></description> - /// </item> + /// <listheader> + /// <term>Property</term> + /// <description>Default Value</description> + /// </listheader> + /// <item> + /// <term>connection.driver_class</term> + /// <description><see cref="NHibernate.Driver.SqlClientDriver" /></description> + /// </item> + /// <item> + /// <term>adonet.batch_size</term> + /// <description>10</description> + /// </item> + /// <item> + /// <term>query.substitutions</term> + /// <description>true 1, false 0, yes 'Y', no 'N'</description> + /// </item> /// </list> /// </remarks> public class MsSql2000Dialect : Dialect @@ -66,9 +66,34 @@ protected virtual void RegisterKeywords() { RegisterKeyword("top"); - RegisterKeyword("integer"); RegisterKeyword("int"); + RegisterKeyword("integer"); // a commonly-used alias for 'int' + RegisterKeyword("tinyint"); + RegisterKeyword("smallint"); + RegisterKeyword("bigint"); + RegisterKeyword("numeric"); + RegisterKeyword("decimal"); + RegisterKeyword("bit"); + RegisterKeyword("money"); + RegisterKeyword("smallmoney"); + RegisterKeyword("float"); + RegisterKeyword("real"); RegisterKeyword("datetime"); + RegisterKeyword("smalldatetime"); + RegisterKeyword("char"); + RegisterKeyword("varchar"); + RegisterKeyword("text"); + RegisterKeyword("nchar"); + RegisterKeyword("nvarchar"); + RegisterKeyword("ntext"); + RegisterKeyword("binary"); + RegisterKeyword("varbinary"); + RegisterKeyword("image"); + RegisterKeyword("cursor"); + RegisterKeyword("timestamp"); + RegisterKeyword("uniqueidentifier"); + RegisterKeyword("sql_variant"); + RegisterKeyword("table"); } protected virtual void RegisterFunctions() @@ -110,7 +135,6 @@ RegisterFunction("right", new SQLFunctionTemplate(NHibernateUtil.String, "right(?1, ?2)")); RegisterFunction("locate", new StandardSQLFunction("charindex", NHibernateUtil.Int32)); - RegisterFunction("current_timestamp", new NoArgSQLFunction("getdate", NHibernateUtil.DateTime, true)); RegisterFunction("second", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(second, ?1)")); RegisterFunction("minute", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(minute, ?1)")); @@ -149,6 +173,8 @@ protected virtual void RegisterDateTimeTypeMappings() { RegisterColumnType(DbType.Time, "DATETIME"); + RegisterColumnType(DbType.Date, "DATETIME"); + RegisterColumnType(DbType.DateTime, "DATETIME"); } protected virtual void RegisterNumericTypeMappings() @@ -156,15 +182,13 @@ RegisterColumnType(DbType.Boolean, "BIT"); RegisterColumnType(DbType.Byte, "TINYINT"); RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Date, "DATETIME"); - RegisterColumnType(DbType.DateTime, "DATETIME"); RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) RegisterColumnType(DbType.Int16, "SMALLINT"); RegisterColumnType(DbType.Int32, "INT"); RegisterColumnType(DbType.Int64, "BIGINT"); - RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) + RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) } protected virtual void RegisterCharacterTypeMappings() @@ -181,13 +205,11 @@ RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); } - /// <summary></summary> public override string AddColumnString { get { return "add"; } } - /// <summary></summary> public override string NullColumnString { get { return " null"; } @@ -213,7 +235,6 @@ get { return true; } } - /// <summary></summary> public override bool QualifyIndexName { get { return false; } @@ -253,7 +274,6 @@ get { return true; } } - /// <summary></summary> public override bool SupportsIdentityColumns { get { return true; } @@ -264,25 +284,21 @@ get { return "select SCOPE_IDENTITY()"; } } - /// <summary></summary> public override string IdentityColumnString { get { return "IDENTITY NOT NULL"; } } - /// <summary></summary> public override string NoColumnsInsertString { get { return "DEFAULT VALUES"; } } - /// <summary></summary> public override char CloseQuote { get { return ']'; } } - /// <summary></summary> public override char OpenQuote { get { return '['; } @@ -359,9 +375,7 @@ return true; } - /// <summary> - /// - /// </summary> + /// <summary /> /// <param name="name"></param> /// <returns></returns> /// <remarks> @@ -373,11 +387,6 @@ return OpenQuote + name.Replace(CloseQuote.ToString(), new string(CloseQuote, 2)) + CloseQuote; } - /// <summary> - /// - /// </summary> - /// <param name="quoted"></param> - /// <returns></returns> public override string UnQuote(string quoted) { if (IsQuoted(quoted)) @@ -505,13 +514,11 @@ string selectExistingObject = GetSelectExistingObject(name, table); return string.Format(@"if not exists ({0})", selectExistingObject); } + [Serializable] protected class CountBigQueryFunction : ClassicAggregateFunction { - public CountBigQueryFunction() - : base("count_big", true) - { - } + public CountBigQueryFunction() : base("count_big", true) { } public override IType ReturnType(IType columnType, IMapping mapping) { @@ -542,15 +549,12 @@ public override bool SupportsSqlBatches { - get - { - return true; - } + get { return true; } } public override bool IsKnownToken(string currentToken, string nextToken) { - return currentToken == "n" && nextToken == "'"; // unicode character + return currentToken == "n" && nextToken == "'"; // unicode character } } } Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-24 02:51:16 UTC (rev 5517) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-24 17:19:43 UTC (rev 5518) @@ -22,6 +22,12 @@ RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "VARBINARY(MAX)"); } + + protected override void RegisterKeywords() + { + base.RegisterKeywords(); + RegisterKeyword("xml"); + } /// <summary> /// Add a <c>LIMIT</c> clause to the given SQL <c>SELECT</c> @@ -63,7 +69,7 @@ SqlString fromAndWhere; SqlString[] sortExpressions; - //don't use the order index if it is contained within a larger statement(assuming + //don't use the order index if it is contained within a larger statement(assuming //a statement with non matching parenthesis is part of a larger block) if (orderIndex > 0 && HasMatchingParens(querySqlString.Substring(orderIndex).ToString())) { @@ -76,7 +82,7 @@ fromAndWhere = querySqlString.Substring(fromIndex).Trim(); // Use dummy sort to avoid errors sortExpressions = new[] {new SqlString("CURRENT_TIMESTAMP"),}; - } + } result .Add("SELECT TOP (") @@ -156,7 +162,7 @@ return 6; } throw new NotSupportedException("The query should start with 'SELECT' or 'SELECT DISTINCT'"); - } + } /// <summary> /// Indicates whether the string fragment contains matching parenthesis @@ -206,17 +212,17 @@ get { return true; } } - public override bool BindLimitParametersInReverseOrder + public override bool BindLimitParametersInReverseOrder { get { return true; } } - public override bool SupportsVariableLimit - { - get { return true; } + public override bool SupportsVariableLimit + { + get { return true; } } - public override bool BindLimitParametersFirst + public override bool BindLimitParametersFirst { get { return true; } } Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-24 02:51:16 UTC (rev 5517) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-24 17:19:43 UTC (rev 5518) @@ -24,8 +24,11 @@ protected override void RegisterKeywords() { base.RegisterKeywords(); + RegisterKeyword("date"); + RegisterKeyword("datetimeoffset"); RegisterKeyword("datetime2"); - RegisterKeyword("datetimeoffset"); + RegisterKeyword("time"); + RegisterKeyword("hierarchyid"); } } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Fixture.cs 2011-03-24 17:19:43 UTC (rev 5518) @@ -0,0 +1,92 @@ +using System; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2554 +{ + [TestFixture] + public class Fixture: BugTestCase + { + protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect) + { + return (dialect is NHibernate.Dialect.MsSql2005Dialect) || (dialect is NHibernate.Dialect.MsSql2008Dialect); + } + + protected override void Configure(NHibernate.Cfg.Configuration configuration) + { + configuration.SetProperty(NHibernate.Cfg.Environment.Hbm2ddlKeyWords, "keywords"); + base.Configure(configuration); + } + + protected override void OnSetUp() + { + base.OnSetUp(); + + using (ISession session = Sfi.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.Persist(new Student() { FullName = "Julian Maughan" }); + transaction.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession session = Sfi.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + session.CreateQuery("delete from Student").ExecuteUpdate(); + transaction.Commit(); + } + + base.OnTearDown(); + } + + [Test] + public void TestMappedFormulasContainingSqlServerDataTypeKeywords() + { + using (ISession session = Sfi.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + var students = session.CreateQuery("from Student").List<Student>(); + Assert.That(students.Count, Is.EqualTo(1)); + Assert.That(students[0].FullName, Is.StringMatching("Julian Maughan")); + Assert.That(students[0].FullNameAsVarBinary.Length, Is.EqualTo(28)); + Assert.That(students[0].FullNameAsVarBinary512.Length, Is.EqualTo(28)); + // Assert.That(students[0].FullNameAsBinary.Length, Is.EqualTo(28)); 30??? + Assert.That(students[0].FullNameAsBinary256.Length, Is.EqualTo(256)); + Assert.That(students[0].FullNameAsVarChar.Length, Is.EqualTo(14)); + Assert.That(students[0].FullNameAsVarChar125.Length, Is.EqualTo(14)); + + transaction.Commit(); + } + } + + [Test] + public void TestHqlStatementsContainingSqlServerDataTypeKeywords() + { + using (ISession session = Sfi.OpenSession()) + using (ITransaction transaction = session.BeginTransaction()) + { + var students = session + .CreateQuery("from Student where length(convert(varbinary, FullName)) = 28") + .List<Student>(); + + Assert.That(students.Count, Is.EqualTo(1)); + + students = session + .CreateQuery("from Student where length(convert(varbinary(256), FullName)) = 28") + .List<Student>(); + + Assert.That(students.Count, Is.EqualTo(1)); + + students = session + .CreateQuery("from Student where convert(int, 1) = 1") + .List<Student>(); + + Assert.That(students.Count, Is.EqualTo(1)); + + transaction.Commit(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Mappings.hbm.xml 2011-03-24 17:19:43 UTC (rev 5518) @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2554"> + + <class name="Student"> + + <id name="Id"> + <generator class="guid" /> + </id> + + <property name="FullName"> + <column name="full_name" sql-type="nvarchar(255)" not-null="true" /> + </property> + + <property name="FullNameAsVarBinary" formula="CONVERT(varbinary, full_name)" /> + + <property name="FullNameAsVarBinary512" formula="CONVERT(varbinary(512), full_name)" /> + + <property name="FullNameAsBinary" formula="CONVERT(binary, full_name)" /> + + <property name="FullNameAsBinary256" formula="CONVERT(binary(256), full_name)" /> + + <property name="FullNameAsVarChar" formula="CONVERT(varchar, full_name)" /> + + <property name="FullNameAsVarChar125" formula="CONVERT(varchar(125), 'Julian Maughan')" /> + + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2554/Model.cs 2011-03-24 17:19:43 UTC (rev 5518) @@ -0,0 +1,16 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH2554 +{ + public class Student + { + public virtual Guid Id { get; set; } + public virtual string FullName { get; set; } + public virtual byte[] FullNameAsVarBinary { get; set; } + public virtual byte[] FullNameAsVarBinary512 { get; set; } + public virtual byte[] FullNameAsBinary { get; set; } + public virtual byte[] FullNameAsBinary256 { get; set; } + public virtual string FullNameAsVarChar { get; set; } + public virtual string FullNameAsVarChar125 { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 02:51:16 UTC (rev 5517) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-24 17:19:43 UTC (rev 5518) @@ -655,6 +655,8 @@ <Compile Include="NHSpecificTest\NH2507\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2530\Domain.cs" /> <Compile Include="NHSpecificTest\NH2530\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2554\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2554\Model.cs" /> <Compile Include="NHSpecificTest\NH2565\Domain.cs" /> <Compile Include="NHSpecificTest\NH2565\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2580\Fixture.cs" /> @@ -2000,6 +2002,7 @@ <EmbeddedResource Include="ReadOnly\Enrolment.hbm.xml" /> <EmbeddedResource Include="ReadOnly\TextHolder.hbm.xml" /> <EmbeddedResource Include="ReadOnly\VersionedNode.hbm.xml" /> + <EmbeddedResource Include="NHSpecificTest\NH2554\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NHibernate.DomainModel\NHibernate.DomainModel.csproj"> @@ -2875,6 +2878,7 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> + <Folder Include="NHSpecificTest\NH2554" /> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-24 02:51:23
|
Revision: 5517 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5517&view=rev Author: patearl Date: 2011-03-24 02:51:16 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Don't run teardown if we didn't set things up. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/TestCase.cs Modified: trunk/nhibernate/src/NHibernate.Test/TestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2011-03-24 02:50:41 UTC (rev 5516) +++ trunk/nhibernate/src/NHibernate.Test/TestCase.cs 2011-03-24 02:51:16 UTC (rev 5517) @@ -120,7 +120,10 @@ [TestFixtureTearDown] public void TestFixtureTearDown() { - DropSchema(); + if (!AppliesTo(Dialect)) + return; + + DropSchema(); Cleanup(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-24 02:50:47
|
Revision: 5516 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5516&view=rev Author: patearl Date: 2011-03-24 02:50:41 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Ignore XML data tests for databases that don't support XML. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/TestDialect.cs trunk/nhibernate/src/NHibernate.Test/TestDialects/SQLiteTestDialect.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs Modified: trunk/nhibernate/src/NHibernate.Test/TestDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestDialect.cs 2011-03-24 02:50:00 UTC (rev 5515) +++ trunk/nhibernate/src/NHibernate.Test/TestDialect.cs 2011-03-24 02:50:41 UTC (rev 5516) @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; +using NHibernate.SqlTypes; namespace NHibernate.Test { @@ -17,10 +19,17 @@ string testDialectTypeName = "NHibernate.Test.TestDialects." + dialect.GetType().Name.Replace("Dialect", "TestDialect"); System.Type testDialectType = System.Type.GetType(testDialectTypeName); if (testDialectType != null) - return (TestDialect)Activator.CreateInstance(testDialectType); - return new TestDialect(); + return (TestDialect)Activator.CreateInstance(testDialectType, dialect); + return new TestDialect(dialect); } + private Dialect.Dialect dialect; + + public TestDialect(Dialect.Dialect dialect) + { + this.dialect = dialect; + } + public virtual bool SupportsOperatorAll { get { return true; } } public virtual bool SupportsOperatorSome { get { return true; } } public virtual bool SupportsLocate { get { return true; } } @@ -35,5 +44,18 @@ public virtual bool SupportsConcurrentTransactions { get { return true; } } public virtual bool SupportsFullJoin { get { return true; } } + + public bool SupportsSqlType(SqlType sqlType) + { + try + { + dialect.GetTypeName(sqlType); + return true; + } + catch + { + return false; + } + } } } Modified: trunk/nhibernate/src/NHibernate.Test/TestDialects/SQLiteTestDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TestDialects/SQLiteTestDialect.cs 2011-03-24 02:50:00 UTC (rev 5515) +++ trunk/nhibernate/src/NHibernate.Test/TestDialects/SQLiteTestDialect.cs 2011-03-24 02:50:41 UTC (rev 5516) @@ -7,6 +7,11 @@ { public class SQLiteTestDialect : TestDialect { + public SQLiteTestDialect(Dialect.Dialect dialect) + : base(dialect) + { + } + public override bool SupportsOperatorAll { get { return false; } Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs 2011-03-24 02:50:00 UTC (rev 5515) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs 2011-03-24 02:50:41 UTC (rev 5516) @@ -1,4 +1,6 @@ +using System.Data; using System.Xml.Linq; +using NHibernate.SqlTypes; using NHibernate.Type; using NUnit.Framework; using SharpTestsEx; @@ -13,6 +15,11 @@ get { return "XDoc"; } } + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return TestDialect.SupportsSqlType(new SqlType(DbType.Xml)); + } + [Test] public void ReadWrite() { Modified: trunk/nhibernate/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs 2011-03-24 02:50:00 UTC (rev 5515) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs 2011-03-24 02:50:41 UTC (rev 5516) @@ -1,4 +1,6 @@ +using System.Data; using System.Xml; +using NHibernate.SqlTypes; using NHibernate.Type; using NUnit.Framework; using SharpTestsEx; @@ -12,6 +14,11 @@ get { return "XmlDoc"; } } + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return TestDialect.SupportsSqlType(new SqlType(DbType.Xml)); + } + [Test] public void ReadWrite() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-24 02:50:06
|
Revision: 5515 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5515&view=rev Author: patearl Date: 2011-03-24 02:50:00 +0000 (Thu, 24 Mar 2011) Log Message: ----------- Improved SQLite type mapping to match the System.Data.SQLite provider, which is by far the dominant provider. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-23 21:48:51 UTC (rev 5514) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-24 02:50:00 UTC (rev 5515) @@ -24,28 +24,28 @@ public SQLiteDialect() { RegisterColumnType(DbType.Binary, "BLOB"); - RegisterColumnType(DbType.Byte, "INTEGER"); - RegisterColumnType(DbType.Int16, "INTEGER"); - RegisterColumnType(DbType.Int32, "INTEGER"); - RegisterColumnType(DbType.Int64, "INTEGER"); + RegisterColumnType(DbType.Byte, "TINYINT"); + RegisterColumnType(DbType.Int16, "SMALLINT"); + RegisterColumnType(DbType.Int32, "INT"); + RegisterColumnType(DbType.Int64, "BIGINT"); RegisterColumnType(DbType.SByte, "INTEGER"); RegisterColumnType(DbType.UInt16, "INTEGER"); RegisterColumnType(DbType.UInt32, "INTEGER"); RegisterColumnType(DbType.UInt64, "INTEGER"); RegisterColumnType(DbType.Currency, "NUMERIC"); RegisterColumnType(DbType.Decimal, "NUMERIC"); - RegisterColumnType(DbType.Double, "NUMERIC"); - RegisterColumnType(DbType.Single, "NUMERIC"); + RegisterColumnType(DbType.Double, "DOUBLE"); + RegisterColumnType(DbType.Single, "DOUBLE"); RegisterColumnType(DbType.VarNumeric, "NUMERIC"); RegisterColumnType(DbType.AnsiString, "TEXT"); RegisterColumnType(DbType.String, "TEXT"); RegisterColumnType(DbType.AnsiStringFixedLength, "TEXT"); RegisterColumnType(DbType.StringFixedLength, "TEXT"); - RegisterColumnType(DbType.Date, "DATETIME"); + RegisterColumnType(DbType.Date, "DATE"); RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Time, "DATETIME"); - RegisterColumnType(DbType.Boolean, "INTEGER"); + RegisterColumnType(DbType.Time, "TIME"); + RegisterColumnType(DbType.Boolean, "BOOL"); RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); // Using strftime returns 0-padded strings. '07' <> 7, so it is better to convert to an integer. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-23 21:48:57
|
Revision: 5514 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5514&view=rev Author: fabiomaulo Date: 2011-03-23 21:48:51 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Fix NH-2580 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2011-03-23 18:41:28 UTC (rev 5513) +++ trunk/nhibernate/src/NHibernate/Event/Default/DefaultLoadEventListener.cs 2011-03-23 21:48:51 UTC (rev 5514) @@ -41,7 +41,13 @@ if (persister == null) { - throw new HibernateException("Unable to locate persister: " + @event.EntityClassName); + + var message = new StringBuilder(512); + message.AppendLine(string.Format("Unable to locate persister for the entity named '{0}'.", @event.EntityClassName)); + message.AppendLine("The persister define the persistence strategy for an entity."); + message.AppendLine("Possible causes:"); + message.AppendLine(string.Format(" - The mapping for '{0}' was not added to the NHibernate configuration.", @event.EntityClassName)); + throw new HibernateException(message.ToString()); } if (persister.IdentifierType.IsComponentType) Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Fixture.cs 2011-03-23 21:48:51 UTC (rev 5514) @@ -0,0 +1,23 @@ +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2580 +{ + public class Fixture: BugTestCase + { + private class MyClass + { + + } + + [Test] + public void WhenPersisterNotFoundShouldThrowAMoreExplicitException() + { + using (var s = OpenSession()) + { + var exeption = s.Executing(x=> x.Get<MyClass>(1)).Throws<HibernateException>().Exception; + exeption.Message.ToLowerInvariant().Should().Contain("possible cause"); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2580/Mappings.hbm.xml 2011-03-23 21:48:51 UTC (rev 5514) @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-23 18:41:28 UTC (rev 5513) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-23 21:48:51 UTC (rev 5514) @@ -657,6 +657,7 @@ <Compile Include="NHSpecificTest\NH2530\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2565\Domain.cs" /> <Compile Include="NHSpecificTest\NH2565\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2580\Fixture.cs" /> <Compile Include="NHSpecificTest\Properties\CompositePropertyRefTest.cs" /> <Compile Include="NHSpecificTest\Properties\DynamicEntityTest.cs" /> <Compile Include="NHSpecificTest\Properties\Model.cs" /> @@ -2479,6 +2480,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2580\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2390\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2491\Mappings.hbm.xml" /> <EmbeddedResource Include="Insertordering\Mapping.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-23 18:41:34
|
Revision: 5513 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5513&view=rev Author: patearl Date: 2011-03-23 18:41:28 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Support ToString in Linq expressions (NH-2563). Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Linq/Functions/DefaultLinqToHqlGeneratorsRegistry.cs trunk/nhibernate/src/NHibernate/Linq/Functions/StringGenerator.cs trunk/nhibernate/src/NHibernate.Test/Linq/FunctionTests.cs Modified: trunk/nhibernate/src/NHibernate/Linq/Functions/DefaultLinqToHqlGeneratorsRegistry.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/Functions/DefaultLinqToHqlGeneratorsRegistry.cs 2011-03-23 18:29:04 UTC (rev 5512) +++ trunk/nhibernate/src/NHibernate/Linq/Functions/DefaultLinqToHqlGeneratorsRegistry.cs 2011-03-23 18:41:28 UTC (rev 5513) @@ -18,6 +18,7 @@ RegisterGenerator(new DictionaryContainsKeyRuntimeHqlGenerator()); RegisterGenerator(new GenericDictionaryItemRuntimeHqlGenerator()); RegisterGenerator(new GenericDictionaryContainsKeyRuntimeHqlGenerator()); + RegisterGenerator(new ToStringRuntimeMethodHqlGenerator()); this.Merge(new StartsWithGenerator()); this.Merge(new EndsWithGenerator()); Modified: trunk/nhibernate/src/NHibernate/Linq/Functions/StringGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/Functions/StringGenerator.cs 2011-03-23 18:29:04 UTC (rev 5512) +++ trunk/nhibernate/src/NHibernate/Linq/Functions/StringGenerator.cs 2011-03-23 18:41:28 UTC (rev 5513) @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq.Expressions; using System.Reflection; @@ -193,4 +195,31 @@ } } + public class ToStringRuntimeMethodHqlGenerator : IRuntimeMethodHqlGenerator + { + private readonly ToStringHqlGeneratorForMethod generator = new ToStringHqlGeneratorForMethod(); + + public bool SupportsMethod(MethodInfo method) + { + return method != null && method.Name == "ToString" && method.GetBaseDefinition().DeclaringType == typeof(object); + } + + public IHqlGeneratorForMethod GetMethodGenerator(MethodInfo method) + { + return generator; + } + } + + public class ToStringHqlGeneratorForMethod : IHqlGeneratorForMethod + { + public IEnumerable<MethodInfo> SupportedMethods + { + get { throw new NotSupportedException(); } + } + + public HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) + { + return treeBuilder.MethodCall("str", visitor.Visit(targetObject).AsExpression()); + } + } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/Linq/FunctionTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/FunctionTests.cs 2011-03-23 18:29:04 UTC (rev 5512) +++ trunk/nhibernate/src/NHibernate.Test/Linq/FunctionTests.cs 2011-03-23 18:41:28 UTC (rev 5513) @@ -90,5 +90,25 @@ ObjectDumper.Write(query); } - } + + [Test] + public void ToStringFunction() + { + var query = from ol in db.OrderLines + where ol.Quantity.ToString() == "4" + select ol; + + Assert.AreEqual(55, query.Count()); + } + + [Test] + public void ToStringWithContains() + { + var query = from ol in db.OrderLines + where ol.Quantity.ToString().Contains("5") + select ol; + + Assert.AreEqual(498, query.Count()); + } + } } \ 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...> - 2011-03-23 18:29:10
|
Revision: 5512 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5512&view=rev Author: fabiomaulo Date: 2011-03-23 18:29:04 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Removed time-out from default values of MsSql Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:49:43 UTC (rev 5511) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 18:29:04 UTC (rev 5512) @@ -60,7 +60,6 @@ { DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; DefaultProperties[Environment.BatchSize] = "20"; - DefaultProperties[Environment.CommandTimeout] = "10"; DefaultProperties[Environment.QuerySubstitutions] = "true 1, false 0, yes 'Y', no 'N'"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-23 16:49:50
|
Revision: 5511 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5511&view=rev Author: fabiomaulo Date: 2011-03-23 16:49:43 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Fix NH-2593 Modified Paths: -------------- trunk/nhibernate/releasenotes.txt trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs Modified: trunk/nhibernate/releasenotes.txt =================================================================== --- trunk/nhibernate/releasenotes.txt 2011-03-23 16:16:19 UTC (rev 5510) +++ trunk/nhibernate/releasenotes.txt 2011-03-23 16:49:43 UTC (rev 5511) @@ -1,3 +1,9 @@ +** Known BREAKING CHANGES from NH3.1.0.GA to NH3.2.0.GA + + ##### Possible Breaking Changes ##### + * [NH-2550] - Allow public access to FieldInterceptor Session (IFieldInterceptor changed) + * [NH-2593] - Form Microsoft SQL Server the default batch-size (adonet.batch_size) is set to 20 where not explicit defined in the session-factory configuration + Build 3.1.0.GA (rev5425) ============================= Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:49:43 UTC (rev 5511) @@ -59,6 +59,9 @@ protected virtual void RegisterDefaultProperties() { DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + DefaultProperties[Environment.BatchSize] = "20"; + DefaultProperties[Environment.CommandTimeout] = "10"; + DefaultProperties[Environment.QuerySubstitutions] = "true 1, false 0, yes 'Y', no 'N'"; } protected virtual void RegisterKeywords() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-23 16:16:25
|
Revision: 5510 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5510&view=rev Author: fabiomaulo Date: 2011-03-23 16:16:19 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Minor refactoring (organized stuff in methods) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -43,34 +43,34 @@ { public MsSql2000Dialect() { - RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); - RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); - RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); - RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); - RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); - RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); - RegisterColumnType(DbType.Boolean, "BIT"); - RegisterColumnType(DbType.Byte, "TINYINT"); - RegisterColumnType(DbType.Currency, "MONEY"); - RegisterColumnType(DbType.Date, "DATETIME"); - RegisterColumnType(DbType.DateTime, "DATETIME"); - RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); - RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); - RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) - RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); - RegisterColumnType(DbType.Int16, "SMALLINT"); - RegisterColumnType(DbType.Int32, "INT"); - RegisterColumnType(DbType.Int64, "BIGINT"); - RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) - RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); - RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); - RegisterColumnType(DbType.String, "NVARCHAR(255)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); - RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); - RegisterColumnType(DbType.Time, "DATETIME"); + RegisterCharacterTypeMappings(); + RegisterNumericTypeMappings(); + RegisterDateTimeTypeMappings(); + RegisterLargeObjectTypeMappings(); + RegisterGuidTypeMapping(); + RegisterFunctions(); + + RegisterKeywords(); + + RegisterDefaultProperties(); + } + + protected virtual void RegisterDefaultProperties() + { + DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + } + + protected virtual void RegisterKeywords() + { + RegisterKeyword("top"); + RegisterKeyword("integer"); + RegisterKeyword("int"); + RegisterKeyword("datetime"); + } + + protected virtual void RegisterFunctions() + { RegisterFunction("count", new CountBigQueryFunction()); RegisterFunction("abs", new StandardSQLFunction("abs")); @@ -116,8 +116,8 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(month, ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(year, ?1)")); - RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); + RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); RegisterFunction("digits", new StandardSQLFunction("digits", NHibernateUtil.String)); RegisterFunction("chr", new StandardSQLFunction("chr", NHibernateUtil.Character)); RegisterFunction("upper", new StandardSQLFunction("upper")); @@ -130,15 +130,55 @@ RegisterFunction("trim", new AnsiTrimEmulationFunction()); RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); RegisterFunction("replace", new StandardSafeSQLFunction("replace", NHibernateUtil.String, 3)); + } - RegisterKeyword("top"); - RegisterKeyword("integer"); - RegisterKeyword("int"); - RegisterKeyword("datetime"); + protected virtual void RegisterGuidTypeMapping() + { + RegisterColumnType(DbType.Guid, "UNIQUEIDENTIFIER"); + } - DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver"; + protected virtual void RegisterLargeObjectTypeMappings() + { + RegisterColumnType(DbType.Binary, "VARBINARY(8000)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForLengthLimitedBinary, "VARBINARY($l)"); + RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "IMAGE"); } + protected virtual void RegisterDateTimeTypeMappings() + { + RegisterColumnType(DbType.Time, "DATETIME"); + } + + protected virtual void RegisterNumericTypeMappings() + { + RegisterColumnType(DbType.Boolean, "BIT"); + RegisterColumnType(DbType.Byte, "TINYINT"); + RegisterColumnType(DbType.Currency, "MONEY"); + RegisterColumnType(DbType.Date, "DATETIME"); + RegisterColumnType(DbType.DateTime, "DATETIME"); + RegisterColumnType(DbType.Decimal, "DECIMAL(19,5)"); + RegisterColumnType(DbType.Decimal, 19, "DECIMAL($p, $s)"); + RegisterColumnType(DbType.Double, "DOUBLE PRECISION"); //synonym for FLOAT(53) + RegisterColumnType(DbType.Int16, "SMALLINT"); + RegisterColumnType(DbType.Int32, "INT"); + RegisterColumnType(DbType.Int64, "BIGINT"); + RegisterColumnType(DbType.Single, "REAL"); //synonym for FLOAT(24) + } + + protected virtual void RegisterCharacterTypeMappings() + { + RegisterColumnType(DbType.AnsiStringFixedLength, "CHAR(255)"); + RegisterColumnType(DbType.AnsiStringFixedLength, 8000, "CHAR($l)"); + RegisterColumnType(DbType.AnsiString, "VARCHAR(255)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForLengthLimitedAnsiString, "VARCHAR($l)"); + RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "TEXT"); + RegisterColumnType(DbType.StringFixedLength, "NCHAR(255)"); + RegisterColumnType(DbType.StringFixedLength, SqlClientDriver.MaxSizeForLengthLimitedString, "NCHAR($l)"); + RegisterColumnType(DbType.String, "NVARCHAR(255)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForLengthLimitedString, "NVARCHAR($l)"); + RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NTEXT"); + } + /// <summary></summary> public override string AddColumnString { Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2005Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -12,10 +12,15 @@ { public MsSql2005Dialect() { + RegisterColumnType(DbType.Xml, "XML"); + } + + protected override void RegisterCharacterTypeMappings() + { + base.RegisterCharacterTypeMappings(); RegisterColumnType(DbType.String, SqlClientDriver.MaxSizeForClob, "NVARCHAR(MAX)"); RegisterColumnType(DbType.AnsiString, SqlClientDriver.MaxSizeForAnsiClob, "VARCHAR(MAX)"); RegisterColumnType(DbType.Binary, SqlClientDriver.MaxSizeForBlob, "VARBINARY(MAX)"); - RegisterColumnType(DbType.Xml, "XML"); } /// <summary> Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 15:41:09 UTC (rev 5509) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2008Dialect.cs 2011-03-23 16:16:19 UTC (rev 5510) @@ -5,15 +5,25 @@ { public class MsSql2008Dialect : MsSql2005Dialect { - public MsSql2008Dialect() + protected override void RegisterDateTimeTypeMappings() { + base.RegisterDateTimeTypeMappings(); RegisterColumnType(DbType.DateTime2, "DATETIME2"); RegisterColumnType(DbType.DateTimeOffset, "DATETIMEOFFSET"); RegisterColumnType(DbType.Date, "DATE"); RegisterColumnType(DbType.Time, "TIME"); + } + protected override void RegisterFunctions() + { + base.RegisterFunctions(); RegisterFunction("current_timestamp", new NoArgSQLFunction("sysdatetime", NHibernateUtil.DateTime2, true)); RegisterFunction("current_timestamp_offset", new NoArgSQLFunction("sysdatetimeoffset", NHibernateUtil.DateTimeOffset, true)); + } + + protected override void RegisterKeywords() + { + base.RegisterKeywords(); RegisterKeyword("datetime2"); RegisterKeyword("datetimeoffset"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-23 15:41:17
|
Revision: 5509 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5509&view=rev Author: fabiomaulo Date: 2011-03-23 15:41:09 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Apply NH-2548 (thanks to Mihai Codrean) Modified Paths: -------------- trunk/nhibernate/ShowBuildMenu.bat trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/SqlGenerator.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.g trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/CaseNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IntoClause.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SelectClause.cs trunk/nhibernate/src/NHibernate/Hql/NameGenerator.cs trunk/nhibernate/src/NHibernate.Test/HQL/Ast/HqlFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrSqlGenerator.bat Modified: trunk/nhibernate/ShowBuildMenu.bat =================================================================== --- trunk/nhibernate/ShowBuildMenu.bat 2011-03-23 14:27:03 UTC (rev 5508) +++ trunk/nhibernate/ShowBuildMenu.bat 2011-03-23 15:41:09 UTC (rev 5509) @@ -119,9 +119,10 @@ echo --- GRAMMAR --- echo A. Regenerate HqlLexer.cs and HqlParser.cs from Hql.g. echo B. Regenerate HqlSqlWalker.cs from HqlSqlWalker.g. -echo C. Regenerate Hql.g in debug mode. -echo D. Regenerate HqlSqlWalker.g in debug mode. -echo E. Quick instructions on using debug mode. +echo C. Regenerate SqlGenerator.cs from SqlGenerator.g. +echo D. Regenerate Hql.g in debug mode. +echo E. Regenerate HqlSqlWalker.g in debug mode. +echo H. Quick instructions on using debug mode. echo. if exist %SYSTEMROOT%\System32\choice.exe ( goto grammar-prompt-choice ) @@ -139,13 +140,14 @@ if errorlevel 0 goto end :grammar-prompt-set -set /p OPT=[A, B, C, D, E]? +set /p OPT=[A, B, C, D, E, H]? if /I "%OPT%"=="A" goto antlr-hql if /I "%OPT%"=="B" goto antlr-hqlsqlwalker -if /I "%OPT%"=="C" goto antlr-hql-debug -if /I "%OPT%"=="D" goto antlr-hqlsqlwalker-debug -if /I "%OPT%"=="E" goto antlr-debug +if /I "%OPT%"=="C" goto antlr-sqlgenerator +if /I "%OPT%"=="D" goto antlr-hql-debug +if /I "%OPT%"=="E" goto antlr-hqlsqlwalker-debug +if /I "%OPT%"=="H" goto antlr-debug goto grammar-prompt-set :antlr-hql @@ -156,6 +158,10 @@ call src\NHibernate\Hql\Ast\ANTLR\AntlrHqlSqlWalker.bat goto end +:antlr-sqlgenerator +call src\NHibernate\Hql\Ast\ANTLR\AntlrSqlGenerator.bat +goto end + :antlr-hql-debug call src\NHibernate\Hql\Ast\ANTLR\AntlrHqlDebug.bat goto end Added: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrSqlGenerator.bat =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrSqlGenerator.bat (rev 0) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/AntlrSqlGenerator.bat 2011-03-23 15:41:09 UTC (rev 5509) @@ -0,0 +1,5 @@ +rem I wanted to put this in the nant build file, but I had very annoying problems with 64-bit java running from the 32-bit nant process. +@echo off +pushd %~dp0 +java.exe -cp ..\..\..\..\..\Tools\Antlr\antlr-3.2.jar org.antlr.Tool -o Generated SqlGenerator.g +popd \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs 2011-03-23 14:27:03 UTC (rev 5508) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Generated/HqlSqlWalker.cs 2011-03-23 15:41:09 UTC (rev 5509) @@ -1,4 +1,4 @@ -// $ANTLR 3.2 Sep 23, 2009 12:02:23 HqlSqlWalker.g 2011-01-15 10:39:02 +// $ANTLR 3.2 Sep 23, 2009 12:02:23 HqlSqlWalker.g 2011-03-23 12:04:52 // The variable 'variable' is assigned but its value is never used. #pragma warning disable 168, 219 @@ -677,16 +677,16 @@ // AST REWRITE - // elements: s, u, f, w + // elements: u, w, s, f // token labels: u - // rule labels: w, f, retval, s + // rule labels: f, w, retval, s // token list labels: // rule list labels: // wildcard labels: retval.Tree = root_0; RewriteRuleNodeStream stream_u = new RewriteRuleNodeStream(adaptor, "token u", u); + RewriteRuleSubtreeStream stream_f = new RewriteRuleSubtreeStream(adaptor, "rule f", f!=null ? f.Tree : null); RewriteRuleSubtreeStream stream_w = new RewriteRuleSubtreeStream(adaptor, "rule w", w!=null ? w.Tree : null); - RewriteRuleSubtreeStream stream_f = new RewriteRuleSubtreeStream(adaptor, "rule f", f!=null ? f.Tree : null); RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); RewriteRuleSubtreeStream stream_s = new RewriteRuleSubtreeStream(adaptor, "rule s", s!=null ? s.Tree : null); @@ -1757,15 +1757,15 @@ // AST REWRITE - // elements: o, g, s, w, f + // elements: s, o, f, g, w // token labels: - // rule labels: f, w, g, retval, s, o + // rule labels: w, f, g, retval, s, o // token list labels: // rule list labels: // wildcard labels: retval.Tree = root_0; + RewriteRuleSubtreeStream stream_w = new RewriteRuleSubtreeStream(adaptor, "rule w", w!=null ? w.Tree : null); RewriteRuleSubtreeStream stream_f = new RewriteRuleSubtreeStream(adaptor, "rule f", f!=null ? f.Tree : null); - RewriteRuleSubtreeStream stream_w = new RewriteRuleSubtreeStream(adaptor, "rule w", w!=null ? w.Tree : null); RewriteRuleSubtreeStream stream_g = new RewriteRuleSubtreeStream(adaptor, "rule g", g!=null ? g.Tree : null); RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); RewriteRuleSubtreeStream stream_s = new RewriteRuleSubtreeStream(adaptor, "rule s", s!=null ? s.Tree : null); @@ -2377,7 +2377,7 @@ int alt18 = 3; int LA18_0 = input.LA(1); - if ( (LA18_0 == ALL || LA18_0 == COUNT || LA18_0 == DOT || LA18_0 == ELEMENTS || LA18_0 == INDICES || LA18_0 == UNION || LA18_0 == CASE || LA18_0 == OBJECT || LA18_0 == AGGREGATE || (LA18_0 >= CONSTRUCTOR && LA18_0 <= CASE2) || LA18_0 == METHOD_CALL || LA18_0 == QUERY || LA18_0 == UNARY_MINUS || LA18_0 == WEIRD_IDENT || (LA18_0 >= NUM_INT && LA18_0 <= NUM_LONG) || (LA18_0 >= BNOT && LA18_0 <= DIV) || (LA18_0 >= QUOTED_String && LA18_0 <= IDENT)) ) + if ( (LA18_0 == ALL || LA18_0 == COUNT || LA18_0 == DOT || LA18_0 == ELEMENTS || LA18_0 == INDICES || LA18_0 == UNION || LA18_0 == CASE || LA18_0 == OBJECT || LA18_0 == AGGREGATE || (LA18_0 >= CONSTRUCTOR && LA18_0 <= CASE2) || LA18_0 == METHOD_CALL || LA18_0 == QUERY || LA18_0 == UNARY_MINUS || LA18_0 == WEIRD_IDENT || (LA18_0 >= NUM_INT && LA18_0 <= NUM_LONG) || (LA18_0 >= BNOT && LA18_0 <= DIV) || (LA18_0 >= COLON && LA18_0 <= IDENT)) ) { alt18 = 1; } @@ -2546,7 +2546,7 @@ }; // $ANTLR start "selectExpr" - // HqlSqlWalker.g:173:1: selectExpr : (p= propertyRef | ^( ALL ar2= aliasRef ) | ^( OBJECT ar3= aliasRef ) | con= constructor | functionCall | count | collectionFunction | literal | arithmeticExpr | query ); + // HqlSqlWalker.g:173:1: selectExpr : (p= propertyRef | ^( ALL ar2= aliasRef ) | ^( OBJECT ar3= aliasRef ) | con= constructor | functionCall | parameter | count | collectionFunction | literal | arithmeticExpr | query ); public HqlSqlWalker.selectExpr_return selectExpr() // throws RecognitionException [1] { HqlSqlWalker.selectExpr_return retval = new HqlSqlWalker.selectExpr_return(); @@ -2569,24 +2569,26 @@ HqlSqlWalker.functionCall_return functionCall42 = default(HqlSqlWalker.functionCall_return); - HqlSqlWalker.count_return count43 = default(HqlSqlWalker.count_return); + HqlSqlWalker.parameter_return parameter43 = default(HqlSqlWalker.parameter_return); - HqlSqlWalker.collectionFunction_return collectionFunction44 = default(HqlSqlWalker.collectionFunction_return); + HqlSqlWalker.count_return count44 = default(HqlSqlWalker.count_return); - HqlSqlWalker.literal_return literal45 = default(HqlSqlWalker.literal_return); + HqlSqlWalker.collectionFunction_return collectionFunction45 = default(HqlSqlWalker.collectionFunction_return); - HqlSqlWalker.arithmeticExpr_return arithmeticExpr46 = default(HqlSqlWalker.arithmeticExpr_return); + HqlSqlWalker.literal_return literal46 = default(HqlSqlWalker.literal_return); - HqlSqlWalker.query_return query47 = default(HqlSqlWalker.query_return); + HqlSqlWalker.arithmeticExpr_return arithmeticExpr47 = default(HqlSqlWalker.arithmeticExpr_return); + HqlSqlWalker.query_return query48 = default(HqlSqlWalker.query_return); + IASTNode ALL40_tree=null; IASTNode OBJECT41_tree=null; try { - // HqlSqlWalker.g:174:2: (p= propertyRef | ^( ALL ar2= aliasRef ) | ^( OBJECT ar3= aliasRef ) | con= constructor | functionCall | count | collectionFunction | literal | arithmeticExpr | query ) - int alt19 = 10; + // HqlSqlWalker.g:174:2: (p= propertyRef | ^( ALL ar2= aliasRef ) | ^( OBJECT ar3= aliasRef ) | con= constructor | functionCall | parameter | count | collectionFunction | literal | arithmeticExpr | query ) + int alt19 = 11; switch ( input.LA(1) ) { case DOT: @@ -2617,15 +2619,21 @@ alt19 = 5; } break; - case COUNT: + case COLON: + case PARAM: { alt19 = 6; } break; + case COUNT: + { + alt19 = 7; + } + break; case ELEMENTS: case INDICES: { - alt19 = 7; + alt19 = 8; } break; case NUM_INT: @@ -2635,7 +2643,7 @@ case NUM_LONG: case QUOTED_String: { - alt19 = 8; + alt19 = 9; } break; case CASE: @@ -2650,13 +2658,13 @@ case STAR: case DIV: { - alt19 = 9; + alt19 = 10; } break; case UNION: case QUERY: { - alt19 = 10; + alt19 = 11; } break; default: @@ -2777,76 +2785,90 @@ } break; case 6 : - // HqlSqlWalker.g:179:4: count + // HqlSqlWalker.g:179:4: parameter { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_count_in_selectExpr847); - count43 = count(); + PushFollow(FOLLOW_parameter_in_selectExpr847); + parameter43 = parameter(); state.followingStackPointer--; - adaptor.AddChild(root_0, count43.Tree); + adaptor.AddChild(root_0, parameter43.Tree); } break; case 7 : - // HqlSqlWalker.g:180:4: collectionFunction + // HqlSqlWalker.g:180:4: count { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_collectionFunction_in_selectExpr852); - collectionFunction44 = collectionFunction(); + PushFollow(FOLLOW_count_in_selectExpr852); + count44 = count(); state.followingStackPointer--; - adaptor.AddChild(root_0, collectionFunction44.Tree); + adaptor.AddChild(root_0, count44.Tree); } break; case 8 : - // HqlSqlWalker.g:181:4: literal + // HqlSqlWalker.g:181:4: collectionFunction { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_literal_in_selectExpr860); - literal45 = literal(); + PushFollow(FOLLOW_collectionFunction_in_selectExpr857); + collectionFunction45 = collectionFunction(); state.followingStackPointer--; - adaptor.AddChild(root_0, literal45.Tree); + adaptor.AddChild(root_0, collectionFunction45.Tree); } break; case 9 : - // HqlSqlWalker.g:182:4: arithmeticExpr + // HqlSqlWalker.g:182:4: literal { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_arithmeticExpr_in_selectExpr865); - arithmeticExpr46 = arithmeticExpr(); + PushFollow(FOLLOW_literal_in_selectExpr865); + literal46 = literal(); state.followingStackPointer--; - adaptor.AddChild(root_0, arithmeticExpr46.Tree); + adaptor.AddChild(root_0, literal46.Tree); } break; case 10 : - // HqlSqlWalker.g:183:4: query + // HqlSqlWalker.g:183:4: arithmeticExpr { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_query_in_selectExpr870); - query47 = query(); + PushFollow(FOLLOW_arithmeticExpr_in_selectExpr870); + arithmeticExpr47 = arithmeticExpr(); state.followingStackPointer--; - adaptor.AddChild(root_0, query47.Tree); + adaptor.AddChild(root_0, arithmeticExpr47.Tree); } break; + case 11 : + // HqlSqlWalker.g:184:4: query + { + root_0 = (IASTNode)adaptor.GetNilNode(); + _last = (IASTNode)input.LT(1); + PushFollow(FOLLOW_query_in_selectExpr875); + query48 = query(); + state.followingStackPointer--; + + adaptor.AddChild(root_0, query48.Tree); + + } + break; + } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); @@ -2874,7 +2896,7 @@ }; // $ANTLR start "count" - // HqlSqlWalker.g:186:1: count : ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) ; + // HqlSqlWalker.g:187:1: count : ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) ; public HqlSqlWalker.count_return count() // throws RecognitionException [1] { HqlSqlWalker.count_return retval = new HqlSqlWalker.count_return(); @@ -2885,20 +2907,20 @@ IASTNode _first_0 = null; IASTNode _last = null; - IASTNode COUNT48 = null; - IASTNode set49 = null; - IASTNode ROW_STAR51 = null; - HqlSqlWalker.aggregateExpr_return aggregateExpr50 = default(HqlSqlWalker.aggregateExpr_return); + IASTNode COUNT49 = null; + IASTNode set50 = null; + IASTNode ROW_STAR52 = null; + HqlSqlWalker.aggregateExpr_return aggregateExpr51 = default(HqlSqlWalker.aggregateExpr_return); - IASTNode COUNT48_tree=null; - IASTNode set49_tree=null; - IASTNode ROW_STAR51_tree=null; + IASTNode COUNT49_tree=null; + IASTNode set50_tree=null; + IASTNode ROW_STAR52_tree=null; try { - // HqlSqlWalker.g:187:2: ( ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) ) - // HqlSqlWalker.g:187:4: ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) + // HqlSqlWalker.g:188:2: ( ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) ) + // HqlSqlWalker.g:188:4: ^( COUNT ( DISTINCT | ALL )? ( aggregateExpr | ROW_STAR ) ) { root_0 = (IASTNode)adaptor.GetNilNode(); @@ -2907,15 +2929,15 @@ IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - COUNT48=(IASTNode)Match(input,COUNT,FOLLOW_COUNT_in_count882); - COUNT48_tree = (IASTNode)adaptor.DupNode(COUNT48); + COUNT49=(IASTNode)Match(input,COUNT,FOLLOW_COUNT_in_count887); + COUNT49_tree = (IASTNode)adaptor.DupNode(COUNT49); - root_1 = (IASTNode)adaptor.BecomeRoot(COUNT48_tree, root_1); + root_1 = (IASTNode)adaptor.BecomeRoot(COUNT49_tree, root_1); Match(input, Token.DOWN, null); - // HqlSqlWalker.g:187:12: ( DISTINCT | ALL )? + // HqlSqlWalker.g:188:12: ( DISTINCT | ALL )? int alt20 = 2; int LA20_0 = input.LA(1); @@ -2929,14 +2951,14 @@ // HqlSqlWalker.g: { _last = (IASTNode)input.LT(1); - set49 = (IASTNode)input.LT(1); + set50 = (IASTNode)input.LT(1); if ( input.LA(1) == ALL || input.LA(1) == DISTINCT ) { input.Consume(); - set49_tree = (IASTNode)adaptor.DupNode(set49); + set50_tree = (IASTNode)adaptor.DupNode(set50); - adaptor.AddChild(root_1, set49_tree); + adaptor.AddChild(root_1, set50_tree); state.errorRecovery = false; } @@ -2952,7 +2974,7 @@ } - // HqlSqlWalker.g:187:32: ( aggregateExpr | ROW_STAR ) + // HqlSqlWalker.g:188:32: ( aggregateExpr | ROW_STAR ) int alt21 = 2; int LA21_0 = input.LA(1); @@ -2974,25 +2996,25 @@ switch (alt21) { case 1 : - // HqlSqlWalker.g:187:34: aggregateExpr + // HqlSqlWalker.g:188:34: aggregateExpr { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_aggregateExpr_in_count897); - aggregateExpr50 = aggregateExpr(); + PushFollow(FOLLOW_aggregateExpr_in_count902); + aggregateExpr51 = aggregateExpr(); state.followingStackPointer--; - adaptor.AddChild(root_1, aggregateExpr50.Tree); + adaptor.AddChild(root_1, aggregateExpr51.Tree); } break; case 2 : - // HqlSqlWalker.g:187:50: ROW_STAR + // HqlSqlWalker.g:188:50: ROW_STAR { _last = (IASTNode)input.LT(1); - ROW_STAR51=(IASTNode)Match(input,ROW_STAR,FOLLOW_ROW_STAR_in_count901); - ROW_STAR51_tree = (IASTNode)adaptor.DupNode(ROW_STAR51); + ROW_STAR52=(IASTNode)Match(input,ROW_STAR,FOLLOW_ROW_STAR_in_count906); + ROW_STAR52_tree = (IASTNode)adaptor.DupNode(ROW_STAR52); - adaptor.AddChild(root_1, ROW_STAR51_tree); + adaptor.AddChild(root_1, ROW_STAR52_tree); } @@ -3033,7 +3055,7 @@ }; // $ANTLR start "constructor" - // HqlSqlWalker.g:190:1: constructor : ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) ; + // HqlSqlWalker.g:191:1: constructor : ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) ; public HqlSqlWalker.constructor_return constructor() // throws RecognitionException [1] { HqlSqlWalker.constructor_return retval = new HqlSqlWalker.constructor_return(); @@ -3044,20 +3066,20 @@ IASTNode _first_0 = null; IASTNode _last = null; - IASTNode CONSTRUCTOR52 = null; - HqlSqlWalker.path_return path53 = default(HqlSqlWalker.path_return); + IASTNode CONSTRUCTOR53 = null; + HqlSqlWalker.path_return path54 = default(HqlSqlWalker.path_return); - HqlSqlWalker.selectExpr_return selectExpr54 = default(HqlSqlWalker.selectExpr_return); + HqlSqlWalker.selectExpr_return selectExpr55 = default(HqlSqlWalker.selectExpr_return); - HqlSqlWalker.aliasedSelectExpr_return aliasedSelectExpr55 = default(HqlSqlWalker.aliasedSelectExpr_return); + HqlSqlWalker.aliasedSelectExpr_return aliasedSelectExpr56 = default(HqlSqlWalker.aliasedSelectExpr_return); - IASTNode CONSTRUCTOR52_tree=null; + IASTNode CONSTRUCTOR53_tree=null; try { - // HqlSqlWalker.g:191:2: ( ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) ) - // HqlSqlWalker.g:191:4: ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) + // HqlSqlWalker.g:192:2: ( ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) ) + // HqlSqlWalker.g:192:4: ^( CONSTRUCTOR path ( selectExpr | aliasedSelectExpr )* ) { root_0 = (IASTNode)adaptor.GetNilNode(); @@ -3066,27 +3088,27 @@ IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - CONSTRUCTOR52=(IASTNode)Match(input,CONSTRUCTOR,FOLLOW_CONSTRUCTOR_in_constructor917); - CONSTRUCTOR52_tree = (IASTNode)adaptor.DupNode(CONSTRUCTOR52); + CONSTRUCTOR53=(IASTNode)Match(input,CONSTRUCTOR,FOLLOW_CONSTRUCTOR_in_constructor922); + CONSTRUCTOR53_tree = (IASTNode)adaptor.DupNode(CONSTRUCTOR53); - root_1 = (IASTNode)adaptor.BecomeRoot(CONSTRUCTOR52_tree, root_1); + root_1 = (IASTNode)adaptor.BecomeRoot(CONSTRUCTOR53_tree, root_1); Match(input, Token.DOWN, null); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_path_in_constructor919); - path53 = path(); + PushFollow(FOLLOW_path_in_constructor924); + path54 = path(); state.followingStackPointer--; - adaptor.AddChild(root_1, path53.Tree); - // HqlSqlWalker.g:191:23: ( selectExpr | aliasedSelectExpr )* + adaptor.AddChild(root_1, path54.Tree); + // HqlSqlWalker.g:192:23: ( selectExpr | aliasedSelectExpr )* do { int alt22 = 3; int LA22_0 = input.LA(1); - if ( (LA22_0 == ALL || LA22_0 == COUNT || LA22_0 == DOT || LA22_0 == ELEMENTS || LA22_0 == INDICES || LA22_0 == UNION || LA22_0 == CASE || LA22_0 == OBJECT || LA22_0 == AGGREGATE || (LA22_0 >= CONSTRUCTOR && LA22_0 <= CASE2) || LA22_0 == METHOD_CALL || LA22_0 == QUERY || LA22_0 == UNARY_MINUS || LA22_0 == WEIRD_IDENT || (LA22_0 >= NUM_INT && LA22_0 <= NUM_LONG) || (LA22_0 >= BNOT && LA22_0 <= DIV) || (LA22_0 >= QUOTED_String && LA22_0 <= IDENT)) ) + if ( (LA22_0 == ALL || LA22_0 == COUNT || LA22_0 == DOT || LA22_0 == ELEMENTS || LA22_0 == INDICES || LA22_0 == UNION || LA22_0 == CASE || LA22_0 == OBJECT || LA22_0 == AGGREGATE || (LA22_0 >= CONSTRUCTOR && LA22_0 <= CASE2) || LA22_0 == METHOD_CALL || LA22_0 == QUERY || LA22_0 == UNARY_MINUS || LA22_0 == WEIRD_IDENT || (LA22_0 >= NUM_INT && LA22_0 <= NUM_LONG) || (LA22_0 >= BNOT && LA22_0 <= DIV) || (LA22_0 >= COLON && LA22_0 <= IDENT)) ) { alt22 = 1; } @@ -3099,26 +3121,26 @@ switch (alt22) { case 1 : - // HqlSqlWalker.g:191:25: selectExpr + // HqlSqlWalker.g:192:25: selectExpr { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_selectExpr_in_constructor923); - selectExpr54 = selectExpr(); + PushFollow(FOLLOW_selectExpr_in_constructor928); + selectExpr55 = selectExpr(); state.followingStackPointer--; - adaptor.AddChild(root_1, selectExpr54.Tree); + adaptor.AddChild(root_1, selectExpr55.Tree); } break; case 2 : - // HqlSqlWalker.g:191:38: aliasedSelectExpr + // HqlSqlWalker.g:192:38: aliasedSelectExpr { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_aliasedSelectExpr_in_constructor927); - aliasedSelectExpr55 = aliasedSelectExpr(); + PushFollow(FOLLOW_aliasedSelectExpr_in_constructor932); + aliasedSelectExpr56 = aliasedSelectExpr(); state.followingStackPointer--; - adaptor.AddChild(root_1, aliasedSelectExpr55.Tree); + adaptor.AddChild(root_1, aliasedSelectExpr56.Tree); } break; @@ -3164,7 +3186,7 @@ }; // $ANTLR start "aggregateExpr" - // HqlSqlWalker.g:194:1: aggregateExpr : ( expr | collectionFunction ); + // HqlSqlWalker.g:195:1: aggregateExpr : ( expr | collectionFunction ); public HqlSqlWalker.aggregateExpr_return aggregateExpr() // throws RecognitionException [1] { HqlSqlWalker.aggregateExpr_return retval = new HqlSqlWalker.aggregateExpr_return(); @@ -3175,15 +3197,15 @@ IASTNode _first_0 = null; IASTNode _last = null; - HqlSqlWalker.expr_return expr56 = default(HqlSqlWalker.expr_return); + HqlSqlWalker.expr_return expr57 = default(HqlSqlWalker.expr_return); - HqlSqlWalker.collectionFunction_return collectionFunction57 = default(HqlSqlWalker.collectionFunction_return); + HqlSqlWalker.collectionFunction_return collectionFunction58 = default(HqlSqlWalker.collectionFunction_return); try { - // HqlSqlWalker.g:195:2: ( expr | collectionFunction ) + // HqlSqlWalker.g:196:2: ( expr | collectionFunction ) int alt23 = 2; int LA23_0 = input.LA(1); @@ -3205,30 +3227,30 @@ switch (alt23) { case 1 : - // HqlSqlWalker.g:195:4: expr + // HqlSqlWalker.g:196:4: expr { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_expr_in_aggregateExpr943); - expr56 = expr(); + PushFollow(FOLLOW_expr_in_aggregateExpr948); + expr57 = expr(); state.followingStackPointer--; - adaptor.AddChild(root_0, expr56.Tree); + adaptor.AddChild(root_0, expr57.Tree); } break; case 2 : - // HqlSqlWalker.g:196:4: collectionFunction + // HqlSqlWalker.g:197:4: collectionFunction { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_collectionFunction_in_aggregateExpr949); - collectionFunction57 = collectionFunction(); + PushFollow(FOLLOW_collectionFunction_in_aggregateExpr954); + collectionFunction58 = collectionFunction(); state.followingStackPointer--; - adaptor.AddChild(root_0, collectionFunction57.Tree); + adaptor.AddChild(root_0, collectionFunction58.Tree); } break; @@ -3260,7 +3282,7 @@ }; // $ANTLR start "fromClause" - // HqlSqlWalker.g:200:1: fromClause : ^(f= FROM fromElementList ) ; + // HqlSqlWalker.g:201:1: fromClause : ^(f= FROM fromElementList ) ; public HqlSqlWalker.fromClause_return fromClause() // throws RecognitionException [1] { HqlSqlWalker.fromClause_return retval = new HqlSqlWalker.fromClause_return(); @@ -3272,7 +3294,7 @@ IASTNode _last = null; IASTNode f = null; - HqlSqlWalker.fromElementList_return fromElementList58 = default(HqlSqlWalker.fromElementList_return); + HqlSqlWalker.fromElementList_return fromElementList59 = default(HqlSqlWalker.fromElementList_return); IASTNode f_tree=null; @@ -3284,8 +3306,8 @@ try { - // HqlSqlWalker.g:206:2: ( ^(f= FROM fromElementList ) ) - // HqlSqlWalker.g:206:4: ^(f= FROM fromElementList ) + // HqlSqlWalker.g:207:2: ( ^(f= FROM fromElementList ) ) + // HqlSqlWalker.g:207:4: ^(f= FROM fromElementList ) { root_0 = (IASTNode)adaptor.GetNilNode(); @@ -3294,7 +3316,7 @@ IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - f=(IASTNode)Match(input,FROM,FOLLOW_FROM_in_fromClause969); + f=(IASTNode)Match(input,FROM,FOLLOW_FROM_in_fromClause974); f_tree = (IASTNode)adaptor.DupNode(f); root_1 = (IASTNode)adaptor.BecomeRoot(f_tree, root_1); @@ -3304,11 +3326,11 @@ Match(input, Token.DOWN, null); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_fromElementList_in_fromClause973); - fromElementList58 = fromElementList(); + PushFollow(FOLLOW_fromElementList_in_fromClause978); + fromElementList59 = fromElementList(); state.followingStackPointer--; - adaptor.AddChild(root_1, fromElementList58.Tree); + adaptor.AddChild(root_1, fromElementList59.Tree); Match(input, Token.UP, null); adaptor.AddChild(root_0, root_1);_last = _save_last_1; } @@ -3342,7 +3364,7 @@ }; // $ANTLR start "fromElementList" - // HqlSqlWalker.g:209:1: fromElementList : ( fromElement )+ ; + // HqlSqlWalker.g:210:1: fromElementList : ( fromElement )+ ; public HqlSqlWalker.fromElementList_return fromElementList() // throws RecognitionException [1] { HqlSqlWalker.fromElementList_return retval = new HqlSqlWalker.fromElementList_return(); @@ -3353,7 +3375,7 @@ IASTNode _first_0 = null; IASTNode _last = null; - HqlSqlWalker.fromElement_return fromElement59 = default(HqlSqlWalker.fromElement_return); + HqlSqlWalker.fromElement_return fromElement60 = default(HqlSqlWalker.fromElement_return); @@ -3363,12 +3385,12 @@ try { - // HqlSqlWalker.g:213:2: ( ( fromElement )+ ) - // HqlSqlWalker.g:213:4: ( fromElement )+ + // HqlSqlWalker.g:214:2: ( ( fromElement )+ ) + // HqlSqlWalker.g:214:4: ( fromElement )+ { root_0 = (IASTNode)adaptor.GetNilNode(); - // HqlSqlWalker.g:213:4: ( fromElement )+ + // HqlSqlWalker.g:214:4: ( fromElement )+ int cnt24 = 0; do { @@ -3384,14 +3406,14 @@ switch (alt24) { case 1 : - // HqlSqlWalker.g:213:5: fromElement + // HqlSqlWalker.g:214:5: fromElement { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_fromElement_in_fromElementList991); - fromElement59 = fromElement(); + PushFollow(FOLLOW_fromElement_in_fromElementList996); + fromElement60 = fromElement(); state.followingStackPointer--; - adaptor.AddChild(root_0, fromElement59.Tree); + adaptor.AddChild(root_0, fromElement60.Tree); } break; @@ -3440,7 +3462,7 @@ }; // $ANTLR start "fromElement" - // HqlSqlWalker.g:218:1: fromElement : ( ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) -> {fromElement != null}? ^() -> | je= joinElement -> | fe= FILTER_ENTITY a3= ALIAS -> ^() ); + // HqlSqlWalker.g:219:1: fromElement : ( ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) -> {fromElement != null}? ^() -> | je= joinElement -> | fe= FILTER_ENTITY a3= ALIAS -> ^() ); public HqlSqlWalker.fromElement_return fromElement() // throws RecognitionException [1] { HqlSqlWalker.fromElement_return retval = new HqlSqlWalker.fromElement_return(); @@ -3455,7 +3477,7 @@ IASTNode pf = null; IASTNode fe = null; IASTNode a3 = null; - IASTNode RANGE60 = null; + IASTNode RANGE61 = null; HqlSqlWalker.path_return p = default(HqlSqlWalker.path_return); HqlSqlWalker.joinElement_return je = default(HqlSqlWalker.joinElement_return); @@ -3465,7 +3487,7 @@ IASTNode pf_tree=null; IASTNode fe_tree=null; IASTNode a3_tree=null; - IASTNode RANGE60_tree=null; + IASTNode RANGE61_tree=null; RewriteRuleNodeStream stream_FILTER_ENTITY = new RewriteRuleNodeStream(adaptor,"token FILTER_ENTITY"); RewriteRuleNodeStream stream_RANGE = new RewriteRuleNodeStream(adaptor,"token RANGE"); RewriteRuleNodeStream stream_FETCH = new RewriteRuleNodeStream(adaptor,"token FETCH"); @@ -3477,7 +3499,7 @@ try { - // HqlSqlWalker.g:223:2: ( ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) -> {fromElement != null}? ^() -> | je= joinElement -> | fe= FILTER_ENTITY a3= ALIAS -> ^() ) + // HqlSqlWalker.g:224:2: ( ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) -> {fromElement != null}? ^() -> | je= joinElement -> | fe= FILTER_ENTITY a3= ALIAS -> ^() ) int alt27 = 3; switch ( input.LA(1) ) { @@ -3506,26 +3528,26 @@ switch (alt27) { case 1 : - // HqlSqlWalker.g:223:4: ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) + // HqlSqlWalker.g:224:4: ^( RANGE p= path (a= ALIAS )? (pf= FETCH )? ) { _last = (IASTNode)input.LT(1); { IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - RANGE60=(IASTNode)Match(input,RANGE,FOLLOW_RANGE_in_fromElement1016); - stream_RANGE.Add(RANGE60); + RANGE61=(IASTNode)Match(input,RANGE,FOLLOW_RANGE_in_fromElement1021); + stream_RANGE.Add(RANGE61); Match(input, Token.DOWN, null); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_path_in_fromElement1020); + PushFollow(FOLLOW_path_in_fromElement1025); p = path(); state.followingStackPointer--; stream_path.Add(p.Tree); - // HqlSqlWalker.g:223:19: (a= ALIAS )? + // HqlSqlWalker.g:224:19: (a= ALIAS )? int alt25 = 2; int LA25_0 = input.LA(1); @@ -3536,10 +3558,10 @@ switch (alt25) { case 1 : - // HqlSqlWalker.g:223:20: a= ALIAS + // HqlSqlWalker.g:224:20: a= ALIAS { _last = (IASTNode)input.LT(1); - a=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_fromElement1025); + a=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_fromElement1030); stream_ALIAS.Add(a); @@ -3548,7 +3570,7 @@ } - // HqlSqlWalker.g:223:30: (pf= FETCH )? + // HqlSqlWalker.g:224:30: (pf= FETCH )? int alt26 = 2; int LA26_0 = input.LA(1); @@ -3559,10 +3581,10 @@ switch (alt26) { case 1 : - // HqlSqlWalker.g:223:31: pf= FETCH + // HqlSqlWalker.g:224:31: pf= FETCH { _last = (IASTNode)input.LT(1); - pf=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_fromElement1032); + pf=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_fromElement1037); stream_FETCH.Add(pf); @@ -3589,10 +3611,10 @@ RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); root_0 = (IASTNode)adaptor.GetNilNode(); - // 224:3: -> {fromElement != null}? ^() + // 225:3: -> {fromElement != null}? ^() if (fromElement != null) { - // HqlSqlWalker.g:224:29: ^() + // HqlSqlWalker.g:225:29: ^() { IASTNode root_1 = (IASTNode)adaptor.GetNilNode(); root_1 = (IASTNode)adaptor.BecomeRoot(fromElement, root_1); @@ -3601,7 +3623,7 @@ } } - else // 225:3: -> + else // 226:3: -> { root_0 = null; } @@ -3610,10 +3632,10 @@ } break; case 2 : - // HqlSqlWalker.g:226:4: je= joinElement + // HqlSqlWalker.g:227:4: je= joinElement { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_joinElement_in_fromElement1059); + PushFollow(FOLLOW_joinElement_in_fromElement1064); je = joinElement(); state.followingStackPointer--; @@ -3631,7 +3653,7 @@ RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); root_0 = (IASTNode)adaptor.GetNilNode(); - // 227:3: -> + // 228:3: -> { root_0 = null; } @@ -3640,14 +3662,14 @@ } break; case 3 : - // HqlSqlWalker.g:229:4: fe= FILTER_ENTITY a3= ALIAS + // HqlSqlWalker.g:230:4: fe= FILTER_ENTITY a3= ALIAS { _last = (IASTNode)input.LT(1); - fe=(IASTNode)Match(input,FILTER_ENTITY,FOLLOW_FILTER_ENTITY_in_fromElement1074); + fe=(IASTNode)Match(input,FILTER_ENTITY,FOLLOW_FILTER_ENTITY_in_fromElement1079); stream_FILTER_ENTITY.Add(fe); _last = (IASTNode)input.LT(1); - a3=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_fromElement1078); + a3=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_fromElement1083); stream_ALIAS.Add(a3); @@ -3663,9 +3685,9 @@ RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); root_0 = (IASTNode)adaptor.GetNilNode(); - // 230:3: -> ^() + // 231:3: -> ^() { - // HqlSqlWalker.g:230:6: ^() + // HqlSqlWalker.g:231:6: ^() { IASTNode root_1 = (IASTNode)adaptor.GetNilNode(); root_1 = (IASTNode)adaptor.BecomeRoot(CreateFromFilterElement(fe,a3), root_1); @@ -3706,7 +3728,7 @@ }; // $ANTLR start "joinElement" - // HqlSqlWalker.g:233:1: joinElement : ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) ; + // HqlSqlWalker.g:234:1: joinElement : ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) ; public HqlSqlWalker.joinElement_return joinElement() // throws RecognitionException [1] { HqlSqlWalker.joinElement_return retval = new HqlSqlWalker.joinElement_return(); @@ -3721,8 +3743,8 @@ IASTNode a = null; IASTNode pf = null; IASTNode with = null; - IASTNode JOIN61 = null; - IASTNode wildcard62 = null; + IASTNode JOIN62 = null; + IASTNode wildcard63 = null; HqlSqlWalker.joinType_return j = default(HqlSqlWalker.joinType_return); HqlSqlWalker.propertyRef_return pRef = default(HqlSqlWalker.propertyRef_return); @@ -3732,13 +3754,13 @@ IASTNode a_tree=null; IASTNode pf_tree=null; IASTNode with_tree=null; - IASTNode JOIN61_tree=null; - IASTNode wildcard62_tree=null; + IASTNode JOIN62_tree=null; + IASTNode wildcard63_tree=null; try { - // HqlSqlWalker.g:237:2: ( ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) ) - // HqlSqlWalker.g:237:4: ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) + // HqlSqlWalker.g:238:2: ( ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) ) + // HqlSqlWalker.g:238:4: ^( JOIN (j= joinType )? (f= FETCH )? pRef= propertyRef (a= ALIAS )? (pf= FETCH )? ( ^( (with= WITH ) ( . )* ) )? ) { root_0 = (IASTNode)adaptor.GetNilNode(); @@ -3747,15 +3769,15 @@ IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - JOIN61=(IASTNode)Match(input,JOIN,FOLLOW_JOIN_in_joinElement1107); - JOIN61_tree = (IASTNode)adaptor.DupNode(JOIN61); + JOIN62=(IASTNode)Match(input,JOIN,FOLLOW_JOIN_in_joinElement1112); + JOIN62_tree = (IASTNode)adaptor.DupNode(JOIN62); - root_1 = (IASTNode)adaptor.BecomeRoot(JOIN61_tree, root_1); + root_1 = (IASTNode)adaptor.BecomeRoot(JOIN62_tree, root_1); Match(input, Token.DOWN, null); - // HqlSqlWalker.g:237:11: (j= joinType )? + // HqlSqlWalker.g:238:11: (j= joinType )? int alt28 = 2; int LA28_0 = input.LA(1); @@ -3766,10 +3788,10 @@ switch (alt28) { case 1 : - // HqlSqlWalker.g:237:12: j= joinType + // HqlSqlWalker.g:238:12: j= joinType { _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_joinType_in_joinElement1112); + PushFollow(FOLLOW_joinType_in_joinElement1117); j = joinType(); state.followingStackPointer--; @@ -3781,7 +3803,7 @@ } - // HqlSqlWalker.g:237:56: (f= FETCH )? + // HqlSqlWalker.g:238:56: (f= FETCH )? int alt29 = 2; int LA29_0 = input.LA(1); @@ -3792,10 +3814,10 @@ switch (alt29) { case 1 : - // HqlSqlWalker.g:237:57: f= FETCH + // HqlSqlWalker.g:238:57: f= FETCH { _last = (IASTNode)input.LT(1); - f=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_joinElement1122); + f=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_joinElement1127); f_tree = (IASTNode)adaptor.DupNode(f); adaptor.AddChild(root_1, f_tree); @@ -3807,12 +3829,12 @@ } _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_propertyRef_in_joinElement1128); + PushFollow(FOLLOW_propertyRef_in_joinElement1133); pRef = propertyRef(); state.followingStackPointer--; adaptor.AddChild(root_1, pRef.Tree); - // HqlSqlWalker.g:237:84: (a= ALIAS )? + // HqlSqlWalker.g:238:84: (a= ALIAS )? int alt30 = 2; int LA30_0 = input.LA(1); @@ -3823,10 +3845,10 @@ switch (alt30) { case 1 : - // HqlSqlWalker.g:237:85: a= ALIAS + // HqlSqlWalker.g:238:85: a= ALIAS { _last = (IASTNode)input.LT(1); - a=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_joinElement1133); + a=(IASTNode)Match(input,ALIAS,FOLLOW_ALIAS_in_joinElement1138); a_tree = (IASTNode)adaptor.DupNode(a); adaptor.AddChild(root_1, a_tree); @@ -3837,7 +3859,7 @@ } - // HqlSqlWalker.g:237:95: (pf= FETCH )? + // HqlSqlWalker.g:238:95: (pf= FETCH )? int alt31 = 2; int LA31_0 = input.LA(1); @@ -3848,10 +3870,10 @@ switch (alt31) { case 1 : - // HqlSqlWalker.g:237:96: pf= FETCH + // HqlSqlWalker.g:238:96: pf= FETCH { _last = (IASTNode)input.LT(1); - pf=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_joinElement1140); + pf=(IASTNode)Match(input,FETCH,FOLLOW_FETCH_in_joinElement1145); pf_tree = (IASTNode)adaptor.DupNode(pf); adaptor.AddChild(root_1, pf_tree); @@ -3862,7 +3884,7 @@ } - // HqlSqlWalker.g:237:107: ( ^( (with= WITH ) ( . )* ) )? + // HqlSqlWalker.g:238:107: ( ^( (with= WITH ) ( . )* ) )? int alt33 = 2; int LA33_0 = input.LA(1); @@ -3873,17 +3895,17 @@ switch (alt33) { case 1 : - // HqlSqlWalker.g:237:108: ^( (with= WITH ) ( . )* ) + // HqlSqlWalker.g:238:108: ^( (with= WITH ) ( . )* ) { _last = (IASTNode)input.LT(1); { IASTNode _save_last_2 = _last; IASTNode _first_2 = null; - IASTNode root_2 = (IASTNode)adaptor.GetNilNode();// HqlSqlWalker.g:237:110: (with= WITH ) - // HqlSqlWalker.g:237:111: with= WITH + IASTNode root_2 = (IASTNode)adaptor.GetNilNode();// HqlSqlWalker.g:238:110: (with= WITH ) + // HqlSqlWalker.g:238:111: with= WITH { _last = (IASTNode)input.LT(1); - with=(IASTNode)Match(input,WITH,FOLLOW_WITH_in_joinElement1149); + with=(IASTNode)Match(input,WITH,FOLLOW_WITH_in_joinElement1154); with_tree = (IASTNode)adaptor.DupNode(with); adaptor.AddChild(root_2, with_tree); @@ -3896,7 +3918,7 @@ if ( input.LA(1) == Token.DOWN ) { Match(input, Token.DOWN, null); - // HqlSqlWalker.g:237:122: ( . )* + // HqlSqlWalker.g:238:122: ( . )* do { int alt32 = 2; @@ -3915,13 +3937,13 @@ switch (alt32) { case 1 : - // HqlSqlWalker.g:237:122: . + // HqlSqlWalker.g:238:122: . { _last = (IASTNode)input.LT(1); - wildcard62 = (IASTNode)input.LT(1); + wildcard63 = (IASTNode)input.LT(1); MatchAny(input); - wildcard62_tree = (IASTNode)adaptor.DupTree(wildcard62); - adaptor.AddChild(root_2, wildcard62_tree); + wildcard63_tree = (IASTNode)adaptor.DupTree(wildcard63); + adaptor.AddChild(root_2, wildcard63_tree); } @@ -3984,7 +4006,7 @@ }; // $ANTLR start "joinType" - // HqlSqlWalker.g:246:1: joinType returns [int j] : ( ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) | FULL | INNER ); + // HqlSqlWalker.g:247:1: joinType returns [int j] : ( ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) | FULL | INNER ); public HqlSqlWalker.joinType_return joinType() // throws RecognitionException [1] { HqlSqlWalker.joinType_return retval = new HqlSqlWalker.joinType_return(); @@ -3998,21 +4020,21 @@ IASTNode left = null; IASTNode right = null; IASTNode outer = null; - IASTNode FULL63 = null; - IASTNode INNER64 = null; + IASTNode FULL64 = null; + IASTNode INNER65 = null; IASTNode left_tree=null; IASTNode right_tree=null; IASTNode outer_tree=null; - IASTNode FULL63_tree=null; - IASTNode INNER64_tree=null; + IASTNode FULL64_tree=null; + IASTNode INNER65_tree=null; retval.j = INNER; try { - // HqlSqlWalker.g:250:2: ( ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) | FULL | INNER ) + // HqlSqlWalker.g:251:2: ( ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) | FULL | INNER ) int alt36 = 3; switch ( input.LA(1) ) { @@ -4042,14 +4064,14 @@ switch (alt36) { case 1 : - // HqlSqlWalker.g:250:4: ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) + // HqlSqlWalker.g:251:4: ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) { root_0 = (IASTNode)adaptor.GetNilNode(); - // HqlSqlWalker.g:250:4: ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) - // HqlSqlWalker.g:250:6: (left= LEFT | right= RIGHT ) (outer= OUTER )? + // HqlSqlWalker.g:251:4: ( (left= LEFT | right= RIGHT ) (outer= OUTER )? ) + // HqlSqlWalker.g:251:6: (left= LEFT | right= RIGHT ) (outer= OUTER )? { - // HqlSqlWalker.g:250:6: (left= LEFT | right= RIGHT ) + // HqlSqlWalker.g:251:6: (left= LEFT | right= RIGHT ) int alt34 = 2; int LA34_0 = input.LA(1); @@ -4071,10 +4093,10 @@ switch (alt34) { case 1 : - // HqlSqlWalker.g:250:7: left= LEFT + // HqlSqlWalker.g:251:7: left= LEFT { _last = (IASTNode)input.LT(1); - left=(IASTNode)Match(input,LEFT,FOLLOW_LEFT_in_joinType1190); + left=(IASTNode)Match(input,LEFT,FOLLOW_LEFT_in_joinType1195); left_tree = (IASTNode)adaptor.DupNode(left); adaptor.AddChild(root_0, left_tree); @@ -4083,10 +4105,10 @@ } break; case 2 : - // HqlSqlWalker.g:250:19: right= RIGHT + // HqlSqlWalker.g:251:19: right= RIGHT { _last = (IASTNode)input.LT(1); - right=(IASTNode)Match(input,RIGHT,FOLLOW_RIGHT_in_joinType1196); + right=(IASTNode)Match(input,RIGHT,FOLLOW_RIGHT_in_joinType1201); right_tree = (IASTNode)adaptor.DupNode(right); adaptor.AddChild(root_0, right_tree); @@ -4097,7 +4119,7 @@ } - // HqlSqlWalker.g:250:32: (outer= OUTER )? + // HqlSqlWalker.g:251:32: (outer= OUTER )? int alt35 = 2; int LA35_0 = input.LA(1); @@ -4108,10 +4130,10 @@ switch (alt35) { case 1 : - // HqlSqlWalker.g:250:33: outer= OUTER + // HqlSqlWalker.g:251:33: outer= OUTER { _last = (IASTNode)input.LT(1); - outer=(IASTNode)Match(input,OUTER,FOLLOW_OUTER_in_joinType1202); + outer=(IASTNode)Match(input,OUTER,FOLLOW_OUTER_in_joinType1207); outer_tree = (IASTNode)adaptor.DupNode(outer); adaptor.AddChild(root_0, outer_tree); @@ -4134,15 +4156,15 @@ } break; case 2 : - // HqlSqlWalker.g:256:4: FULL + // HqlSqlWalker.g:257:4: FULL { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - FULL63=(IASTNode)Match(input,FULL,FOLLOW_FULL_in_joinType1216); - FULL63_tree = (IASTNode)adaptor.DupNode(FULL63); + FULL64=(IASTNode)Match(input,FULL,FOLLOW_FULL_in_joinType1221); + FULL64_tree = (IASTNode)adaptor.DupNode(FULL64); - adaptor.AddChild(root_0, FULL63_tree); + adaptor.AddChild(root_0, FULL64_tree); retval.j = FULL; @@ -4151,15 +4173,15 @@ } break; case 3 : - // HqlSqlWalker.g:259:4: INNER + // HqlSqlWalker.g:260:4: INNER { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - INNER64=(IASTNode)Match(input,INNER,FOLLOW_INNER_in_joinType1223); - INNER64_tree = (IASTNode)adaptor.DupNode(INNER64); + INNER65=(IASTNode)Match(input,INNER,FOLLOW_INNER_in_joinType1228); + INNER65_tree = (IASTNode)adaptor.DupNode(INNER65); - adaptor.AddChild(root_0, INNER64_tree); + adaptor.AddChild(root_0, INNER65_tree); retval.j = INNER; @@ -4196,7 +4218,7 @@ }; // $ANTLR start "path" - // HqlSqlWalker.g:266:1: path returns [String p] : (a= identifier | ^( DOT x= path y= identifier ) ); + // HqlSqlWalker.g:267:1: path returns [String p] : (a= identifier | ^( DOT x= path y= identifier ) ); public HqlSqlWalker.path_return path() // throws RecognitionException [1] { HqlSqlWalker.path_return retval = new HqlSqlWalker.path_return(); @@ -4207,7 +4229,7 @@ IASTNode _first_0 = null; IASTNode _last = null; - IASTNode DOT65 = null; + IASTNode DOT66 = null; HqlSqlWalker.identifier_return a = default(HqlSqlWalker.identifier_return); HqlSqlWalker.path_return x = default(HqlSqlWalker.path_return); @@ -4215,11 +4237,11 @@ HqlSqlWalker.identifier_return y = default(HqlSqlWalker.identifier_return); - IASTNode DOT65_tree=null; + IASTNode DOT66_tree=null; try { - // HqlSqlWalker.g:267:2: (a= identifier | ^( DOT x= path y= identifier ) ) + // HqlSqlWalker.g:268:2: (a= identifier | ^( DOT x= path y= identifier ) ) int alt37 = 2; int LA37_0 = input.LA(1); @@ -4241,12 +4263,12 @@ switch (alt37) { case 1 : - // HqlSqlWalker.g:267:4: a= identifier + // HqlSqlWalker.g:268:4: a= identifier { root_0 = (IASTNode)adaptor.GetNilNode(); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_identifier_in_path1245); + PushFollow(FOLLOW_identifier_in_path1250); a = identifier(); state.followingStackPointer--; @@ -4256,7 +4278,7 @@ } break; case 2 : - // HqlSqlWalker.g:268:4: ^( DOT x= path y= identifier ) + // HqlSqlWalker.g:269:4: ^( DOT x= path y= identifier ) { root_0 = (IASTNode)adaptor.GetNilNode(); @@ -4265,22 +4287,22 @@ IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); - DOT65=(IASTNode)Match(input,DOT,FOLLOW_DOT_in_path1253); - DOT65_tree = (IASTNode)adaptor.DupNode(DOT65); + DOT66=(IASTNode)Match(input,DOT,FOLLOW_DOT_in_path1258); + DOT66_tree = (IASTNode)adaptor.DupNode(DOT66); - root_1 = (IASTNode)adaptor.BecomeRoot(DOT65_tree, root_1); + root_1 = (IASTNode)adaptor.BecomeRoot(DOT66_tree, root_1); Match(input, Token.DOWN, null); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_path_in_path1257); + PushFollow(FOLLOW_path_in_path1262); x = path(); state.followingStackPointer--; adaptor.AddChild(root_1, x.Tree); _last = (IASTNode)input.LT(1); - PushFollow(FOLLOW_identifier_in_path1261); + PushFoll... [truncated message content] |
From: <fab...@us...> - 2011-03-23 14:27:09
|
Revision: 5508 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5508&view=rev Author: fabiomaulo Date: 2011-03-23 14:27:03 +0000 (Wed, 23 Mar 2011) Log Message: ----------- Apply NH-2590 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs 2011-03-22 23:28:30 UTC (rev 5507) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSqlCe40Dialect.cs 2011-03-23 14:27:03 UTC (rev 5508) @@ -1,3 +1,4 @@ +using NHibernate.Dialect.Function; using NHibernate.SqlCommand; namespace NHibernate.Dialect @@ -2,27 +3,28 @@ { - public class MsSqlCe40Dialect : MsSqlCeDialect - { - public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit) - { - if (querySqlString.IndexOfCaseInsensitive(" ORDER BY ") < 0) - querySqlString = querySqlString.Append(" ORDER BY GETDATE()"); - return querySqlString.Append(string.Format(" OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY", offset, limit)); - } + public class MsSqlCe40Dialect : MsSqlCeDialect + { + public MsSqlCe40Dialect() + { + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); + } - public override bool SupportsLimit - { - get - { - return true; - } - } + public override bool SupportsLimit + { + get { return true; } + } - public override bool SupportsLimitOffset - { - get - { - return true; - } - } - } -} + public override bool SupportsLimitOffset + { + get { return true; } + } + + public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit) + { + if (querySqlString.IndexOfCaseInsensitive(" ORDER BY ") < 0) + { + querySqlString = querySqlString.Append(" ORDER BY GETDATE()"); + } + return querySqlString.Append(string.Format(" OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY", offset, limit)); + } + } +} \ 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...> - 2011-03-22 23:28:36
|
Revision: 5507 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5507&view=rev Author: fabiomaulo Date: 2011-03-22 23:28:30 +0000 (Tue, 22 Mar 2011) Log Message: ----------- Test for NH-2390 (not fixed) Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Domain.cs 2011-03-22 23:28:30 UTC (rev 5507) @@ -0,0 +1,13 @@ +namespace NHibernate.Test.NHSpecificTest.NH2390 +{ + public class Class1 + { + public long Id { get; private set; } + public int Property1 { get; set; } + public int Property2 { get; set; } + public int Property3 { get; set; } + public int Property4 { get; set; } + public int Property5 { get; set; } + public int Version { get; private set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Fixture.cs 2011-03-22 23:28:30 UTC (rev 5507) @@ -0,0 +1,63 @@ +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2390 +{ + [Ignore("Not fixed yet")] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + base.OnSetUp(); + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var class1 = new Class1(); + s.Save(class1); + t.Commit(); + } + } + + protected override void OnTearDown() + { + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + s.Delete("from Class1"); + t.Commit(); + } + base.OnTearDown(); + } + + [Test] + public void Test() + { + var rowsUpdated = 0; + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + rowsUpdated = s.CreateQuery("UPDATE VERSIONED Class1 c SET c.Property1 = :value1, c.Property2 = :value2, c.Property3 = :value3, c.Property4 = :value4, c.Property5 = :value5") + .SetParameter("value1", 1) + .SetParameter("value2", 2) + .SetParameter("value3", 3) + .SetParameter("value4", 4) + .SetParameter("value5", 5) + .ExecuteUpdate(); + t.Commit(); + } + + using (ISession s = OpenSession()) + using (ITransaction t = s.BeginTransaction()) + { + var class1 = (Class1)(s.CreateQuery("FROM Class1").UniqueResult()); + + Assert.That(rowsUpdated, Is.EqualTo(1), "UPDATE did not alter the expected number of rows"); + Assert.That(class1.Property1, Is.EqualTo(1), "UPDATE did not alter Property1"); + Assert.That(class1.Property2, Is.EqualTo(2), "UPDATE did not alter Property2"); + Assert.That(class1.Property3, Is.EqualTo(3), "UPDATE did not alter Property3"); + Assert.That(class1.Property4, Is.EqualTo(4), "UPDATE did not alter Property4"); + Assert.That(class1.Property5, Is.EqualTo(5), "UPDATE did not alter Property5"); + Assert.That(class1.Version, Is.EqualTo(2), "UPDATE did not increment the version"); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2390/Mappings.hbm.xml 2011-03-22 23:28:30 UTC (rev 5507) @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping + xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2390" + assembly="NHibernate.Test" + default-access="property" + default-lazy="false"> + + <class name="Class1"> + <id name="Id"> + <generator class="native" /> + </id> + <version name="Version" /> + <property name="Property1"/> + <property name="Property2"/> + <property name="Property3"/> + <property name="Property4"/> + <property name="Property5"/> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-22 23:02:09 UTC (rev 5506) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-22 23:28:30 UTC (rev 5507) @@ -615,6 +615,8 @@ <Compile Include="NHSpecificTest\NH2386\ResponsibleLegalPerson.cs" /> <Compile Include="NHSpecificTest\NH2386\Test.cs" /> <Compile Include="NHSpecificTest\NH2386\TradingName.cs" /> + <Compile Include="NHSpecificTest\NH2390\Domain.cs" /> + <Compile Include="NHSpecificTest\NH2390\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2392\A.cs" /> <Compile Include="NHSpecificTest\NH2392\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2392\PhoneNumber.cs" /> @@ -2477,6 +2479,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2390\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2491\Mappings.hbm.xml" /> <EmbeddedResource Include="Insertordering\Mapping.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2530\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pa...@us...> - 2011-03-22 23:02:15
|
Revision: 5506 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5506&view=rev Author: patearl Date: 2011-03-22 23:02:09 +0000 (Tue, 22 Mar 2011) Log Message: ----------- SQLite: Register the int keyword so the sql formula parser doesn't munge it in our date cast expressions. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-22 20:33:16 UTC (rev 5505) +++ trunk/nhibernate/src/NHibernate/Dialect/SQLiteDialect.cs 2011-03-22 23:02:09 UTC (rev 5506) @@ -72,6 +72,9 @@ RegisterFunction("iif", new SQLFunctionTemplate(null, "case when ?1 then ?2 else ?3 end")); RegisterFunction("cast", new SQLiteCastFunction()); + + + RegisterKeyword("int"); // Used in our function templates. } 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...> - 2011-03-22 20:33:22
|
Revision: 5505 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5505&view=rev Author: fabiomaulo Date: 2011-03-22 20:33:16 +0000 (Tue, 22 Mar 2011) Log Message: ----------- Fix NH-2491 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-03-22 18:53:44 UTC (rev 5504) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-03-22 20:33:16 UTC (rev 5505) @@ -1821,9 +1821,11 @@ { int propertyIndex = Array.IndexOf(SubclassColumnClosure, column); - if (propertyIndex < 0) + // The check for KeyColumnNames was added to fix NH-2491 + if (propertyIndex < 0 || Array.IndexOf(KeyColumnNames, column) >= 0) + { return rootAlias; - + } return GenerateTableAlias(rootAlias, SubclassColumnTableNumberClosure[propertyIndex]); } Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Fixture.cs 2011-03-22 20:33:16 UTC (rev 5505) @@ -0,0 +1,64 @@ +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2491 +{ + public class BaseClass + { + public virtual int Id { get; set; } + + public virtual BaseClass Another { get; set; } + } + + public class SubClass : BaseClass + { + } + + public class ReferencingClass + { + public virtual int Id { get; set; } + + public virtual SubClass SubClass { get; set; } + } + + + public class Fixture : BugTestCase + { + [Test] + public void InheritanceSameColumnName() + { + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var subClass = new SubClass(); + var referencing = new ReferencingClass() { SubClass = subClass }; + session.Save(subClass); + session.Save(referencing); + + session.Transaction.Commit(); + } + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + var referencing = session.CreateQuery("from ReferencingClass") + .UniqueResult<ReferencingClass>(); + + // accessing a property of the base class to activate lazy loading + // this line crashes because it tries to find the base class by + // the wrong column name. + BaseClass another; + Executing.This(() => another = referencing.SubClass.Another).Should().NotThrow(); + + session.Transaction.Commit(); + } + using (var session = OpenSession()) + using (session.BeginTransaction()) + { + session.CreateQuery("delete from ReferencingClass").ExecuteUpdate(); + session.CreateQuery("delete from BaseClass").ExecuteUpdate(); + session.Transaction.Commit(); + } + + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2491/Mappings.hbm.xml 2011-03-22 20:33:16 UTC (rev 5505) @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.NH2491" + assembly="NHibernate.Test"> + + <class name="BaseClass" > + <id name="Id"> + <generator class="hilo" /> + </id> + + <many-to-one name="Another" column="BaseClass_FK" /> + + <joined-subclass name="SubClass" > + <!-- use a column name already used in the base class--> + <key column="BaseClass_FK"/> + </joined-subclass> + </class> + + <class name="ReferencingClass" > + <id name="Id"> + <generator class="hilo" /> + </id> + <many-to-one name="SubClass" column="SubClass_FK" /> + </class> + +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-22 18:53:44 UTC (rev 5504) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-22 20:33:16 UTC (rev 5505) @@ -648,6 +648,7 @@ <Compile Include="NHSpecificTest\NH2470\DTO.cs" /> <Compile Include="NHSpecificTest\NH2484\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2484\Model.cs" /> + <Compile Include="NHSpecificTest\NH2491\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2507\Animal.cs" /> <Compile Include="NHSpecificTest\NH2507\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2530\Domain.cs" /> @@ -2476,6 +2477,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH2491\Mappings.hbm.xml" /> <EmbeddedResource Include="Insertordering\Mapping.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2530\Mappings.hbm.xml" /> <EmbeddedResource Include="DynamicProxyTests\InterfaceProxySerializationTests\ProxyImpl.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fab...@us...> - 2011-03-22 18:53:50
|
Revision: 5504 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5504&view=rev Author: fabiomaulo Date: 2011-03-22 18:53:44 +0000 (Tue, 22 Mar 2011) Log Message: ----------- Fix NH-2550 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs trunk/nhibernate/src/NHibernate/Intercept/IFieldInterceptor.cs trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs Modified: trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2011-03-22 18:46:20 UTC (rev 5503) +++ trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2011-03-22 18:53:44 UTC (rev 5504) @@ -38,9 +38,10 @@ get { return isDirty; } } - public void SetSession(ISessionImplementor session) + public ISessionImplementor Session { - this.session = session; + get { return session; } + set { session = value; } } public bool IsInitialized Modified: trunk/nhibernate/src/NHibernate/Intercept/IFieldInterceptor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Intercept/IFieldInterceptor.cs 2011-03-22 18:46:20 UTC (rev 5503) +++ trunk/nhibernate/src/NHibernate/Intercept/IFieldInterceptor.cs 2011-03-22 18:53:44 UTC (rev 5504) @@ -10,8 +10,7 @@ bool IsDirty { get;} /// <summary> Use to associate the entity to which we are bound to the given session. </summary> - /// <param name="session">The session to which we are now associated. </param> - void SetSession(ISessionImplementor session); + ISessionImplementor Session { get; set; } /// <summary> Is the entity to which we are bound completely initialized? </summary> bool IsInitialized { get;} Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-03-22 18:46:20 UTC (rev 5503) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-03-22 18:53:44 UTC (rev 5504) @@ -3648,7 +3648,7 @@ IFieldInterceptor interceptor = FieldInterceptionHelper.ExtractFieldInterceptor(entity); if (interceptor != null) { - interceptor.SetSession(session); + interceptor.Session = session; } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |