cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From and...@apache.org
Subject svn commit: r813536 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java
Date Thu, 10 Sep 2009 18:20:14 GMT
Author: andrey
Date: Thu Sep 10 18:20:13 2009
New Revision: 813536

URL: http://svn.apache.org/viewvc?rev=813536&view=rev
Log:
CAY-1263 Cayenne Oracle adapter should automatically strip IN clauses with more than 1000
elements -- same for NOT IN

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java?rev=813536&r1=813535&r2=813536&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java
(original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleQualifierTranslator.java
Thu Sep 10 18:20:13 2009
@@ -27,6 +27,8 @@
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.parser.ASTIn;
 import org.apache.cayenne.exp.parser.ASTList;
+import org.apache.cayenne.exp.parser.ASTNegate;
+import org.apache.cayenne.exp.parser.ASTNotIn;
 import org.apache.cayenne.exp.parser.ASTPath;
 import org.apache.commons.collections.Transformer;
 
@@ -61,7 +63,11 @@
                 return exp;
             }
             
-            return trimmedInExpression((ASTPath) exp.getOperand(0), objects, maxInSize);
+            Expression trimmed = trimmedInExpression((ASTPath) exp.getOperand(0), objects,
maxInSize);
+            if (exp instanceof ASTNotIn) {
+                return new ASTNegate(trimmed);
+            }
+            return trimmed;
         }
         
         Expression trimmedInExpression(ASTPath path, Object[] values, int maxInSize) {
@@ -84,7 +90,7 @@
         }
 
         public Object transform(Object input) {
-            if (input instanceof Expression && ((Expression) input).getType() ==
Expression.IN) {
+            if (input instanceof ASTIn || input instanceof ASTNotIn) {
                 return trimmedInExpression((Expression) input, 1000);
             }
             return input;



Mime
View raw message