You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2010/11/17 13:53:17 UTC
svn commit: r1036017 -
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
Author: oltka
Date: Wed Nov 17 12:53:16 2010
New Revision: 1036017
URL: http://svn.apache.org/viewvc?rev=1036017&view=rev
Log:
CAY-1511 Problem in db2: comparison operators are not supported on Clob object values.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java?rev=1036017&r1=1036016&r2=1036017&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java Wed Nov 17 12:53:16 2010
@@ -27,6 +27,9 @@ import org.apache.cayenne.access.trans.Q
import org.apache.cayenne.access.trans.TrimmingQualifierTranslator;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.parser.ASTEqual;
+import org.apache.cayenne.exp.parser.ASTNotEqual;
+import org.apache.cayenne.exp.parser.SimpleNode;
import org.apache.cayenne.map.DbAttribute;
/**
@@ -97,4 +100,32 @@ public class DB2QualifierTranslator exte
out.append(")");
}
}
+
+ @Override
+ protected void processColumnWithQuoteSqlIdentifiers(
+ DbAttribute dbAttr,
+ Expression pathExp) throws IOException {
+
+ SimpleNode parent = null;
+ if (pathExp instanceof SimpleNode) {
+ parent = (SimpleNode) ((SimpleNode) pathExp).jjtGetParent();
+ }
+
+ // problem in db2 : Comparisons between CLOB and CLOB are not supported.
+ // we need do it by casting the Clob to VARCHAR.
+ if (parent != null
+ && (parent instanceof ASTEqual || parent instanceof ASTNotEqual)
+ && dbAttr.getType() == Types.CLOB
+ && parent.getOperandCount() == 2
+ && parent.getOperand(1) instanceof String) {
+ Integer size = parent.getOperand(1).toString().length() + 1;
+
+ out.append("CAST(");
+ super.processColumnWithQuoteSqlIdentifiers(dbAttr, pathExp);
+ out.append(" AS VARCHAR(" + size + "))");
+ }
+ else {
+ super.processColumnWithQuoteSqlIdentifiers(dbAttr, pathExp);
+ }
+ }
}