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;
>