You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2019/09/27 08:24:56 UTC
[cayenne] branch STABLE-4.0 updated (4f89a09 -> cc6d10c)
This is an automated email from the ASF dual-hosted git repository.
aadamchik pushed a change to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git.
from 4f89a09 CAY-2616 Modeler: Wrong handling of path with spaces
new 6bffc01 CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
new cc6d10c CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
RELEASE-NOTES.txt | 1 +
.../apache/cayenne/query/SelectQueryMetadata.java | 24 ++++++++++++------
.../cayenne/query/SelectQueryCacheKeyIT.java | 29 ++++++++++++++++++++--
3 files changed, 44 insertions(+), 10 deletions(-)
[cayenne] 02/02: CAY-2624 SelectQuery "having" qualifier is not
considered when calculating cache key
Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aadamchik pushed a commit to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit cc6d10c124442837af45ff1c16d7b4fd098b6af2
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Fri Sep 27 11:22:09 2019 +0300
CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
---
RELEASE-NOTES.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 3c20f4e..eec3c49 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -28,6 +28,7 @@ CAY-2582 Double insert of manyToMany relationship mapped to Set
CAY-2584 Crypto: can't use ColumnSelect with encrypted columns
CAY-2586 Char can't be materialized to EnumType in some cases
CAY-2616 Modeler: Wrong handling of path with spaces
+CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
----------------------------------
Release: 4.0.1
[cayenne] 01/02: CAY-2624 SelectQuery "having" qualifier is not
considered when calculating cache key
Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aadamchik pushed a commit to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 6bffc010d0390fa71256953916fe1578ef1bac6e
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Fri Sep 27 10:54:53 2019 +0300
CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
---
.../apache/cayenne/query/SelectQueryMetadata.java | 24 ++++++++++++------
.../cayenne/query/SelectQueryCacheKeyIT.java | 29 ++++++++++++++++++++--
2 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
index 37a0301..5112001 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectQueryMetadata.java
@@ -18,14 +18,6 @@
****************************************************************/
package org.apache.cayenne.query;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.Persistent;
@@ -56,6 +48,14 @@ import org.apache.cayenne.reflect.ToManyProperty;
import org.apache.cayenne.reflect.ToOneProperty;
import org.apache.cayenne.util.CayenneMapEntry;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* @since 3.0
*/
@@ -135,6 +135,14 @@ class SelectQueryMetadata extends BaseQueryMetadata {
}
}
+ if (query.getHavingQualifier() != null) {
+ key.append('/');
+ if(traversalHandler == null) {
+ traversalHandler = new ToCacheKeyTraversalHandler(resolver.getValueObjectTypeRegistry(), key);
+ }
+ query.getHavingQualifier().traverse(traversalHandler);
+ }
+
if (query.getFetchOffset() > 0 || query.getFetchLimit() > 0) {
key.append('/');
if (query.getFetchOffset() > 0) {
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryCacheKeyIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryCacheKeyIT.java
index 5b4bc94..de16bef 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryCacheKeyIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryCacheKeyIT.java
@@ -176,7 +176,7 @@ public class SelectQueryCacheKeyIT extends ServerCase {
}
@Test
- public void testUniqueKeyEntityQualifier() {
+ public void testUniqueKeyQualifier() {
SelectQuery<Artist> q1 = new SelectQuery<>(Artist.class);
q1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
@@ -197,7 +197,7 @@ public class SelectQueryCacheKeyIT extends ServerCase {
}
@Test
- public void testUniqueKeyEntityFetchLimit() {
+ public void testUniqueKeyFetchLimit() {
SelectQuery<Artist> q1 = new SelectQuery<>(Artist.class);
q1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
@@ -220,4 +220,29 @@ public class SelectQueryCacheKeyIT extends ServerCase {
assertNotEquals(q1.getMetaData(resolver).getCacheKey(), q3.getMetaData(resolver).getCacheKey());
assertNotEquals(q1.getMetaData(resolver).getCacheKey(), q4.getMetaData(resolver).getCacheKey());
}
+
+ @Test
+ public void testUniqueKeyHaving() {
+
+ SelectQuery<Artist> q1 = new SelectQuery<>(Artist.class);
+ q1.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
+ q1.setHavingQualifier(ExpressionFactory.expFalse());
+
+ SelectQuery<Artist> q2 = new SelectQuery<>(Artist.class);
+ q2.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
+ q2.setHavingQualifier(ExpressionFactory.expFalse());
+
+ SelectQuery<Artist> q3 = new SelectQuery<>(Artist.class);
+ q3.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
+ q3.setHavingQualifier(ExpressionFactory.expTrue());
+
+ SelectQuery<Artist> q4 = new SelectQuery<>(Artist.class);
+ q4.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
+
+ assertNotNull(q1.getMetaData(resolver).getCacheKey());
+ assertEquals(q1.getMetaData(resolver).getCacheKey(), q2.getMetaData(resolver).getCacheKey());
+
+ assertNotEquals(q1.getMetaData(resolver).getCacheKey(), q3.getMetaData(resolver).getCacheKey());
+ assertNotEquals(q1.getMetaData(resolver).getCacheKey(), q4.getMetaData(resolver).getCacheKey());
+ }
}