Sandy, it would be great if you and Vaibhav can push this one through together.
I'm not sure what you mean by "striking" HiveStoragePredicateHandler. Its purpose is to allow handlers to tell Hive which portion of the predicate got pushed down, and which part needs to be handled by Hive during per-row evaluation. This helps reduce the mapper work, so we do not want to lose that.
IndexPredicateAnalyzer currently only handles conjunction (AND), so for your example, it would only extract the condition for "key >= b" (and leave the right-hand side of the AND to be evaluated by Hive). Vacuous cases would be better handled generically inside of Hive's optimizer (as part of constant folding), rather than specifically in index predicate analysis.
Note that for non-key columns, youll need to change newIndexPredicateAnalyzer to not call clearAllowedColumnNames.
Also watch out for the comment "We'll need to handle this better later when we support more interesting predicates" in HBaseStorageHandler.decomposePredicate.