|
From: <ric...@us...> - 2009-09-08 11:14:38
|
Revision: 4708
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4708&view=rev
Author: ricbrown
Date: 2009-09-08 11:14:30 +0000 (Tue, 08 Sep 2009)
Log Message:
-----------
Merge r4707 (Fix NH-1938)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs 2009-09-08 11:13:42 UTC (rev 4707)
+++ trunk/nhibernate/src/NHibernate/Criterion/LikeExpression.cs 2009-09-08 11:14:30 UTC (rev 4708)
@@ -74,7 +74,19 @@
lhs.Add(columns[0]);
criteriaQuery.AddUsedTypedValues(GetTypedValues(criteria, criteriaQuery));
- lhs.Add(" like ").AddParameter();
+
+ if (ignoreCase)
+ {
+ Dialect.Dialect dialect = criteriaQuery.Factory.Dialect;
+ lhs.Add(" like ")
+ .Add(dialect.LowercaseFunction)
+ .Add(StringHelper.OpenParen)
+ .AddParameter()
+ .Add(StringHelper.ClosedParen);
+ }
+ else
+ lhs.Add(" like ").AddParameter();
+
if (escapeChar.HasValue)
lhs.Add(" escape '" + escapeChar + "'");
return lhs.ToSqlString();
Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938
___________________________________________________________________
Added: bugtraq:url
+ http://jira.nhibernate.org/browse/%BUGID%
Added: bugtraq:logregex
+ NH-\d+
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Fixture.cs 2009-09-08 11:14:30 UTC (rev 4708)
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NHibernate.Criterion;
+
+namespace NHibernate.Test.NHSpecificTest.NH1938
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+
+ protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect)
+ {
+ // Database needs to be case-sensitive
+ return (dialect is NHibernate.Dialect.Oracle10gDialect);
+ }
+
+ [Test]
+ public void Can_Query_By_Example_Case_Insensitive()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Save(new Person() { Name = "John Smith" });
+
+ Person examplePerson = new Person() { Name = "oHn" };
+ IList<Person> matchingPeople;
+
+ matchingPeople =
+ s.CreateCriteria<Person>()
+ .Add(Example
+ .Create(examplePerson)
+ .EnableLike(MatchMode.Anywhere)
+ .IgnoreCase())
+ .List<Person>();
+
+ Assert.That(matchingPeople.Count, Is.EqualTo(1));
+
+ matchingPeople =
+ s.CreateCriteria<Person>()
+ .Add(Example
+ .Create(examplePerson)
+ .EnableLike(MatchMode.Anywhere))
+ .List<Person>();
+
+ Assert.That(matchingPeople.Count, Is.EqualTo(0));
+
+ t.Rollback();
+ }
+ }
+
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Mappings.hbm.xml 2009-09-08 11:14:30 UTC (rev 4708)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1938">
+
+ <class name="Person">
+ <id name="Id">
+ <generator class="native" />
+ </id>
+ <property name="Name"/>
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1938/Model.cs 2009-09-08 11:14:30 UTC (rev 4708)
@@ -0,0 +1,19 @@
+using System;
+using System.Xml.Serialization;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+
+using NHibernate;
+using NHibernate.Classic;
+
+namespace NHibernate.Test.NHSpecificTest.NH1938
+{
+
+ public class Person
+ {
+ public virtual int Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-08 11:13:42 UTC (rev 4707)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-08 11:14:30 UTC (rev 4708)
@@ -588,6 +588,8 @@
<Compile Include="NHSpecificTest\NH1914\Model.cs" />
<Compile Include="NHSpecificTest\NH1920\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1920\Model.cs" />
+ <Compile Include="NHSpecificTest\NH1938\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1938\Model.cs" />
<Compile Include="NHSpecificTest\NH1939\AuxType.cs" />
<Compile Include="NHSpecificTest\NH1939\Fixture.cs" />
<Compile Include="NHSpecificTest\NH473\Child.cs" />
@@ -2003,6 +2005,7 @@
<EmbeddedResource Include="Criteria\Lambda\Mappings.hbm.xml" />
<EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1938\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1905\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1939\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1911\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|