Author: dkazimirchyk
Date: Tue Jul  5 08:31:09 2011
New Revision: 1142922

URL: http://svn.apache.org/viewvc?rev=1142922&view=rev
Log:
CAY-1577 SQL queries for LIKE expressions with escape character generated with 
syntax errors

patch + unit test
applied this for 3.0 branch

Modified:
    
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
    
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QualifierTranslator.java
    
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java

Modified: 
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: 
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1142922&r1=1142921&r2=1142922&view=diff
==============================================================================
--- 
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt 
(original)
+++ 
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt 
Tue Jul  5 08:31:09 2011
@@ -8,11 +8,20 @@ To browse individual bug reports check o
 http://issues.apache.org/cayenne/
 
 ----------------------------------
+Release: 3.0.3
+Date: 
+----------------------------------
+
+Bug Fixes Since 3.0.2:
+
+CAY-1577 SQL queries for LIKE expressions with escape character generated with 
syntax errors
+
+----------------------------------
 Release: 3.0.2
 Date: 
 ----------------------------------
 
-Improvements Sice 3.0.1
+Improvements Since 3.0.1
 
 CAY-1500 MySQL JDBC Batching
 CAY-1575 Error generating Embeddable classes in Cayenne Modeler

Modified: 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QualifierTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QualifierTranslator.java?rev=1142922&r1=1142921&r2=1142922&view=diff
==============================================================================
--- 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QualifierTranslator.java
 (original)
+++ 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QualifierTranslator.java
 Tue Jul  5 08:31:09 2011
@@ -352,17 +352,17 @@ public class QualifierTranslator extends
             boolean isPatternMatchNode = 
PatternMatchNode.class.isAssignableFrom(node
                     .getClass());
 
-            if (isPatternMatchNode && !likeIgnoreCase)
-                appendLikeEscapeCharacter((PatternMatchNode) node);
-
             if (parenthesisNeeded)
                 out.append(')');
 
-            if (isPatternMatchNode && likeIgnoreCase)
+            if (isPatternMatchNode && !likeIgnoreCase)
                 appendLikeEscapeCharacter((PatternMatchNode) node);
 
             if (likeIgnoreCase)
                 out.append(')');
+
+            if (isPatternMatchNode && likeIgnoreCase)
+                appendLikeEscapeCharacter((PatternMatchNode) node);
         }
         catch (IOException ioex) {
             throw new CayenneRuntimeException("Error appending content", ioex);

Modified: 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java?rev=1142922&r1=1142921&r2=1142922&view=diff
==============================================================================
--- 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
 (original)
+++ 
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
 Tue Jul  5 08:31:09 2011
@@ -334,4 +334,24 @@ public class ExpressionFactoryTest exten
         SelectQuery query = new SelectQuery(Artist.class, 
ExpressionFactory.inExp("artistName", numbers));
         createDataContext().performQuery(query);
     }
+
+    public void testEscapeCharacter() {
+        ObjectContext dc = createDataContext();
+
+        Artist a1 = dc.newObject(Artist.class);
+        a1.setArtistName("A_1");
+        Artist a2 = dc.newObject(Artist.class);
+        a2.setArtistName("A_2");
+        dc.commitChanges();
+        
+        Expression ex1 = ExpressionFactory.likeIgnoreCaseDbExp("ARTIST_NAME", 
"A*_1", '*');
+        SelectQuery q1 = new SelectQuery(Artist.class, ex1);
+        List<Artist> artists = dc.performQuery(q1);
+        assertEquals(1, artists.size());
+        
+        Expression ex2 = ExpressionFactory.likeExp("artistName", "A*_2", '*');
+        SelectQuery q2 = new SelectQuery(Artist.class, ex2);
+        artists = dc.performQuery(q2);
+        assertEquals(1, artists.size());
+    }
 }


Reply via email to