You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/08/16 11:58:32 UTC
cayenne git commit: CAY-2350 Expression: NotIn with empty collection
returns empty result
Repository: cayenne
Updated Branches:
refs/heads/master 5135846b3 -> a6c5efbcd
CAY-2350 Expression: NotIn with empty collection returns empty result
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/a6c5efbc
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/a6c5efbc
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/a6c5efbc
Branch: refs/heads/master
Commit: a6c5efbcd70d45ba89712968b180d66e0dbbf814
Parents: 5135846
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 16 14:52:58 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 16 14:52:58 2017 +0300
----------------------------------------------------------------------
.../apache/cayenne/exp/ExpressionFactory.java | 2 +-
.../cayenne/exp/ExpressionFactoryTest.java | 22 ++++++++++++++++++++
.../exp/parser/ExpressionEvaluationIT.java | 17 +++++++++++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
4 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/a6c5efbc/cayenne-server/src/main/java/org/apache/cayenne/exp/ExpressionFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/ExpressionFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/ExpressionFactory.java
index b2770bc..6c227a9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/ExpressionFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/ExpressionFactory.java
@@ -610,7 +610,7 @@ public class ExpressionFactory {
*/
static Expression notInExp(Expression exp, Collection<?> values) {
if (values.isEmpty()) {
- return new ASTFalse();
+ return new ASTTrue();
}
if(!(exp instanceof SimpleNode)) {
throw new IllegalArgumentException("exp should be instance of SimpleNode");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/a6c5efbc/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
index 5e541f0..a41344c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
@@ -191,6 +191,28 @@ public class ExpressionFactoryTest {
}
@Test
+ public void testNotInExp1() throws Exception {
+ Expression exp = ExpressionFactory.notInExp("abc", "a", "b");
+ assertEquals(Expression.NOT_IN, exp.getType());
+ }
+
+ @Test
+ public void testNotInExp2() throws Exception {
+ List<Object> v = new ArrayList<>();
+ v.add("a");
+ v.add("b");
+ Expression exp = ExpressionFactory.notInExp("abc", v);
+ assertEquals(Expression.NOT_IN, exp.getType());
+ }
+
+ @Test
+ public void testNotInExp3() throws Exception {
+ List<Object> v = new ArrayList<>();
+ Expression exp = ExpressionFactory.notInExp("abc", v);
+ assertEquals(Expression.TRUE, exp.getType());
+ }
+
+ @Test
public void testLikeExp() throws Exception {
String v = "abc";
Expression exp = ExpressionFactory.likeExp("abc", v);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/a6c5efbc/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
index d8bc19d..c0b47e4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.exp.parser;
import java.math.BigDecimal;
+import java.util.Collections;
import java.util.List;
import org.apache.cayenne.access.DataContext;
@@ -223,6 +224,14 @@ public class ExpressionEvaluationIT extends ServerCase {
}
@Test
+ public void testInEmpty() {
+ Expression exp = Artist.PAINTING_ARRAY.dot(Painting.ESTIMATED_PRICE)
+ .in(Collections.<BigDecimal>emptyList());
+
+ compareSqlAndEval(exp, 0);
+ }
+
+ @Test
public void testNotIn() {
Expression exp = Artist.PAINTING_ARRAY.dot(Painting.ESTIMATED_PRICE)
.nin(new BigDecimal(800), new BigDecimal(200), new BigDecimal(300), new BigDecimal(400), new BigDecimal(700));
@@ -231,6 +240,14 @@ public class ExpressionEvaluationIT extends ServerCase {
}
@Test
+ public void testNotInEmpty() {
+ Expression exp = Artist.PAINTING_ARRAY.dot(Painting.ESTIMATED_PRICE)
+ .nin(Collections.<BigDecimal>emptyList());
+
+ compareSqlAndEval(exp, 6);
+ }
+
+ @Test
public void testLess() {
Expression exp = Artist.PAINTING_ARRAY.dot(Painting.ESTIMATED_PRICE)
.lt(new BigDecimal(801));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/a6c5efbc/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index b4eabbe..4141da3 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -29,6 +29,7 @@ CAY-2319 Modeler: Embeddable > Attributes. Undo does not cancel pasted objects
CAY-2323 Modeler: Graph. No warning while saving the image with existing name
CAY-2331 cgen: broken templates for data map
CAY-2349 Cache issue: 'SelectQuery' with prefetches loses relationships
+CAY-2350 Expression: NotIn with empty collection returns empty result
----------------------------------
Release: 4.0.B1