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 <[email protected]> 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: "[email protected]" <[email protected]> > > To: [email protected] > > 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; > > >
