hbase support

This commit is contained in:
温少
2012-05-19 16:08:50 +08:00
parent 637903029f
commit 4c40ac259e
2 changed files with 24 additions and 2 deletions
@@ -7,6 +7,11 @@ import java.util.List;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.RowFilter;
import com.alibaba.druid.hbase.HBaseConnection;
import com.alibaba.druid.hbase.HBasePreparedStatement;
@@ -54,13 +59,18 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan {
byte[] bytes = HBaseUtils.toBytes(value);
if ("id".equals(fieldName)) {
if (condition.getOperator() == SQLBinaryOperator.GreaterThan) {
if (condition.getOperator() == SQLBinaryOperator.GreaterThanOrEqual) {
scan.setStartRow(bytes);
} else if (condition.getOperator() == SQLBinaryOperator.LessThan) {
scan.setStopRow(bytes);
} else if (condition.getOperator() == SQLBinaryOperator.LessThanOrEqual) {
RowFilter filter = new RowFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(bytes));
setFilter(scan, filter);
} else {
throw new SQLException("TODO");
}
} else {
}
}
@@ -73,5 +83,17 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan {
throw new SQLException("executeQuery error", e);
}
}
void setFilter(Scan scan, Filter filter) {
if (scan.getFilter() == null) {
scan.setFilter(filter);
} else if (scan.getFilter() instanceof FilterList) {
FilterList filterList = (FilterList) scan.getFilter();
filterList.addFilter(filter);
} else {
FilterList filterList = new FilterList(scan.getFilter(), filter);
scan.setFilter(filterList);
}
}
}