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: