You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2009/04/18 04:54:36 UTC
svn commit: r766204 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/
Author: faywang
Date: Sat Apr 18 02:54:35 2009
New Revision: 766204
URL: http://svn.apache.org/viewvc?rev=766204&view=rev
Log:
OPENJPA-1024: subquery support of nullif and coalesce for enum literals
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NullIfExpression.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Customer.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java?rev=766204&r1=766203&r2=766204&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/CoalesceExpression.java Sat Apr 18 02:54:35 2009
@@ -28,6 +28,7 @@
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.Filters;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
+import org.apache.openjpa.kernel.exps.Value;
import org.apache.openjpa.meta.ClassMetaData;
/**
@@ -41,6 +42,8 @@
private final Val[] _vals;
private ClassMetaData _meta = null;
private Class _cast = null;
+ private Value other = null;
+ private ExpState otherState = null;
/**
* Constructor.
@@ -171,5 +174,21 @@
public void setMetaData(ClassMetaData meta) {
_meta = meta;
}
+
+ public void setOtherPath(Value other) {
+ this.other = other;
+ }
+
+ public Value getOtherPath() {
+ return other;
+ }
+
+ public void setOtherState(ExpState otherState) {
+ this.otherState = otherState;
+ }
+
+ public ExpState getOtherState() {
+ return otherState;
+ }
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NullIfExpression.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NullIfExpression.java?rev=766204&r1=766203&r2=766204&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NullIfExpression.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NullIfExpression.java Sat Apr 18 02:54:35 2009
@@ -27,6 +27,7 @@
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.Filters;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
+import org.apache.openjpa.kernel.exps.Value;
import org.apache.openjpa.meta.ClassMetaData;
/**
@@ -41,6 +42,8 @@
private final Val _val2;
private ClassMetaData _meta = null;
private Class _cast = null;
+ private Value other = null;
+ private ExpState otherState = null;
/**
* Constructor.
@@ -155,5 +158,22 @@
public void setMetaData(ClassMetaData meta) {
_meta = meta;
}
+
+ public void setOtherPath(Value other) {
+ this.other = other;
+ }
+
+ public Value getOtherPath() {
+ return other;
+ }
+
+ public void setOtherState(ExpState otherState) {
+ this.otherState = otherState;
+ }
+
+ public ExpState getOtherState() {
+ return otherState;
+ }
+
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java?rev=766204&r1=766203&r2=766204&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SubQ.java Sat Apr 18 02:54:35 2009
@@ -158,6 +158,12 @@
} else if (projs[i] instanceof SimpleCaseExpression) {
((SimpleCaseExpression)projs[i]).setOtherPath(other);
((SimpleCaseExpression)projs[i]).setOtherState(otherState);
+ } else if (projs[i] instanceof NullIfExpression) {
+ ((NullIfExpression)projs[i]).setOtherPath(other);
+ ((NullIfExpression)projs[i]).setOtherState(otherState);
+ } else if (projs[i] instanceof CoalesceExpression) {
+ ((CoalesceExpression)projs[i]).setOtherPath(other);
+ ((CoalesceExpression)projs[i]).setOtherState(otherState);
}
}
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Customer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Customer.java?rev=766204&r1=766203&r2=766204&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Customer.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Customer.java Sat Apr 18 02:54:35 2009
@@ -67,7 +67,7 @@
@Column(length=30)
@Basic
String name;
- @Enumerated
+ @Enumerated(EnumType.STRING)
@Basic
CreditRating creditRating;
@Version
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java?rev=766204&r1=766203&r2=766204&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestSubquery.java Sat Apr 18 02:54:35 2009
@@ -114,7 +114,8 @@
"select o.oid from Order o where o.customer.name in" +
" (select CONCAT(o.customer.name, 'XX') from Order o" +
- " where o.amount > 10)",
+ " where o.amount > 10)",
+
"select c from Customer c where c.creditRating =" +
" (select " +
" CASE WHEN o2.amount > 10 THEN " +
@@ -126,6 +127,16 @@
" END " +
" from Order o2" +
" where c.cid.id = o2.customer.cid.id)",
+
+ "select c from Customer c " +
+ "where c.creditRating = (select COALESCE (c1.creditRating, " +
+ "org.apache.openjpa.persistence.query.Customer$CreditRating.POOR) " +
+ "from Customer c1 where c1.name = 'Famzy') order by c.name DESC",
+
+ "select c from Customer c " +
+ "where c.creditRating = (select NULLIF (c1.creditRating, " +
+ "org.apache.openjpa.persistence.query.Customer$CreditRating.POOR) " +
+ "from Customer c1 where c1.name = 'Famzy') order by c.name DESC",
};
static String[] updates = new String[] {