You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2008/08/16 10:13:26 UTC
svn commit: r686462 - in /openjpa/branches/1.2.x/openjpa-slice/src:
main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java
main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java
test/java/org/apache/openjpa/slice/TestQuery.java
Author: ppoddar
Date: Sat Aug 16 01:13:25 2008
New Revision: 686462
URL: http://svn.apache.org/viewvc?rev=686462&view=rev
Log:
merge 686453 for hint processing changes required due to eager compilation of Query in OPENJPA-678
Modified:
openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java
openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java
openjpa/branches/1.2.x/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java
Modified: openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java?rev=686462&r1=686461&r2=686462&view=diff
==============================================================================
--- openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java (original)
+++ openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreManager.java Sat Aug 16 01:13:25 2008
@@ -102,6 +102,10 @@
public DistributedJDBCConfiguration getConfiguration() {
return _conf;
}
+
+ public SliceStoreManager getSlice(int i) {
+ return _slices.get(i);
+ }
/**
* Decides the index of the StoreManager by first looking at the
Modified: openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java?rev=686462&r1=686461&r2=686462&view=diff
==============================================================================
--- openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java (original)
+++ openjpa/branches/1.2.x/openjpa-slice/src/main/java/org/apache/openjpa/slice/jdbc/DistributedStoreQuery.java Sat Aug 16 01:13:25 2008
@@ -32,6 +32,7 @@
import org.apache.openjpa.kernel.FetchConfiguration;
import org.apache.openjpa.kernel.OrderingMergedResultObjectProvider;
import org.apache.openjpa.kernel.QueryContext;
+import org.apache.openjpa.kernel.StoreManager;
import org.apache.openjpa.kernel.StoreQuery;
import org.apache.openjpa.kernel.exps.ExpressionParser;
import org.apache.openjpa.lib.rop.MergedResultObjectProvider;
@@ -61,17 +62,15 @@
_queries.add(q);
}
+ public DistributedStoreManager getDistributedStore() {
+ return (DistributedStoreManager)getStore();
+ }
+
public Executor newDataStoreExecutor(ClassMetaData meta, boolean subs) {
ParallelExecutor ex = new ParallelExecutor(this, meta, subs, _parser,
ctx.getCompilation());
-
- FetchConfiguration fetch = getContext().getFetchConfiguration();
- DistributedStoreManager store = (DistributedStoreManager)getContext()
- .getStoreContext().getStoreManager().getInnermostDelegate();
- List<SliceStoreManager> targets = store.getTargets(fetch);
- for (StoreQuery q:_queries) {
- if (targets.contains(((JDBCStoreQuery)q).getStore()))
- ex.addExecutor(q.newDataStoreExecutor(meta, subs));
+ for (StoreQuery q : _queries) {
+ ex.addExecutor(q.newDataStoreExecutor(meta, subs));
}
return ex;
}
@@ -117,19 +116,23 @@
*/
public ResultObjectProvider executeQuery(StoreQuery q,
final Object[] params, final Range range) {
- ResultObjectProvider[] tmp = new ResultObjectProvider[executors.size()];
- final Iterator<StoreQuery> qs = owner._queries.iterator();
final List<Future<ResultObjectProvider>> futures =
new ArrayList<Future<ResultObjectProvider>>();
- int i = 0;
- for (Executor ex:executors) {
+ List<SliceStoreManager> targets = findTargets();
+ for (int i = 0; i < owner._queries.size(); i++) {
+ StoreQuery query = owner._queries.get(i);
+ StoreManager sm = owner.getDistributedStore().getSlice(i);
+ if (!targets.contains(sm))
+ continue;
QueryExecutor call = new QueryExecutor();
- call.executor = ex;
- call.query = qs.next();
+ call.executor = executors.get(i);
+ call.query = query;
call.params = params;
call.range = range;
futures.add(threadPool.submit(call));
}
+ int i = 0;
+ ResultObjectProvider[] tmp = new ResultObjectProvider[futures.size()];
for (Future<ResultObjectProvider> future:futures) {
try {
tmp[i++] = future.get();
@@ -210,6 +213,11 @@
}
return new Integer(N);
}
+
+ List<SliceStoreManager> findTargets() {
+ FetchConfiguration fetch = owner.getContext().getFetchConfiguration();
+ return owner.getDistributedStore().getTargets(fetch);
+ }
}
Modified: openjpa/branches/1.2.x/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java?rev=686462&r1=686461&r2=686462&view=diff
==============================================================================
--- openjpa/branches/1.2.x/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java (original)
+++ openjpa/branches/1.2.x/openjpa-slice/src/test/java/org/apache/openjpa/slice/TestQuery.java Sat Aug 16 01:13:25 2008
@@ -111,10 +111,6 @@
em.getTransaction().rollback();
}
- /**
- * Retired temporarily. Most likely side-effect of eager compilation of
- * query introduced recently.
- */
public void testHint() {
List<String> targets = new ArrayList<String>();
targets.add("Even");