You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2011/08/03 13:14:08 UTC
svn commit: r1153427 - in /cayenne/main/branches/STABLE-3.0:
docs/doc/src/main/resources/
framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/
framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/
Author: dkazimirchyk
Date: Wed Aug 3 11:14:06 2011
New Revision: 1153427
URL: http://svn.apache.org/viewvc?rev=1153427&view=rev
Log:
CAY-1585 SelectQuery automatic cache key needs FetchOffset
applying fix to 3.0 branch
Modified:
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQueryMetadata.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyTest.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyTest.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java
Modified: cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt Wed Aug 3 11:14:06 2011
@@ -23,6 +23,7 @@ CAY-1514 ClassCastException when EJQLQue
CAY-1577 SQL queries for LIKE expressions with escape character generated with syntax errors
CAY-1581 Not-Escaping <> during serialization to *.map.xml
CAY-1583 context.getObjectStore() returning null causing NullpointerException in DataMergeHandler
+CAY-1585 SelectQuery automatic cache key needs FetchOffset
----------------------------------
Release: 3.0.2
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQueryMetadata.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQueryMetadata.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQueryMetadata.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQueryMetadata.java Wed Aug 3 11:14:06 2011
@@ -84,6 +84,16 @@ class EJBQLQueryMetadata extends BaseQue
positionalParameters.get(parameterKey));
}
}
+
+ if (query.getFetchOffset() > 0 || query.getFetchLimit() > 0) {
+ key.append('/');
+ if (query.getFetchOffset() > 0) {
+ key.append('o').append(query.getFetchOffset());
+ }
+ if (query.getFetchLimit() > 0) {
+ key.append('l').append(query.getFetchLimit());
+ }
+ }
this.cacheKey = key.toString();
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQueryMetadata.java Wed Aug 3 11:14:06 2011
@@ -89,6 +89,16 @@ class ProcedureQueryMetadata extends Bas
parameters.get(parameterKey));
}
}
+
+ if (query.getFetchOffset() > 0 || query.getFetchLimit() > 0) {
+ key.append('/');
+ if (query.getFetchOffset() > 0) {
+ key.append('o').append(query.getFetchOffset());
+ }
+ if (query.getFetchLimit() > 0) {
+ key.append('l').append(query.getFetchLimit());
+ }
+ }
this.cacheKey = key.toString();
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java Wed Aug 3 11:14:06 2011
@@ -71,6 +71,16 @@ class SQLTemplateMetadata extends BaseQu
parameters.get(parameterKey));
}
}
+
+ if (query.getFetchOffset() > 0 || query.getFetchLimit() > 0) {
+ key.append('/');
+ if (query.getFetchOffset() > 0) {
+ key.append('o').append(query.getFetchOffset());
+ }
+ if (query.getFetchLimit() > 0) {
+ key.append('l').append(query.getFetchLimit());
+ }
+ }
this.cacheKey = key.toString();
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java Wed Aug 3 11:14:06 2011
@@ -78,10 +78,16 @@ class SelectQueryMetadata extends BaseQu
}
}
- if (query.getFetchLimit() > 0) {
- key.append('/').append(query.getFetchLimit());
+ if (query.getFetchOffset() > 0 || query.getFetchLimit() > 0) {
+ key.append('/');
+ if (query.getFetchOffset() > 0) {
+ key.append('o').append(query.getFetchOffset());
+ }
+ if (query.getFetchLimit() > 0) {
+ key.append('l').append(query.getFetchLimit());
+ }
}
-
+
this.cacheKey = key.toString();
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java Wed Aug 3 11:14:06 2011
@@ -56,12 +56,16 @@ public class EJBQLQueryTest extends Caye
EJBQLQuery q1 = new EJBQLQuery(ejbql1);
q1.setParameter(1, "X");
q1.setParameter("name", "Y");
+ q1.setFetchOffset(1);
+ q1.setFetchLimit(5);
q1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
String ejbql2 = "select a FROM Artist a WHERE a.artistName = ?1 OR a.artistName = :name";
EJBQLQuery q2 = new EJBQLQuery(ejbql2);
q2.setParameter(1, "X");
q2.setParameter("name", "Y");
+ q2.setFetchOffset(1);
+ q2.setFetchLimit(5);
q2.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
EntityResolver resolver = getDomain().getEntityResolver();
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyTest.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/ProcedureQueryCacheKeyTest.java Wed Aug 3 11:14:06 2011
@@ -80,4 +80,21 @@ public class ProcedureQueryCacheKeyTest
assertEquals("proc:", md1.getCacheKey());
}
+ public void testCacheFetchOffsetAndLimit() {
+ EntityResolver resolver = getDomain().getEntityResolver();
+
+ ProcedureQuery q1 = new ProcedureQuery("ABC", Artist.class);
+ q1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+ q1.setFetchOffset(5);
+ q1.setFetchLimit(3);
+
+ ProcedureQuery q2 = new ProcedureQuery("ABC", Artist.class);
+ q2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+ q2.setFetchOffset(5);
+ q2.setFetchLimit(3);
+
+ assertEquals(q1.getMetaData(resolver).getCacheKey(), q2
+ .getMetaData(resolver)
+ .getCacheKey());
+ }
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyTest.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyTest.java Wed Aug 3 11:14:06 2011
@@ -80,4 +80,21 @@ public class SQLTemplateCacheKeyTest ext
assertFalse("XYZ".equals(md1.getCacheKey()));
}
+ public void testCacheFetchLimitAndOffset() {
+ EntityResolver resolver = getDomain().getEntityResolver();
+
+ SQLTemplate q1 = new SQLTemplate(Artist.class, "SELECT ME");
+ q1.setFetchOffset(5);
+ q1.setFetchLimit(10);
+ q1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+
+ SQLTemplate q2 = new SQLTemplate(Artist.class, "SELECT ME");
+ q2.setFetchOffset(5);
+ q2.setFetchLimit(10);
+ q2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+
+ assertEquals(q1.getMetaData(resolver).getCacheKey(), q2
+ .getMetaData(resolver)
+ .getCacheKey());
+ }
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java?rev=1153427&r1=1153426&r2=1153427&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java Wed Aug 3 11:14:06 2011
@@ -602,4 +602,29 @@ public class SelectQueryTest extends Sel
query.addPrefetch("toGallery");
createDataContext().performQuery(query);
}
+
+ public void testCacheOffsetAndLimit() {
+ ObjectContext context = createDataContext();
+
+ SelectQuery query1 = new SelectQuery(Artist.class);
+ query1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+ query1.setFetchOffset(0);
+ query1.setFetchLimit(10);
+ context.performQuery(query1);
+
+ SelectQuery query2 = new SelectQuery(Artist.class);
+ query2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+ query2.setFetchOffset(10);
+ query2.setFetchLimit(10);
+ context.performQuery(query2);
+
+ SelectQuery query3 = new SelectQuery(Artist.class);
+ query3.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+ query3.setFetchOffset(10);
+ query3.setFetchLimit(10);
+ context.performQuery(query3);
+
+ assertFalse(query1.metaData.getCacheKey().equals(query2.metaData.cacheKey));
+ assertEquals(query2.metaData.getCacheKey(), query3.metaData.getCacheKey());
+ }
}