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:17:00 UTC

[cayenne] branch STABLE-4.1 updated (da14eaa -> f9179b7)

This is an automated email from the ASF dual-hosted git repository.

aadamchik pushed a change to branch STABLE-4.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from da14eaa  Sort DbEntities in db relationship combobox view
     new cc39100  CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
     new f9179b7  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] 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.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit cc39100ca994353eb18e70ea8a1da204fb4b6868
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 66c947d..c653f6a 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 398797c..7975b5a 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
@@ -150,7 +150,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);
@@ -171,7 +171,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);
@@ -194,4 +194,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());
+    }
 }


[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.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit f9179b7a6fb8eef524e48c3bfc23ec96393b4ef2
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
---
 RELEASE-NOTES.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index dcbc7fa..d536ad1 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -16,6 +16,7 @@ Changes/New Features:
 CAY-2592 Modeler: make all datamaps selected in global cgen tab
 CAY-2593 Add tableTypes field to dbImport config in dataMap
 CAY-2611 Exclude system catalogs and schemas when run dbImport without config
+CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key
 
 Bug Fixes: