You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by nn...@apache.org on 2017/05/23 21:07:48 UTC
geode git commit: GEODE-2961: Fixed distinct multiple OR query
returning partial results
Repository: geode
Updated Branches:
refs/heads/develop 9c4086813 -> 456ee1576
GEODE-2961: Fixed distinct multiple OR query returning partial results
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/456ee157
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/456ee157
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/456ee157
Branch: refs/heads/develop
Commit: 456ee15768fb08c8e1c8c5836479d27e1bc61835
Parents: 9c40868
Author: David Anuta <da...@gmail.com>
Authored: Tue May 23 13:53:19 2017 -0700
Committer: nabarun <nn...@pivotal.io>
Committed: Tue May 23 14:05:41 2017 -0700
----------------------------------------------------------------------
.../internal/AbstractGroupOrRangeJunction.java | 2 +-
.../query/internal/index/IndexUseJUnitTest.java | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/456ee157/geode-core/src/main/java/org/apache/geode/cache/query/internal/AbstractGroupOrRangeJunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/query/internal/AbstractGroupOrRangeJunction.java b/geode-core/src/main/java/org/apache/geode/cache/query/internal/AbstractGroupOrRangeJunction.java
index 5ed4d86..35f0290 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/query/internal/AbstractGroupOrRangeJunction.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/query/internal/AbstractGroupOrRangeJunction.java
@@ -325,7 +325,7 @@ public abstract class AbstractGroupOrRangeJunction extends AbstractCompiledValue
if (intermediateResults == null) {
intermediateResults = filterResults;
} else if (isDistinct && !isConditioningNeeded) {
- intermediateResults = filterResults;
+ intermediateResults.addAll(filterResults);
} else {
intermediateResults = QueryUtils.union(intermediateResults, filterResults, context);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/456ee157/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/IndexUseJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/IndexUseJUnitTest.java b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/IndexUseJUnitTest.java
index c55f3f3..9c8756c 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/IndexUseJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/query/internal/index/IndexUseJUnitTest.java
@@ -1366,6 +1366,22 @@ public class IndexUseJUnitTest {
}
@Test
+ public void queryWithOrClauseShouldReturnCorrectResultSet() throws Exception {
+ String query =
+ "SELECT DISTINCT p1.ID FROM /pos p1 where p1.ID IN SET (0,1) OR p1.status = 'active'";
+
+ Query q = qs.newQuery(query);
+ QueryObserverImpl observer = new QueryObserverImpl();
+ QueryObserverHolder.setInstance(observer);
+ SelectResults sr = (SelectResults) q.execute();
+ if (!observer.isIndexesUsed)
+ fail("Index should have been used for query '" + q.getQueryString() + "'");
+
+ assertEquals(sr.size(), 3);
+ qs.removeIndexes();
+ }
+
+ @Test
public void testIndexUseSelfJoin() throws Exception {
String[] queries = {"SELECT DISTINCT * FROM /pos p1, /pos p2 where p1.status = p1.status",
"SELECT DISTINCT * FROM /pos p1, /pos p2 where p1.ID = p2.ID",