Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 5D81E200B95 for ; Tue, 13 Sep 2016 00:59:39 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5C102160AC8; Mon, 12 Sep 2016 22:59:39 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 7B89B160AB8 for ; Tue, 13 Sep 2016 00:59:38 +0200 (CEST) Received: (qmail 28680 invoked by uid 500); 12 Sep 2016 22:59:37 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 28671 invoked by uid 99); 12 Sep 2016 22:59:37 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Sep 2016 22:59:37 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 20680CBFE2 for ; Mon, 12 Sep 2016 22:59:37 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.344 X-Spam-Level: X-Spam-Status: No, score=-4.344 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.124] autolearn=disabled Received: from mx2-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id OK_vyhlt5X0s for ; Mon, 12 Sep 2016 22:59:35 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx2-lw-us.apache.org (ASF Mail Server at mx2-lw-us.apache.org) with SMTP id B29E05F1F4 for ; Mon, 12 Sep 2016 22:59:34 +0000 (UTC) Received: (qmail 28627 invoked by uid 99); 12 Sep 2016 22:59:34 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Sep 2016 22:59:34 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 15259E0252; Mon, 12 Sep 2016 22:59:34 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jasonhuynh@apache.org To: commits@geode.incubator.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: incubator-geode git commit: GEODE-1840: Does not combine OR predicates into AND junctions Date: Mon, 12 Sep 2016 22:59:34 +0000 (UTC) archived-at: Mon, 12 Sep 2016 22:59:39 -0000 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 Authored: Fri Sep 2 09:26:35 2016 -0700 Committer: Jason Huynh 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 data = new HashMap(); + 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()); + } }