hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Hsieh (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-9359) Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, ColumnInterpreter
Date Wed, 28 Aug 2013 18:30:52 GMT

    [ https://issues.apache.org/jira/browse/HBASE-9359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13752683#comment-13752683
] 

Jonathan Hsieh commented on HBASE-9359:
---------------------------------------

In v1, basically, any method whose return type will require apps to do some code changes.
 Methods where arguments change from KeyValue to Cell should still work since Cell can accept
KeyValues.  I'm leaning towards making sure the commonly used but inefficient KeyValue methods
(including #getQualifier, #getFamily, and #getValue, and #getRow) get ported into the Cell
interface.  Clients would essentially only have to replace KeyValue with Cell in these cases.

{code}
Put:
-  public List<KeyValue> get(byte[] family, byte[] qualifier)
+  public List<Cell> get(byte[] family, byte[] qualifier) 

Result:
-  public KeyValue[] raw() {
+  public Cell[] raw() {

-  public List<KeyValue> list() {
+  public List<Cell> list() {

-  public List<KeyValue> getColumn(byte [] family, byte [] qualifier) {
+  public List<Cell> getColumn(byte [] family, byte [] qualifier) {

-  public KeyValue getColumnLatest(byte [] family, byte [] qualifier) {
+  public Cell getColumnLatest(byte [] family, byte [] qualifier) {

-  public KeyValue getColumnLatest(byte [] family, int foffset, int flength,
+  public Cell getColumnLatest(byte [] family, int foffset, int flength,
       byte [] qualifier, int qoffset, int qlength) {
{code}

For extension interfaces that have changed signatures (like filters in HBASE-9334 and in here,
coprocessors) we can keep both the old and new signature and have the abstract implementation
helper have the new call the old.  For the shim to handle the List<KeyValue> -> List<Cell>
conversion, I'm going to use a naive array copy.  (Another option is to change the signature
to List<? extends Cell> -- will look at this option one more time).

{code}
ColumnInterpreter:  (abstract class)
-  public abstract T getValue(byte[] colFamily, byte[] colQualifier, KeyValue kv)
+  public abstract T getValue(byte[] colFamily, byte[] colQualifier, Cell kv)
 
BaseRegionObserver: (abstract class)
RegionObserver:  (inteface)
   void preGet(final ObserverContext<RegionCoprocessorEnvironment> c, final Get get,
-      final List<KeyValue> result)
+      final List<Cell> result)
     throws IOException;
   void postGet(final ObserverContext<RegionCoprocessorEnvironment> c, final Get get,
-      final List<KeyValue> result)
+      final List<Cell> result)
     throws IOException;
{code}
                
> Convert KeyValue to Cell in hbase-client module - Result/Put/Delete, ColumnInterpreter
> --------------------------------------------------------------------------------------
>
>                 Key: HBASE-9359
>                 URL: https://issues.apache.org/jira/browse/HBASE-9359
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Client
>    Affects Versions: 0.95.2
>            Reporter: Jonathan Hsieh
>            Assignee: Jonathan Hsieh
>         Attachments: hbase-9359.patch
>
>
> This path is the second half of eliminating KeyValue from the client interfaces.  This
percolated through quite a bit. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message