Author: tfischer
Date: Wed Sep  3 19:53:25 2014
New Revision: 1622341

URL: http://svn.apache.org/r1622341
Log:
TORQUE-321 remove wrong optimization of iLike without wildcards 

Modified:
    
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/LikeBuilder.java
    
db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java

Modified: 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/LikeBuilder.java
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/LikeBuilder.java?rev=1622341&r1=1622340&r2=1622341&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/LikeBuilder.java
 (original)
+++ 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/sql/whereclausebuilder/LikeBuilder.java
 Wed Sep  3 19:53:25 2014
@@ -57,9 +57,9 @@ public class LikeBuilder extends Abstrac
      * @return the rendered SQL for the WhereClauseExpression
      */
     public PreparedStatementPart buildPs(
-                WhereClauseExpression whereClausePart,
-                boolean ignoreCase,
-                Adapter adapter)
+                final WhereClauseExpression whereClausePart,
+                final boolean ignoreCase,
+                final Adapter adapter)
             throws TorqueException
     {
         if (!(whereClausePart.getRValue() instanceof String))
@@ -153,7 +153,10 @@ public class LikeBuilder extends Abstrac
                     whereClausePart.getLValue(), ignoreCase, adapter);
         }
 
-        if (replaceWithEquals)
+        if (replaceWithEquals
+                && !whereClausePart.getOperator().equals(SqlEnum.NOT_ILIKE)
+                && !whereClausePart.getOperator().equals(SqlEnum.ILIKE)
+                )
         {
             if (whereClausePart.getOperator().equals(SqlEnum.NOT_LIKE)
                     || whereClausePart.getOperator().equals(SqlEnum.NOT_ILIKE))
@@ -210,8 +213,8 @@ public class LikeBuilder extends Abstrac
      * {@inheritDoc}
      */
     public boolean isApplicable(
-            WhereClauseExpression whereClauseExpression,
-            Adapter adapter)
+            final WhereClauseExpression whereClauseExpression,
+            final Adapter adapter)
     {
         if (whereClauseExpression.getOperator().equals(SqlEnum.LIKE)
             || whereClauseExpression.getOperator().equals(SqlEnum.NOT_LIKE)

Modified: 
db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java?rev=1622341&r1=1622340&r2=1622341&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java
 (original)
+++ 
db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/sql/SqlBuilderTest.java
 Wed Sep  3 19:53:25 2014
@@ -1917,6 +1917,25 @@ public class SqlBuilderTest extends Base
                 query.getPreparedStatementReplacements().get(0));
     }
 
+    public void testIlikeNoWildcard() throws Exception
+    {
+        Criteria criteria = new Criteria();
+        criteria.addSelectColumn(new ColumnImpl("table.column1"));
+        criteria.where(
+                new ColumnImpl("table.column2"),
+                "value2",
+                Criteria.ILIKE);
+
+        Query query = SqlBuilder.buildQuery(criteria);
+        assertEquals("SELECT table.column1 FROM table "
+                + "WHERE table.column2 ILIKE ?",
+            query.toString());
+        assertEquals(1, query.getPreparedStatementReplacements().size());
+        assertEquals(
+                "value2",
+                query.getPreparedStatementReplacements().get(0));
+    }
+
     public void testNotIlike() throws Exception
     {
         Criteria criteria = new Criteria();
@@ -1936,6 +1955,25 @@ public class SqlBuilderTest extends Base
                 query.getPreparedStatementReplacements().get(0));
     }
 
+    public void testNotIlikeNoWildcard() throws Exception
+    {
+        Criteria criteria = new Criteria();
+        criteria.addSelectColumn(new ColumnImpl("table.column1"));
+        criteria.where(
+                new ColumnImpl("table.column2"),
+                "value2",
+                Criteria.NOT_ILIKE);
+
+        Query query = SqlBuilder.buildQuery(criteria);
+        assertEquals("SELECT table.column1 FROM table "
+                + "WHERE table.column2 NOT ILIKE ?",
+            query.toString());
+        assertEquals(1, query.getPreparedStatementReplacements().size());
+        assertEquals(
+                "value2",
+                query.getPreparedStatementReplacements().get(0));
+    }
+
     public void testLvalueString() throws Exception
     {
         Criteria criteria = new Criteria();



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org
For additional commands, e-mail: torque-dev-h...@db.apache.org

Reply via email to