[ 
https://issues.apache.org/jira/browse/GEODE-730?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15139390#comment-15139390
 ] 

ASF subversion and git services commented on GEODE-730:
-------------------------------------------------------

Commit d232e25947a8e223f35feb1feffe3150875dc5f5 in incubator-geode's branch 
refs/heads/develop from [~huynhja]
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=d232e25 ]

GEODE-730: Optimize single filter join queries

When executing a join query with additional filters on a single region, we now 
detect this scenario and
instead of creating a CompositeGroupJunction, we create a regular 
GroupJunction.  When we being cutdown
and expansion, we then create new compiled comparisons so that we can do an 
index lookup.

For example "select * from /region1 a, /region2 b where a.name = "joe" and a.id 
= b.id"
We will now execute the a.name first assuming an index is present on a.name

During cutdown and expand, we determine that the comparison a.id = b.id can 
create a new compiled comparison
because the alias a from a.id matches our original filter a.name.  We can 
evaluate a.id at this point, say id
evaluated to 8.  So we create a compiled comparison of b.id = 8.  We can now do 
a lookup using the index on b.id.
We retrieve these results and place them into a map.  This map will be used to 
continue to derive additional joins
if they exist.  Such as b.id = c.id, etc...

We can continue with the iteration but instead of iterating the entire b 
region, we can now go over derived results.

This also includes a fix to not unlock an index lock when reevaluating an inner 
query.


> Optimize single filter join queries
> -----------------------------------
>
>                 Key: GEODE-730
>                 URL: https://issues.apache.org/jira/browse/GEODE-730
>             Project: Geode
>          Issue Type: Bug
>          Components: querying
>            Reporter: Jason Huynh
>            Assignee: Jason Huynh
>
> Currently single filter join queries create a lot of garbage and do the join 
> before pruning from the filter.  We can optimize this for specific cases to 
> prune prior to joining and only join values that have already passed the 
> filters.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to