dynamobi/dynamobi — Issue #234: [LDB-87] Use index for both semijoins and table level filtering
Author: dynamobi-build
Created: 2011-12-30 02:23:35+00:00
State: open
Labels: LDB, Optimizer

[reporter="zfong", created="Thu, 27 Apr 2006 13:26:07 -0500 (GMT-05:00)"]
Currently, if an index can be used to process both semijoins and table level filters, if the optimizer decides to use the index for a semijoin, then it will not also use the index for table level filtering. It should be able to take the intersection of two index scans, one for the semijoin and one for the table level filter.

The logic is in place to handle the case where the table level filter requires a merge. To handle the non-merge case, LcsIndexSemiJoinRule needs to recognize the non-merge pattern in its rule matching. Also, createHepProgram() in LucidDbSessionPersonality.java needs to be changed so LcsIndexAccessRule is fired before the semijoin rules, as noted in the TODO comments in that method.