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