diff --git a/src/main/java/com/alibaba/druid/hbase/HBaseResultSet.java b/src/main/java/com/alibaba/druid/hbase/HBaseResultSet.java index a9f168f748..7a2f72cfc6 100644 --- a/src/main/java/com/alibaba/druid/hbase/HBaseResultSet.java +++ b/src/main/java/com/alibaba/druid/hbase/HBaseResultSet.java @@ -13,18 +13,21 @@ import org.apache.hadoop.hbase.util.Bytes; import com.alibaba.druid.common.jdbc.ResultSetBase; import com.alibaba.druid.common.jdbc.ResultSetMetaDataBase.ColumnMetaData; +import com.alibaba.druid.hbase.mapping.HMapping; import com.alibaba.druid.util.JdbcUtils; public class HBaseResultSet extends ResultSetBase { private HStatementInterface statement; - private ResultScanner scanner; - private HTableInterface htable; - private Result result; - private byte[] family = Bytes.toBytes("d"); + private ResultScanner scanner; + private HTableInterface htable; + private Result result; + private byte[] family = Bytes.toBytes("d"); private HResultSetMetaData metaData; + private HMapping mapping; + public HBaseResultSet(HStatementInterface statement, HTableInterface htable, ResultScanner scanner){ super(statement); this.statement = statement; @@ -32,6 +35,14 @@ public class HBaseResultSet extends ResultSetBase { this.scanner = scanner; } + public HMapping getMapping() { + return mapping; + } + + public void setMapping(HMapping mapping) { + this.mapping = mapping; + } + @Override public Statement getStatement() throws SQLException { return statement; @@ -70,7 +81,7 @@ public class HBaseResultSet extends ResultSetBase { ColumnMetaData column = this.metaData.getColumn(columnIndex); return getObjectInternal(column.getColumnName(), column.getColumnType()); } - + public Object getObjectInternal(String columnName, int type) throws SQLException { byte[] bytes = getBytes(columnName); switch (type) { @@ -109,13 +120,13 @@ public class HBaseResultSet extends ResultSetBase { byte[] bytes = getBytes(columnIndex); return Bytes.toString(bytes); } - + @Override public String getString(String columnName) throws SQLException { byte[] bytes = getBytes(columnName); return Bytes.toString(bytes); } - + @Override public byte[] getBytes(int columnIndex) throws SQLException { ColumnMetaData column = this.metaData.getColumn(columnIndex); @@ -149,15 +160,15 @@ public class HBaseResultSet extends ResultSetBase { return Bytes.toInt(bytes); } - + @Override public int getInt(int columnIndex) throws SQLException { byte[] bytes = getBytes(columnIndex); - + if (bytes == null) { return 0; } - + return Bytes.toInt(bytes); } @@ -171,15 +182,15 @@ public class HBaseResultSet extends ResultSetBase { return Bytes.toBigDecimal(bytes); } - + @Override public BigDecimal getBigDecimal(int columnIndex) throws SQLException { byte[] bytes = getBytes(columnIndex); - + if (bytes == null) { return null; } - + return Bytes.toBigDecimal(bytes); } diff --git a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java index 35ffbf40ac..1cff540c00 100644 --- a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java +++ b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java @@ -19,6 +19,7 @@ import com.alibaba.druid.hbase.HBaseConnection; import com.alibaba.druid.hbase.HPreparedStatement; import com.alibaba.druid.hbase.HBaseResultSet; import com.alibaba.druid.hbase.HResultSetMetaData; +import com.alibaba.druid.hbase.mapping.HMapping; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator; @@ -27,13 +28,27 @@ import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { - private List columeNames = new ArrayList(); - private List conditions = new ArrayList(); + private List columeNames = new ArrayList(); + private List conditions = new ArrayList(); - private byte[] family = Bytes.toBytes("d"); + private byte[] family = Bytes.toBytes("d"); private HResultSetMetaData resultMetaData; + private HMapping mapping; + + public SingleTableQueryExecutePlan(){ + + } + + public HMapping getMapping() { + return mapping; + } + + public void setMapping(HMapping mapping) { + this.mapping = mapping; + } + public List getConditions() { return conditions; } @@ -42,10 +57,6 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { this.conditions = conditions; } - public SingleTableQueryExecutePlan(){ - - } - public List getColumeNames() { return columeNames; } @@ -62,7 +73,6 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { public HBaseResultSet executeQuery(HPreparedStatement statement) throws SQLException { try { HBaseConnection connection = statement.getConnection(); - HTableInterface htable = connection.getHTable(getTableName()); String dbType = connection.getConnectProperties().getProperty("dbType"); Scan scan = new Scan(); @@ -109,11 +119,13 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { } } + HTableInterface htable = connection.getHTable(getTableName()); ResultScanner scanner = htable.getScanner(scan); HBaseResultSet resultSet = new HBaseResultSet(statement, htable, scanner); resultSet.setMetaData(resultMetaData); - + resultSet.setMapping(mapping); + return resultSet; } catch (SQLException e) { throw e;