You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jg...@apache.org on 2013/10/29 17:23:37 UTC

svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/

Author: jgrassel
Date: Tue Oct 29 16:23:36 2013
New Revision: 1536793

URL: http://svn.apache.org/r1536793
Log:
OPENJPA-2414: FinderCache does not consider active Fetch Groups/FetchPlan added Fields

Modified:
    openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
    openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
    openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
    openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
    openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java

Modified: openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java (original)
+++ openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java Tue Oct 29 16:23:36 2013
@@ -109,7 +109,7 @@ public class FinderCacheImpl 
         }
         
         // FinderCache only operates with Default Fetch Plans
-        if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
+        if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
             return null;
         }
         
@@ -152,7 +152,7 @@ public class FinderCacheImpl 
             }
             
             // FinderCache only operates with Default Fetch Plans
-            if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
+            if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
                 return null;
             }           
             

Modified: openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java?rev=1536793&r1=1536792&r2=1536793&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java (original)
+++ openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java Tue Oct 29 16:23:36 2013
@@ -77,6 +77,7 @@ public class Compatibility {
     private boolean _singletonLifecycleEventManager = false;
     private boolean _filterPCRegistryClasses = false; // OPENJPA-2288
     private boolean _returnNullOnEmptyAggregateResult = true;   // OPENJPA-1794
+    private boolean _cacheNonDefaultFetchPlanQueries = false; // OPENJPA-2414
 
     /**
      * Whether to require exact identity value types when creating object
@@ -763,4 +764,18 @@ public class Compatibility {
     public void setReturnNullOnAggregateResult(boolean returnNullOnEmptyAggregateResult) {
         _returnNullOnEmptyAggregateResult = returnNullOnEmptyAggregateResult;
     }
+    
+    /**
+     * Whether the SQL generated for queries executed with a modified fetch plan are cached.
+     */
+    public boolean  getCacheNonDefaultFetchPlanQueries() { 
+        return _cacheNonDefaultFetchPlanQueries;
+    }
+     
+    /**
+     * Whether the SQL generated for queries executed with a modified fetch plan are cached.
+     */
+    public void setCacheNonDefaultFetchPlanQueries(boolean bool) {
+        _cacheNonDefaultFetchPlanQueries = bool;
+    }
 }

Modified: openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java (original)
+++ openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java Tue Oct 29 16:23:36 2013
@@ -595,4 +595,12 @@ public class DelegatingFetchConfiguratio
             throw translate(re);
         }
     }
+    
+    public boolean isFetchConfigurationSQLCacheAdmissible() {
+       try {
+           return _fetch.isFetchConfigurationSQLCacheAdmissible();
+       } catch (RuntimeException re) {
+            throw translate(re);
+       }
+    }
 }

Modified: openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java (original)
+++ openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java Tue Oct 29 16:23:36 2013
@@ -474,4 +474,9 @@ public interface FetchConfiguration
      * @since 0.4.1
      */
     public FetchConfiguration traverse(FieldMetaData fm);
+    
+    /**
+     * Whether SQL generated by the FetchConfiguration's current configuration should be cached.
+     */
+    public boolean isFetchConfigurationSQLCacheAdmissible();
 }

Modified: openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java (original)
+++ openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java Tue Oct 29 16:23:36 2013
@@ -148,7 +148,8 @@ public class FetchConfigurationImpl
         public boolean fetchGroupIsPUDefault = false;
         public boolean extendedPathLookup = false;
         public DataCacheRetrieveMode cacheRetrieveMode = DataCacheRetrieveMode.USE;
-        public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE;        
+        public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE;
+        public boolean cacheNonDefaultFetchPlanQueries = false;      
     }
 
     private final ConfigurationState _state;
@@ -193,6 +194,8 @@ public class FetchConfigurationImpl
         
         addFetchGroups(Arrays.asList(fetchGroupList));
         setMaxFetchDepth(conf.getMaxFetchDepth());
