You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ja...@apache.org on 2016/09/12 22:59:34 UTC
incubator-geode git commit: GEODE-1840: Does not combine OR
predicates into AND junctions
Repository: incubator-geode
Updated Branches:
refs/heads/develop 1246f4fae -> 72e9cbe4e
GEODE-1840: Does not combine OR predicates into AND junctions
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/72e9cbe4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/72e9cbe4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/72e9cbe4
Branch: refs/heads/develop
Commit: 72e9cbe4e28d20b87befe3ba700d0f54040e4c69
Parents: 1246f4f
Author: Jason Huynh <hu...@gmail.com>
Authored: Fri Sep 2 09:26:35 2016 -0700
Committer: Jason Huynh <hu...@gmail.com>
Committed: Mon Sep 12 15:59:01 2016 -0700
----------------------------------------------------------------------
.../internal/AbstractGroupOrRangeJunction.java | 2 +-
.../dunit/CompactRangeIndexQueryDUnitTest.java | 43 +++++++++++++-------
2 files changed, 29 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/72e9cbe4/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/AbstractGroupOrRangeJunction.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/AbstractGroupOrRangeJunction.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/AbstractGroupOrRangeJunction.java
index a14dda8..cbe7e24 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/AbstractGroupOrRangeJunction.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/AbstractGroupOrRangeJunction.java
@@ -193,7 +193,7 @@ public abstract class AbstractGroupOrRangeJunction extends
}
}
else {
- if (newOperands.iterateOperand instanceof CompiledJunction) {
+ if (newOperands.iterateOperand instanceof CompiledJunction && ((CompiledJunction) newOperands.iterateOperand).getOperator() == getOperator()) {
CompiledJunction temp = (CompiledJunction)newOperands.iterateOperand;
List prevOps = temp.getOperands();
unevaluatedFilterOps.addAll(prevOps);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/72e9cbe4/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompactRangeIndexQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompactRangeIndexQueryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompactRangeIndexQueryDUnitTest.java
index 8b27309..12f36a1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompactRangeIndexQueryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompactRangeIndexQueryDUnitTest.java
@@ -16,39 +16,27 @@
*/
package com.gemstone.gemfire.cache.query.dunit;
-import static com.gemstone.gemfire.internal.cache.execute.DistributedRegionFunctionExecutionDUnitTest.region;
-import static java.rmi.activation.ActivationGroup.getSystem;
import static org.junit.Assert.*;
-import java.util.Properties;
+import java.util.HashMap;
+import java.util.Map;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheException;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.cache.query.Query;
import com.gemstone.gemfire.cache.query.QueryService;
-import com.gemstone.gemfire.cache.query.QueryTestUtils;
import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.data.Portfolio;
import com.gemstone.gemfire.cache.query.data.PortfolioPdx;
-import com.gemstone.gemfire.cache.query.internal.ResultsSet;
-import com.gemstone.gemfire.cache.query.internal.index.IndexManager;
-import com.gemstone.gemfire.cache.query.internal.index.IndexManager.TestHook;
-import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
-import com.gemstone.gemfire.test.dunit.Assert;
-import com.gemstone.gemfire.test.dunit.AsyncInvocation;
-import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
+
import com.gemstone.gemfire.test.dunit.Host;
import com.gemstone.gemfire.test.dunit.Invoke;
import com.gemstone.gemfire.test.dunit.SerializableRunnable;
import com.gemstone.gemfire.test.dunit.VM;
-import com.gemstone.gemfire.test.dunit.Wait;
import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase;
-import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
@Category(DistributedTest.class)
@@ -88,4 +76,29 @@ public class CompactRangeIndexQueryDUnitTest extends JUnit4CacheTestCase {
assertEquals( numMatching, rs.size());
}
+ @Test
+ public void whenAuxFilterWithAnIterableFilterShouldNotCombineFiltersIntoAndJunction() throws Exception {
+ Cache cache = getCache();
+ Region region = cache.createRegionFactory(RegionShortcut.PARTITION).create("ExampleRegion");
+ QueryService qs = cache.getQueryService();
+ qs.createIndex("ExampleRegionIndex", "er['codeNumber','origin']", "/ExampleRegion er");
+
+ for (int i = 0; i < 10; i++) {
+ Map<String, Object> data = new HashMap<String, Object>();
+ data.put("codeNumber", 1);
+ if ((i % 3) == 0) {
+ data.put("origin", "src_common");
+ } else {
+ data.put("origin", "src_" + i);
+ }
+ data.put("attr", "attrValue");
+ data.put("country", "JPY");
+
+ region.put(String.valueOf(i), data);
+ }
+
+ Query q = qs.newQuery("select * from /ExampleRegion E where E['codeNumber']=1 and E['origin']='src_common' and (E['country']='JPY' or E['ccountrycy']='USD')");
+ SelectResults rs = (SelectResults) q.execute();
+ assertEquals( 4, rs.size());
+ }
}