You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2012/05/05 12:01:38 UTC

svn commit: r1334372 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access: DataContext.java DataContextQueryAction.java DataDomain.java HierarchicalObjectResolver.java IncrementalFaultList.java

Author: aadamchik
Date: Sat May  5 10:01:37 2012
New Revision: 1334372

URL: http://svn.apache.org/viewvc?rev=1334372&view=rev
Log:
CAY-1700 Split long DISJOINT_BY_ID prefetch query on several smaller queries

cleanup

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=1334372&r1=1334371&r2=1334372&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java Sat May  5 10:01:37 2012
@@ -203,15 +203,6 @@ public class DataContext extends BaseCon
     }
 
     /**
-     * Returns runtime properties fetched from parent data domain.
-     *
-     * @since 3.1
-     */
-    public RuntimeProperties getRuntimeProperties() {
-        return getParentDataDomain().getRuntimeProperties();
-    }
-
-    /**
      * Sets a DataContextDelegate for this context. Delegate is notified of certain events
      * in the DataContext lifecycle and can customize DataContext behavior.
      * 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java?rev=1334372&r1=1334371&r2=1334372&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java Sat May  5 10:01:37 2012
@@ -86,8 +86,7 @@ class DataContextQueryAction extends Obj
                     // would be nice to implement an alternative algorithm that wouldn't
                     // require this hack.
                     if (oidQuery.isFetchingDataRows()) {
-                        object = ((DataContext) actingContext)
-                                .currentSnapshot((Persistent) object);
+                        object = actingDataContext.currentSnapshot((Persistent) object);
                     }
                     // do not return hollow objects
                     else if (((Persistent) object).getPersistenceState() == PersistenceState.HOLLOW) {
@@ -109,15 +108,21 @@ class DataContextQueryAction extends Obj
 
             DbEntity dbEntity = metadata.getDbEntity();
             Integer maxIdQualifierSize = actingDataContext
-                    .getRuntimeProperties().getInt(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, -1);
+                    .getParentDataDomain()
+                    .getRuntimeProperties()
+                    .getInt(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, -1);
             List<?> paginatedList;
             if (dbEntity != null && dbEntity.getPrimaryKeys().size() == 1) {
                 paginatedList = new SimpleIdIncrementalFaultList<Object>(
-                        (DataContext) actingContext, query, maxIdQualifierSize);
+                        actingDataContext,
+                        query,
+                        maxIdQualifierSize);
             }
             else {
                 paginatedList = new IncrementalFaultList<Object>(
-                        (DataContext) actingContext, query, maxIdQualifierSize);
+                        actingDataContext,
+                        query,
+                        maxIdQualifierSize);
             }
 
             response = new ListResponse(paginatedList);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java?rev=1334372&r1=1334371&r2=1334372&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomain.java Sat May  5 10:01:37 2012
@@ -38,7 +38,6 @@ import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.access.jdbc.BatchQueryBuilderFactory;
 import org.apache.cayenne.cache.NestedQueryCache;
 import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.ObjectContextFactory;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.di.BeforeScopeEnd;
@@ -78,6 +77,9 @@ public class DataDomain implements Query
     @Inject
     protected JdbcEventLogger jdbcEventLogger;
 
+    /**
+     * @since 3.1
+     */
     @Inject
     protected RuntimeProperties runtimeProperties;
 
@@ -602,7 +604,7 @@ public class DataDomain implements Query
     public DataNode getNode(String nodeName) {
         return getDataNode(nodeName);
     }
-    
+
     /**
      * Returns registered DataNode whose name matches <code>name</code> parameter.
      * 
@@ -944,10 +946,10 @@ public class DataDomain implements Query
 
     /**
      * Returns global runtime properties for this data domain.
-     *
+     * 
      * @since 3.1
      */
-    public RuntimeProperties getRuntimeProperties() {
+    RuntimeProperties getRuntimeProperties() {
         return runtimeProperties;
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java?rev=1334372&r1=1334371&r2=1334372&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java Sat May  5 10:01:37 2012
@@ -162,13 +162,16 @@ class HierarchicalObjectResolver {
 
             List<?> parentDataRows;
             if (parentProcessorNode instanceof PrefetchProcessorJointNode) {
-                parentDataRows = ((PrefetchProcessorJointNode) parentProcessorNode).getResolvedRows();
+                parentDataRows = ((PrefetchProcessorJointNode) parentProcessorNode)
+                        .getResolvedRows();
             }
             else {
                 parentDataRows = parentProcessorNode.getDataRows();
             }
 
-            int maxIdQualifierSize = context.getRuntimeProperties()
+            int maxIdQualifierSize = context
+                    .getParentDataDomain()
+                    .getRuntimeProperties()
                     .getInt(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, -1);
 
             List<PrefetchSelectQuery> queries = new ArrayList<PrefetchSelectQuery>();
@@ -217,7 +220,8 @@ class HierarchicalObjectResolver {
                 if (relationship.isSourceIndependentFromTargetChange()) {
                     // setup extra result columns to be able to relate result rows to the
                     // parent result objects.
-                    query.addResultPath("db:" + relationship.getReverseDbRelationshipPath());
+                    query.addResultPath("db:"
+                            + relationship.getReverseDbRelationshipPath());
                 }
                 dataRows.addAll(context.performQuery(query));
             }
@@ -288,7 +292,8 @@ class HierarchicalObjectResolver {
 
             // TODO: see TODO in ObjectResolver.relatedObjectsFromDataRows
 
-            if ((node.isDisjointPrefetch() || node.isDisjointByIdPrefetch()) && !needToSaveDuplicates) {
+            if ((node.isDisjointPrefetch() || node.isDisjointByIdPrefetch())
+                    && !needToSaveDuplicates) {
                 PrefetchProcessorNode processorNode = (PrefetchProcessorNode) node;
                 if (processorNode.isJointChildren()) {
                     List<Persistent> objects = processorNode.getObjects();

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java?rev=1334372&r1=1334371&r2=1334372&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/IncrementalFaultList.java Sat May  5 10:01:37 2012
@@ -84,6 +84,14 @@ public class IncrementalFaultList<E> imp
     // or complexity of the where clause - e.g., PostgreSQL having a default limit of
     // 10,000 nested expressions.
 
+    
+    /**
+     * @deprecated since 3.1 use {@link #IncrementalFaultList(DataContext, Query, int)}.
+     */
+    public IncrementalFaultList(DataContext dataContext, Query query) {
+        this(dataContext, query, 10000);
+    }
+    
     /**
      * Creates a new IncrementalFaultList using a given DataContext and query.
      *