|
From: <fab...@us...> - 2009-07-05 18:50:48
|
Revision: 4585
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4585&view=rev
Author: fabiomaulo
Date: 2009-07-05 18:50:45 +0000 (Sun, 05 Jul 2009)
Log Message:
-----------
Merge r4584 (fix NH-1868)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-05 18:48:06 UTC (rev 4584)
+++ trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-07-05 18:50:45 UTC (rev 4585)
@@ -71,7 +71,7 @@
{
// NH Different behaviour NH-1776
// Analyze all named parameters declared after filters
- //in general all named parameters but depend on the complexity of the query
+ // in general all named parameters but depend on the complexity of the query (see sub query)
foreach (ParameterInfo entry in _namedParameters.Values)
{
int amountOfPush = 0;
@@ -79,7 +79,7 @@
{
// a parameter span, at least, one value; where span more than one all values are cosecutive
// the first position determines the position of the others values
- if (entry.SqlLocations[0] >= existingParameterLocation)
+ if (entry.SqlLocations[0]+amountOfPush >= existingParameterLocation)
{
amountOfPush++;
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Fixture.cs 2009-07-05 18:50:45 UTC (rev 4585)
@@ -0,0 +1,103 @@
+using System;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1868
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnSetUp()
+ {
+ base.OnSetUp();
+ using (ISession session = OpenSession())
+ {
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ cat = new Category {ValidUntil = DateTime.Now};
+ session.Save(cat);
+
+ package = new Package {ValidUntil = DateTime.Now};
+ session.Save(package);
+
+ tx.Commit();
+ }
+ }
+ }
+
+ private Category cat;
+ private Package package;
+
+ protected override void OnTearDown()
+ {
+ using (ISession session = OpenSession())
+ {
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ session.Delete("from Category");
+ session.Delete("from Package");
+ tx.Commit();
+ }
+ }
+ base.OnTearDown();
+ }
+
+ public void ExecuteQuery(Action<ISession> sessionModifier)
+ {
+ using (ISession session = OpenSession())
+ {
+ using (ITransaction tx = session.BeginTransaction())
+ {
+ sessionModifier(session);
+ session.Refresh(cat);
+ session.Refresh(package);
+
+ session.CreateQuery(
+ @"
+ select
+ inv
+ from
+ Invoice inv
+ , Package p
+ where
+ p = :package
+ and inv.Category = :cat
+ and inv.ValidUntil > :now
+ and inv.Package = :package
+ ")
+ .SetEntity("cat", cat).SetEntity("package", package).SetDateTime("now", DateTime.Now).UniqueResult<Invoice>();
+
+ tx.Commit();
+ }
+ }
+ }
+
+ [Test]
+ public void Bug()
+ {
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ }
+
+ [Test]
+ public void FilterOnOffOn()
+ {
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ Assert.DoesNotThrow(() => ExecuteQuery(s => { }));
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ }
+
+ [Test]
+ public void FilterQueryTwice()
+ {
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ }
+
+ [Test]
+ public void FilterQuery3()
+ {
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ Assert.DoesNotThrow(() => ExecuteQuery(s => s.EnableFilter("validity").SetParameter("date", DateTime.Now)));
+ }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Mappings.hbm.xml 2009-07-05 18:50:45 UTC (rev 4585)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1868">
+
+ <class name="Category">
+ <id name="ID" type="Int32">
+ <generator class="hilo" />
+ </id>
+ <property name="ValidUntil" type="DateTime" />
+ <filter name="validity" condition="ValidUntil > :date" />
+ </class>
+
+ <class name="Package">
+ <id name="ID" type="Int32">
+ <generator class="hilo" />
+ </id>
+ <property name="ValidUntil" type="DateTime" />
+ <filter name="validity" condition="ValidUntil > :date" />
+ </class>
+
+ <class name="Invoice">
+ <id name="ID" type="Int32">
+ <generator class="hilo" />
+ </id>
+
+ <many-to-one name="Category" column="CategoryId" class="Category" />
+ <many-to-one name="Package" column="PacakgeId" class="Package" />
+ <property name="ValidUntil" type="DateTime" />
+ <filter name="validity" condition="ValidUntil > :date" />
+ </class>
+
+ <filter-def name="validity">
+ <filter-param name="date" type="DateTime"/>
+ </filter-def>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1868/Model.cs 2009-07-05 18:50:45 UTC (rev 4585)
@@ -0,0 +1,24 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH1868
+{
+ public class Category
+ {
+ public virtual int ID { get; private set; }
+ public virtual DateTime ValidUntil { get; set; }
+ }
+
+ public class Package
+ {
+ public virtual int ID { get; private set; }
+ public virtual DateTime ValidUntil { get; set; }
+ }
+
+ public class Invoice
+ {
+ public virtual int ID { get; private set; }
+ public virtual DateTime ValidUntil { get; set; }
+ public virtual Category Category { get; set; }
+ public virtual Package Package { get; set; }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 18:48:06 UTC (rev 4584)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-05 18:50:45 UTC (rev 4585)
@@ -539,6 +539,8 @@
<Compile Include="NHSpecificTest\NH1859\SampleTest.cs" />
<Compile Include="NHSpecificTest\NH1864\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1864\Model.cs" />
+ <Compile Include="NHSpecificTest\NH1868\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1868\Model.cs" />
<Compile Include="NHSpecificTest\NH473\Child.cs" />
<Compile Include="NHSpecificTest\NH473\Fixture.cs" />
<Compile Include="NHSpecificTest\NH473\Parent.cs" />
@@ -1950,6 +1952,7 @@
<EmbeddedResource Include="DriverTest\MultiTypeEntity.hbm.xml" />
<EmbeddedResource Include="Criteria\Lambda\Mappings.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1868\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1857\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1859\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1864\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|