+        
+        _state.cacheNonDefaultFetchPlanQueries = conf.getCompatibilityInstance().getCacheNonDefaultFetchPlanQueries();
     }
 
     /**
@@ -201,6 +204,7 @@ public class FetchConfigurationImpl
     public Object clone() {
         FetchConfigurationImpl clone = newInstance(null);
         clone._state.ctx = _state.ctx;
+        clone._state.cacheNonDefaultFetchPlanQueries = _state.cacheNonDefaultFetchPlanQueries;
         clone._parent = _parent;
         clone._fromField = _fromField;
         clone._fromType = _fromType;
@@ -346,7 +350,7 @@ public class FetchConfigurationImpl
         return addFetchGroup(name, true);
     }
      
-    public FetchConfiguration addFetchGroup(String name, boolean recomputeIsDefault) {
+    private FetchConfiguration addFetchGroup(String name, boolean recomputeIsDefault) {
         if (StringUtils.isEmpty(name))
             throw new UserException(_loc.get("null-fg"));
 
@@ -383,7 +387,7 @@ public class FetchConfigurationImpl
         return removeFetchGroup(group, true);
     }
 
-    public FetchConfiguration removeFetchGroup(String group, boolean recomputeIsDefault) {
+    private FetchConfiguration removeFetchGroup(String group, boolean recomputeIsDefault) {
         lock();
         try {
             if (_state.fetchGroups != null) {
@@ -482,6 +486,15 @@ public class FetchConfigurationImpl
     public boolean isDefaultPUFetchGroupConfigurationOnly() {
         return _state.fetchGroupIsPUDefault;
     }
+    
+    public boolean isFetchConfigurationSQLCacheAdmissible() {
+        if (_state == null || _state.cacheNonDefaultFetchPlanQueries) {
+            return false;
+        } else {
+            // Only pctx-default matching FetchConfiguration generated SQL is cache permissible
+            return _state.fetchGroupIsPUDefault;
+        }
+    }
 
     public Set<String> getFields() {
         if (_state.fields == null) return Collections.emptySet();
@@ -518,6 +531,7 @@ public class FetchConfigurationImpl
                 _state.fields = new HashSet<String>();
             _state.fields.addAll(fields);
         } finally {
+            verifyDefaultPUFetchGroups();
             unlock();
         }
         return this;



Re: svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/

Posted by Mark Struberg <st...@yahoo.de>.
great, txs Jody!

LieGrue,
strub




----- Original Message -----
> From: Jody Grassel <fy...@gmail.com>
> To: dev@openjpa.apache.org; Mark Struberg <st...@yahoo.de>
> Cc: 
> Sent: Tuesday, 29 October 2013, 19:10
> Subject: Re: svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
> 
> Yes, all fixes for OJ-2414 that went into 2.3.x have been checked into
> trunk.
> 
> 
> 
> On Tue, Oct 29, 2013 at 12:50 PM, Mark Struberg <st...@yahoo.de> wrote:
> 
>>  jody, did you also fix this in trunk?
>> 
>>  I'm assuming that all bugs fixed in 2.3.x also work in and got applied 
> to
>>  trunk
>> 
>> 
>>  txs and LieGrue,
>>  strub
>> 
>> 
>> 
>>  ----- Original Message -----
>>  > From: "jgrassel@apache.org" <jg...@apache.org>
>>  > To: commits@openjpa.apache.org
>>  > Cc:
>>  > Sent: Tuesday, 29 October 2013, 17:23
>>  > Subject: svn commit: r1536793 - in /openjpa/branches/2.3.x:
>>  openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
>>  openjpa-kernel/src/main/java/org/apache/openjpa/conf/
>>  openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
>>  >
>>  > Author: jgrassel
>>  > Date: Tue Oct 29 16:23:36 2013
>>  > New Revision: 1536793
>>  >
>>  > URL: http://svn.apache.org/r1536793
>>  > Log:
>>  > OPENJPA-2414: FinderCache does not consider active Fetch
>>  Groups/FetchPlan added
>>  > Fields
>>  >
>>  > Modified:
>>  >
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
>>  >
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
>>  >
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
>>  >
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
>>  >
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
>>  >
>>  > Modified:
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
>>  > URL:
>>  >
>> 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
>>  >
>> 
> ==============================================================================
>>  > ---
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
>>  > (original)
>>  > +++
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
>>  > Tue Oct 29 16:23:36 2013
>>  > @@ -109,7 +109,7 @@ public class FinderCacheImpl
>>  >          }
>>  >
>>  >          // FinderCache only operates with Default Fetch Plans
>>  > -        if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
>>  > +        if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
>>  >              return null;
>>  >          }
>>  >
>>  > @@ -152,7 +152,7 @@ public class FinderCacheImpl
>>  >              }
>>  >
>>  >              // FinderCache only operates with Default Fetch Plans
>>  > -            if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) 
> {
>>  > +            if (!fetch.isFetchConfigurationSQLCacheAdmissible()) 
> {
>>  >                  return null;
>>  >              }
>>  >
>>  >
>>  > Modified:
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
>>  > URL:
>>  >
>> 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java?rev=1536793&r1=1536792&r2=1536793&view=diff
>>  >
>> 
> ==============================================================================
>>  > ---
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
>>  > (original)
>>  > +++
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
>>  > Tue Oct 29 16:23:36 2013
>>  > @@ -77,6 +77,7 @@ public class Compatibility {
>>  >      private boolean _singletonLifecycleEventManager = false;
>>  >      private boolean _filterPCRegistryClasses = false; // OPENJPA-2288
>>  >      private boolean _returnNullOnEmptyAggregateResult = true;   //
>>  OPENJPA-1794
>>  > +    private boolean _cacheNonDefaultFetchPlanQueries = false; //
>>  OPENJPA-2414
>>  >
>>  >      /**
>>  >       * Whether to require exact identity value types when creating
>>  object
>>  > @@ -763,4 +764,18 @@ public class Compatibility {
>>  >      public void setReturnNullOnAggregateResult(boolean
>>  > returnNullOnEmptyAggregateResult) {
>>  >          _returnNullOnEmptyAggregateResult =
>>  returnNullOnEmptyAggregateResult;
>>  >      }
>>  > +
>>  > +    /**
>>  > +     * Whether the SQL generated for queries executed with a modified
>>  fetch
>>  > plan are cached.
>>  > +     */
>>  > +    public boolean  getCacheNonDefaultFetchPlanQueries() {
>>  > +        return _cacheNonDefaultFetchPlanQueries;
>>  > +    }
>>  > +
>>  > +    /**
>>  > +     * Whether the SQL generated for queries executed with a modified
>>  fetch
>>  > plan are cached.
>>  > +     */
>>  > +    public void setCacheNonDefaultFetchPlanQueries(boolean bool) 
> {
>>  > +        _cacheNonDefaultFetchPlanQueries = bool;
>>  > +    }
>>  > }
>>  >
>>  > Modified:
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
>>  > URL:
>>  >
>> 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
>>  >
>> 
> ==============================================================================
>>  > ---
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
>>  > (original)
>>  > +++
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
>>  > Tue Oct 29 16:23:36 2013
>>  > @@ -595,4 +595,12 @@ public class DelegatingFetchConfiguratio
>>  >              throw translate(re);
>>  >          }
>>  >      }
>>  > +
>>  > +    public boolean isFetchConfigurationSQLCacheAdmissible() {
>>  > +       try {
>>  > +           return _fetch.isFetchConfigurationSQLCacheAdmissible();
>>  > +       } catch (RuntimeException re) {
>>  > +            throw translate(re);
>>  > +       }
>>  > +    }
>>  > }
>>  >
>>  > Modified:
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
>>  > URL:
>>  >
>> 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
>>  >
>> 
> ==============================================================================
>>  > ---
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
>>  > (original)
>>  > +++
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
>>  > Tue Oct 29 16:23:36 2013
>>  > @@ -474,4 +474,9 @@ public interface FetchConfiguration
>>  >       * @since 0.4.1
>>  >       */
>>  >      public FetchConfiguration traverse(FieldMetaData fm);
>>  > +
>>  > +    /**
>>  > +     * Whether SQL generated by the FetchConfiguration's current
>>  > configuration should be cached.
>>  > +     */
>>  > +    public boolean isFetchConfigurationSQLCacheAdmissible();
>>  > }
>>  >
>>  > Modified:
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
>>  > URL:
>>  >
>> 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
>>  >
>> 
> ==============================================================================
>>  > ---
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
>>  > (original)
>>  > +++
>>  >
>> 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
>>  > Tue Oct 29 16:23:36 2013
>>  > @@ -148,7 +148,8 @@ public class FetchConfigurationImpl
>>  >          public boolean fetchGroupIsPUDefault = false;
>>  >          public boolean extendedPathLookup = false;
>>  >          public DataCacheRetrieveMode cacheRetrieveMode =
>>  > DataCacheRetrieveMode.USE;
>>  > -        public DataCacheStoreMode cacheStoreMode =
>>  DataCacheStoreMode.USE;
>>  >
>>  > +        public DataCacheStoreMode cacheStoreMode =
>>  DataCacheStoreMode.USE;
>>  > +        public boolean cacheNonDefaultFetchPlanQueries = false;
>>  >      }
>>  >
>>  >      private final ConfigurationState _state;
>>  > @@ -193,6 +194,8 @@ public class FetchConfigurationImpl
>>  >
>>  >          addFetchGroups(Arrays.asList(fetchGroupList));
>>  >          setMaxFetchDepth(conf.getMaxFetchDepth());
>>  > +
>>  > +        _state.cacheNonDefaultFetchPlanQueries =
>>  > conf.getCompatibilityInstance().getCacheNonDefaultFetchPlanQueries();
>>  >      }
>>  >
>>  >      /**
>>  > @@ -201,6 +204,7 @@ public class FetchConfigurationImpl
>>  >      public Object clone() {
>>  >          FetchConfigurationImpl clone = newInstance(null);
>>  >          clone._state.ctx = _state.ctx;
>>  > +        clone._state.cacheNonDefaultFetchPlanQueries =
>>  > _state.cacheNonDefaultFetchPlanQueries;
>>  >          clone._parent = _parent;
>>  >          clone._fromField = _fromField;
>>  >          clone._fromType = _fromType;
>>  > @@ -346,7 +350,7 @@ public class FetchConfigurationImpl
>>  >          return addFetchGroup(name, true);
>>  >      }
>>  >
>>  > -    public FetchConfiguration addFetchGroup(String name, boolean
>>  > recomputeIsDefault) {
>>  > +    private FetchConfiguration addFetchGroup(String name, boolean
>>  > recomputeIsDefault) {
>>  >          if (StringUtils.isEmpty(name))
>>  >              throw new UserException(_loc.get("null-fg"));
>>  >
>>  > @@ -383,7 +387,7 @@ public class FetchConfigurationImpl
>>  >          return removeFetchGroup(group, true);
>>  >      }
>>  >
>>  > -    public FetchConfiguration removeFetchGroup(String group, boolean
>>  > recomputeIsDefault) {
>>  > +    private FetchConfiguration removeFetchGroup(String group, boolean
>>  > recomputeIsDefault) {
>>  >          lock();
>>  >          try {
>>  >              if (_state.fetchGroups != null) {
>>  > @@ -482,6 +486,15 @@ public class FetchConfigurationImpl
>>  >      public boolean isDefaultPUFetchGroupConfigurationOnly() {
>>  >          return _state.fetchGroupIsPUDefault;
>>  >      }
>>  > +
>>  > +    public boolean isFetchConfigurationSQLCacheAdmissible() {
>>  > +        if (_state == null || _state.cacheNonDefaultFetchPlanQueries) 
> {
>>  > +            return false;
>>  > +        } else {
>>  > +            // Only pctx-default matching FetchConfiguration 
> generated
>>  SQL is
>>  > cache permissible
>>  > +            return _state.fetchGroupIsPUDefault;
>>  > +        }
>>  > +    }
>>  >
>>  >      public Set<String> getFields() {
>>  >          if (_state.fields == null) return Collections.emptySet();
>>  > @@ -518,6 +531,7 @@ public class FetchConfigurationImpl
>>  >                  _state.fields = new HashSet<String>();
>>  >              _state.fields.addAll(fields);
>>  >          } finally {
>>  > +            verifyDefaultPUFetchGroups();
>>  >              unlock();
>>  >          }
>>  >          return this;
>>  >
>> 
> 

Re: svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/

Posted by Jody Grassel <fy...@gmail.com>.
Yes, all fixes for OJ-2414 that went into 2.3.x have been checked into
trunk.


On Tue, Oct 29, 2013 at 12:50 PM, Mark Struberg <st...@yahoo.de> wrote:

> jody, did you also fix this in trunk?
>
> I'm assuming that all bugs fixed in 2.3.x also work in and got applied to
> trunk
>
>
> txs and LieGrue,
> strub
>
>
>
> ----- Original Message -----
> > From: "jgrassel@apache.org" <jg...@apache.org>
> > To: commits@openjpa.apache.org
> > Cc:
> > Sent: Tuesday, 29 October 2013, 17:23
> > Subject: svn commit: r1536793 - in /openjpa/branches/2.3.x:
> openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
> openjpa-kernel/src/main/java/org/apache/openjpa/conf/
> openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
> >
> > Author: jgrassel
> > Date: Tue Oct 29 16:23:36 2013
> > New Revision: 1536793
> >
> > URL: http://svn.apache.org/r1536793
> > Log:
> > OPENJPA-2414: FinderCache does not consider active Fetch
> Groups/FetchPlan added
> > Fields
> >
> > Modified:
> >
> >
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
> >
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
> >
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
> >
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
> >
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> >
> > Modified:
> >
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
> > URL:
> >
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> >
> ==============================================================================
> > ---
> >
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
> > (original)
> > +++
> >
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
> > Tue Oct 29 16:23:36 2013
> > @@ -109,7 +109,7 @@ public class FinderCacheImpl
> >          }
> >
> >          // FinderCache only operates with Default Fetch Plans
> > -        if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
> > +        if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
> >              return null;
> >          }
> >
> > @@ -152,7 +152,7 @@ public class FinderCacheImpl
> >              }
> >
> >              // FinderCache only operates with Default Fetch Plans
> > -            if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
> > +            if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
> >                  return null;
> >              }
> >
> >
> > Modified:
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
> > URL:
> >
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> >
> ==============================================================================
> > ---
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
> > (original)
> > +++
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
> > Tue Oct 29 16:23:36 2013
> > @@ -77,6 +77,7 @@ public class Compatibility {
> >      private boolean _singletonLifecycleEventManager = false;
> >      private boolean _filterPCRegistryClasses = false; // OPENJPA-2288
> >      private boolean _returnNullOnEmptyAggregateResult = true;   //
> OPENJPA-1794
> > +    private boolean _cacheNonDefaultFetchPlanQueries = false; //
> OPENJPA-2414
> >
> >      /**
> >       * Whether to require exact identity value types when creating
> object
> > @@ -763,4 +764,18 @@ public class Compatibility {
> >      public void setReturnNullOnAggregateResult(boolean
> > returnNullOnEmptyAggregateResult) {
> >          _returnNullOnEmptyAggregateResult =
> returnNullOnEmptyAggregateResult;
> >      }
> > +
> > +    /**
> > +     * Whether the SQL generated for queries executed with a modified
> fetch
> > plan are cached.
> > +     */
> > +    public boolean  getCacheNonDefaultFetchPlanQueries() {
> > +        return _cacheNonDefaultFetchPlanQueries;
> > +    }
> > +
> > +    /**
> > +     * Whether the SQL generated for queries executed with a modified
> fetch
> > plan are cached.
> > +     */
> > +    public void setCacheNonDefaultFetchPlanQueries(boolean bool) {
> > +        _cacheNonDefaultFetchPlanQueries = bool;
> > +    }
> > }
> >
> > Modified:
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
> > URL:
> >
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> >
> ==============================================================================
> > ---
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
> > (original)
> > +++
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
> > Tue Oct 29 16:23:36 2013
> > @@ -595,4 +595,12 @@ public class DelegatingFetchConfiguratio
> >              throw translate(re);
> >          }
> >      }
> > +
> > +    public boolean isFetchConfigurationSQLCacheAdmissible() {
> > +       try {
> > +           return _fetch.isFetchConfigurationSQLCacheAdmissible();
> > +       } catch (RuntimeException re) {
> > +            throw translate(re);
> > +       }
> > +    }
> > }
> >
> > Modified:
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
> > URL:
> >
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> >
> ==============================================================================
> > ---
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
> > (original)
> > +++
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
> > Tue Oct 29 16:23:36 2013
> > @@ -474,4 +474,9 @@ public interface FetchConfiguration
> >       * @since 0.4.1
> >       */
> >      public FetchConfiguration traverse(FieldMetaData fm);
> > +
> > +    /**
> > +     * Whether SQL generated by the FetchConfiguration's current
> > configuration should be cached.
> > +     */
> > +    public boolean isFetchConfigurationSQLCacheAdmissible();
> > }
> >
> > Modified:
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> > URL:
> >
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> >
> ==============================================================================
> > ---
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> > (original)
> > +++
> >
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> > Tue Oct 29 16:23:36 2013
> > @@ -148,7 +148,8 @@ public class FetchConfigurationImpl
> >          public boolean fetchGroupIsPUDefault = false;
> >          public boolean extendedPathLookup = false;
> >          public DataCacheRetrieveMode cacheRetrieveMode =
> > DataCacheRetrieveMode.USE;
> > -        public DataCacheStoreMode cacheStoreMode =
> DataCacheStoreMode.USE;
> >
> > +        public DataCacheStoreMode cacheStoreMode =
> DataCacheStoreMode.USE;
> > +        public boolean cacheNonDefaultFetchPlanQueries = false;
> >      }
> >
> >      private final ConfigurationState _state;
> > @@ -193,6 +194,8 @@ public class FetchConfigurationImpl
> >
> >          addFetchGroups(Arrays.asList(fetchGroupList));
> >          setMaxFetchDepth(conf.getMaxFetchDepth());
> > +
> > +        _state.cacheNonDefaultFetchPlanQueries =
> > conf.getCompatibilityInstance().getCacheNonDefaultFetchPlanQueries();
> >      }
> >
> >      /**
> > @@ -201,6 +204,7 @@ public class FetchConfigurationImpl
> >      public Object clone() {
> >          FetchConfigurationImpl clone = newInstance(null);
> >          clone._state.ctx = _state.ctx;
> > +        clone._state.cacheNonDefaultFetchPlanQueries =
> > _state.cacheNonDefaultFetchPlanQueries;
> >          clone._parent = _parent;
> >          clone._fromField = _fromField;
> >          clone._fromType = _fromType;
> > @@ -346,7 +350,7 @@ public class FetchConfigurationImpl
> >          return addFetchGroup(name, true);
> >      }
> >
> > -    public FetchConfiguration addFetchGroup(String name, boolean
> > recomputeIsDefault) {
> > +    private FetchConfiguration addFetchGroup(String name, boolean
> > recomputeIsDefault) {
> >          if (StringUtils.isEmpty(name))
> >              throw new UserException(_loc.get("null-fg"));
> >
> > @@ -383,7 +387,7 @@ public class FetchConfigurationImpl
> >          return removeFetchGroup(group, true);
> >      }
> >
> > -    public FetchConfiguration removeFetchGroup(String group, boolean
> > recomputeIsDefault) {
> > +    private FetchConfiguration removeFetchGroup(String group, boolean
> > recomputeIsDefault) {
> >          lock();
> >          try {
> >              if (_state.fetchGroups != null) {
> > @@ -482,6 +486,15 @@ public class FetchConfigurationImpl
> >      public boolean isDefaultPUFetchGroupConfigurationOnly() {
> >          return _state.fetchGroupIsPUDefault;
> >      }
> > +
> > +    public boolean isFetchConfigurationSQLCacheAdmissible() {
> > +        if (_state == null || _state.cacheNonDefaultFetchPlanQueries) {
> > +            return false;
> > +        } else {
> > +            // Only pctx-default matching FetchConfiguration generated
> SQL is
> > cache permissible
> > +            return _state.fetchGroupIsPUDefault;
> > +        }
> > +    }
> >
> >      public Set<String> getFields() {
> >          if (_state.fields == null) return Collections.emptySet();
> > @@ -518,6 +531,7 @@ public class FetchConfigurationImpl
> >                  _state.fields = new HashSet<String>();
> >              _state.fields.addAll(fields);
> >          } finally {
> > +            verifyDefaultPUFetchGroups();
> >              unlock();
> >          }
> >          return this;
> >
>

Re: svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/

Posted by Mark Struberg <st...@yahoo.de>.
jody, did you also fix this in trunk?

I'm assuming that all bugs fixed in 2.3.x also work in and got applied to trunk


txs and LieGrue,
strub



----- Original Message -----
> From: "jgrassel@apache.org" <jg...@apache.org>
> To: commits@openjpa.apache.org
> Cc: 
> Sent: Tuesday, 29 October 2013, 17:23
> Subject: svn commit: r1536793 - in /openjpa/branches/2.3.x: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
> 
> Author: jgrassel
> Date: Tue Oct 29 16:23:36 2013
> New Revision: 1536793
> 
> URL: http://svn.apache.org/r1536793
> Log:
> OPENJPA-2414: FinderCache does not consider active Fetch Groups/FetchPlan added 
> Fields
> 
> Modified:
>     
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
>     
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
>     
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
>     
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
>     
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> 
> Modified: 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
> URL: 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> ==============================================================================
> --- 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java 
> (original)
> +++ 
> openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java 
> Tue Oct 29 16:23:36 2013
> @@ -109,7 +109,7 @@ public class FinderCacheImpl 
>          }
>         
>          // FinderCache only operates with Default Fetch Plans
> -        if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
> +        if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
>              return null;
>          }
>         
> @@ -152,7 +152,7 @@ public class FinderCacheImpl 
>              }
>             
>              // FinderCache only operates with Default Fetch Plans
> -            if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) {
> +            if (!fetch.isFetchConfigurationSQLCacheAdmissible()) {
>                  return null;
>              }          
>             
> 
> Modified: 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java
> URL: 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> ==============================================================================
> --- 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java 
> (original)
> +++ 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java 
> Tue Oct 29 16:23:36 2013
> @@ -77,6 +77,7 @@ public class Compatibility {
>      private boolean _singletonLifecycleEventManager = false;
>      private boolean _filterPCRegistryClasses = false; // OPENJPA-2288
>      private boolean _returnNullOnEmptyAggregateResult = true;   // OPENJPA-1794
> +    private boolean _cacheNonDefaultFetchPlanQueries = false; // OPENJPA-2414
> 
>      /**
>       * Whether to require exact identity value types when creating object
> @@ -763,4 +764,18 @@ public class Compatibility {
>      public void setReturnNullOnAggregateResult(boolean 
> returnNullOnEmptyAggregateResult) {
>          _returnNullOnEmptyAggregateResult = returnNullOnEmptyAggregateResult;
>      }
> +    
> +    /**
> +     * Whether the SQL generated for queries executed with a modified fetch 
> plan are cached.
> +     */
> +    public boolean  getCacheNonDefaultFetchPlanQueries() { 
> +        return _cacheNonDefaultFetchPlanQueries;
> +    }
> +    
> +    /**
> +     * Whether the SQL generated for queries executed with a modified fetch 
> plan are cached.
> +     */
> +    public void setCacheNonDefaultFetchPlanQueries(boolean bool) {
> +        _cacheNonDefaultFetchPlanQueries = bool;
> +    }
> }
> 
> Modified: 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java
> URL: 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> ==============================================================================
> --- 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java 
> (original)
> +++ 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java 
> Tue Oct 29 16:23:36 2013
> @@ -595,4 +595,12 @@ public class DelegatingFetchConfiguratio
>              throw translate(re);
>          }
>      }
> +    
> +    public boolean isFetchConfigurationSQLCacheAdmissible() {
> +       try {
> +           return _fetch.isFetchConfigurationSQLCacheAdmissible();
> +       } catch (RuntimeException re) {
> +            throw translate(re);
> +       }
> +    }
> }
> 
> Modified: 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java
> URL: 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> ==============================================================================
> --- 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java 
> (original)
> +++ 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java 
> Tue Oct 29 16:23:36 2013
> @@ -474,4 +474,9 @@ public interface FetchConfiguration
>       * @since 0.4.1
>       */
>      public FetchConfiguration traverse(FieldMetaData fm);
> +    
> +    /**
> +     * Whether SQL generated by the FetchConfiguration's current 
> configuration should be cached.
> +     */
> +    public boolean isFetchConfigurationSQLCacheAdmissible();
> }
> 
> Modified: 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
> URL: 
> http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff
> ==============================================================================
> --- 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java 
> (original)
> +++ 
> openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java 
> Tue Oct 29 16:23:36 2013
> @@ -148,7 +148,8 @@ public class FetchConfigurationImpl
>          public boolean fetchGroupIsPUDefault = false;
>          public boolean extendedPathLookup = false;
>          public DataCacheRetrieveMode cacheRetrieveMode = 
> DataCacheRetrieveMode.USE;
> -        public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE;      
>   
> +        public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE;
> +        public boolean cacheNonDefaultFetchPlanQueries = false;      
>      }
> 
>      private final ConfigurationState _state;
> @@ -193,6 +194,8 @@ public class FetchConfigurationImpl
>         
>          addFetchGroups(Arrays.asList(fetchGroupList));
>          setMaxFetchDepth(conf.getMaxFetchDepth());
> +        
> +        _state.cacheNonDefaultFetchPlanQueries = 
> conf.getCompatibilityInstance().getCacheNonDefaultFetchPlanQueries();
>      }
> 
>      /**
> @@ -201,6 +204,7 @@ public class FetchConfigurationImpl
>      public Object clone() {
>          FetchConfigurationImpl clone = newInstance(null);
>          clone._state.ctx = _state.ctx;
> +        clone._state.cacheNonDefaultFetchPlanQueries = 
> _state.cacheNonDefaultFetchPlanQueries;
>          clone._parent = _parent;
>          clone._fromField = _fromField;
>          clone._fromType = _fromType;
> @@ -346,7 +350,7 @@ public class FetchConfigurationImpl
>          return addFetchGroup(name, true);
>      }
>       
> -    public FetchConfiguration addFetchGroup(String name, boolean 
> recomputeIsDefault) {
> +    private FetchConfiguration addFetchGroup(String name, boolean 
> recomputeIsDefault) {
>          if (StringUtils.isEmpty(name))
>              throw new UserException(_loc.get("null-fg"));
> 
> @@ -383,7 +387,7 @@ public class FetchConfigurationImpl
>          return removeFetchGroup(group, true);
>      }
> 
> -    public FetchConfiguration removeFetchGroup(String group, boolean 
> recomputeIsDefault) {
> +    private FetchConfiguration removeFetchGroup(String group, boolean 
> recomputeIsDefault) {
>          lock();
>          try {
>              if (_state.fetchGroups != null) {
> @@ -482,6 +486,15 @@ public class FetchConfigurationImpl
>      public boolean isDefaultPUFetchGroupConfigurationOnly() {
>          return _state.fetchGroupIsPUDefault;
>      }
> +    
> +    public boolean isFetchConfigurationSQLCacheAdmissible() {
> +        if (_state == null || _state.cacheNonDefaultFetchPlanQueries) {
> +            return false;
> +        } else {
> +            // Only pctx-default matching FetchConfiguration generated SQL is 
> cache permissible
> +            return _state.fetchGroupIsPUDefault;
> +        }
> +    }
> 
>      public Set<String> getFields() {
>          if (_state.fields == null) return Collections.emptySet();
> @@ -518,6 +531,7 @@ public class FetchConfigurationImpl
>                  _state.fields = new HashSet<String>();
>              _state.fields.addAll(fields);
>          } finally {
> +            verifyDefaultPUFetchGroups();
>              unlock();
>          }
>          return this;
>