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 2010/02/04 20:38:28 UTC
svn commit: r906614 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/
Author: faywang
Date: Thu Feb 4 19:38:27 2010
New Revision: 906614
URL: http://svn.apache.org/viewvc?rev=906614&view=rev
Log:
OPENJPA-1493: performance fix in getTableIndex
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/Select.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java?rev=906614&r1=906613&r2=906614&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java Thu Feb 4 19:38:27 2010
@@ -166,7 +166,9 @@
subsel.setParent(sel, subquery.getCandidateAlias());
}
}
-
+ if (HasContainsExpressionVisitor.hasContains(exps.filter)) {
+ sel.setHasSubselect(true);
+ }
initialize(sel, ctx, exps, state);
if (!sel.getAutoDistinct()) {
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java?rev=906614&r1=906613&r2=906614&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/LogicalUnion.java Thu Feb 4 19:38:27 2010
@@ -443,6 +443,14 @@
throw new UnsupportedException(_loc.get("union-element"));
}
+ public void setHasSubselect(boolean hasSub) {
+ sel.setHasSubselect(hasSub);
+ }
+
+ public boolean getHasSubselect() {
+ return sel.getHasSubselect();
+ }
+
public Select getFromSelect() {
return null;
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/Select.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/Select.java?rev=906614&r1=906613&r2=906614&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/Select.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/Select.java Thu Feb 4 19:38:27 2010
@@ -719,4 +719,18 @@
* @param schemaAlias
*/
public void setSchemaAlias(String schemaAlias);
+
+ /**
+ * Set the flag to indicate whether this Select has
+ * internally generated subselect
+ */
+ public void setHasSubselect(boolean hasSub);
+
+ /**
+ * Return the flag to indicate whether this Select has
+ * internally generated subselect
+ * @return
+ */
+ public boolean getHasSubselect();
+
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java?rev=906614&r1=906613&r2=906614&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java Thu Feb 4 19:38:27 2010
@@ -158,6 +158,7 @@
private List _subsels = null;
private SelectImpl _parent = null;
private String _subPath = null;
+ private boolean _hasSub = false;
// from select if this select selects from a tmp table created by another
private SelectImpl _from = null;
@@ -559,6 +560,14 @@
}
}
+ public void setHasSubselect(boolean hasSub) {
+ _hasSub = hasSub;
+ }
+
+ public boolean getHasSubselect() {
+ return _hasSub;
+ }
+
public Map getAliases() {
return _aliases;
}
@@ -1990,8 +1999,9 @@
if (pj != null && pj.path() != null)
key = new Key(pj.path().toString(), key);
- if (_ctx != null && (_parent != null || _subsels != null))
+ if (_ctx != null && (_parent != null || _subsels != null || _hasSub)) {
i = findAliasForQuery(table, pj, key, create);
+ }
if (i != null)
return i.intValue();
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=906614&r1=906613&r2=906614&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Thu Feb 4 19:38:27 2010
@@ -1161,7 +1161,6 @@
executeAndCompareSQL(q, sql);
}
- @AllowFailure(message="The expected sql string is incorrect")
public void testValues5() {
String sql = "SELECT t0.name, t2.id, t2.label FROM CR_ITEM t0 "
+ "INNER JOIN CR_ITEM_photos t1 ON t0.id = t1.ITEM_ID "