String filterExprSerialized =
jobConf.get(TableScanDesc.FILTER_EXPR_CONF_STR);
if (filterExprSerialized == null) {
return tableSplit;
}
ExprNodeDesc filterExpr =
Utilities.deserializeExpression(filterExprSerialized, jobConf);
String colName = jobConf.get(serdeConstants.LIST_COLUMNS).split(",")[iKey];
String colType = jobConf.get(serdeConstants.LIST_COLUMN_TYPES).split(",")[iKey];
IndexPredicateAnalyzer analyzer = newIndexPredicateAnalyzer(colName,colType, isKeyBinary);
List<IndexSearchCondition> searchConditions =
new ArrayList<IndexSearchCondition>();
ExprNodeDesc residualPredicate =
analyzer.analyzePredicate(filterExpr, searchConditions);
// There should be no residual since we already negotiated
// that earlier in HBaseStorageHandler.decomposePredicate.
if (residualPredicate != null) {
throw new RuntimeException(
"Unexpected residual predicate " + residualPredicate.getExprString());
}
// There should be exactly one predicate since we already
// negotiated that also.
if (searchConditions.size() < 1 || searchConditions.size() > 2) {