Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-20327

When qualifier is not specified, append and incr operation do not work (shell)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 3.0.0-alpha-1, 2.0.0
    • 3.0.0-alpha-1, 2.1.0, 2.0.1
    • shell
    • None
    • Reviewed
    • This change will enable users to perform append and increment operation with null qualifier via hbase-shell.

    Description

      Running the example commands specified in shell docs for "append" and "incr" throw following error:

      ERROR: Failed to provide both column family and column qualifier for append
      ERROR: Failed to provide both column family and column qualifier for incr

      While running the same command via java does not require the user to provide both column and qualifier and works smoothly.

       

      Steps to reproduce:

      1) APPEND

      hbase(main):002:0> create 't1', 'c1', 'c2'
      Created table t1
      Took 0.8151 seconds                                                                                                                            
      hbase(main):003:0> append 't1', 'r1', 'c1', 'value'
      
      ERROR: Failed to provide both column family and column qualifier for append
      
      Appends a cell 'value' at specified table/row/column coordinates.
      
        hbase> append 't1', 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
        hbase> append 't1', 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}
      
      The same commands also can be run on a table reference. Suppose you had a reference
      t to table 't1', the corresponding command would be:
      
        hbase> t.append 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
        hbase> t.append 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}
      
      Took 0.0326 seconds  
      
      hbase(main):004:0> scan 't1'
      ROW                                  COLUMN+CELL                                                                                               
      0 row(s)
      Took 0.1273 seconds                                                                                                                         

      While the same command would run if we run the following java code:

          try (Connection connection = ConnectionFactory.createConnection(config);
              Admin admin = connection.getAdmin();) {
            Table table = connection.getTable(TableName.valueOf("t1"));
            Append a = new Append(Bytes.toBytes("r1"));
            a.addColumn(Bytes.toBytes("c1"), null, Bytes.toBytes("value"));
            table.append(a);
          }

      Scan result after executing java code:

      hbase(main):005:0> scan 't1'
      ROW                                  COLUMN+CELL                                                                                               
       r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
      1 row(s)
      Took 0.0188 seconds    
      

       

      2) INCREMENT:

      Similarly in case of increment, we get the following error (shell):

      hbase(main):006:0> incr 't1', 'r2', 'c1', 111
      
      ERROR: Failed to provide both column family and column qualifier for incr
      
      Increments a cell 'value' at specified table/row/column coordinates.
      To increment a cell value in table 'ns1:t1' or 't1' at row 'r1' under column
      'c1' by 1 (can be omitted) or 10 do:
      
        hbase> incr 'ns1:t1', 'r1', 'c1'
        hbase> incr 't1', 'r1', 'c1'
        hbase> incr 't1', 'r1', 'c1', 1
        hbase> incr 't1', 'r1', 'c1', 10
        hbase> incr 't1', 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
        hbase> incr 't1', 'r1', 'c1', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
        hbase> incr 't1', 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}
      
      The same commands also can be run on a table reference. Suppose you had a reference
      t to table 't1', the corresponding command would be:
      
        hbase> t.incr 'r1', 'c1'
        hbase> t.incr 'r1', 'c1', 1
        hbase> t.incr 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
        hbase> t.incr 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}
      
      Took 0.0103 seconds                                                                                                                            
      hbase(main):007:0> scan 't1'
      ROW                                  COLUMN+CELL                                                                                               
       r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
      1 row(s)
      Took 0.0062 seconds      
      

      While the same command would run, if we run the following java code:

          try (Connection connection = ConnectionFactory.createConnection(config);
              Admin admin = connection.getAdmin();) {
            Table table = connection.getTable(TableName.valueOf("t1"));
            Increment incr = new Increment(Bytes.toBytes("r2"));
            incr.addColumn(Bytes.toBytes("c1"), null, 111);
            table.increment(incr);
            scan(table);
          }
      

      Scan result after executing java code:

      hbase(main):008:0> scan 't1'
      ROW                                  COLUMN+CELL                                                                                               
       r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
       r2                                  column=c1:, timestamp=1522649933949, value=\x00\x00\x00\x00\x00\x00\x00o                                  
      2 row(s)
      Took 0.0133 seconds                                                                                                                          

       

      Attachments

        1. HBASE-20327.master.001.patch
          3 kB
          Nihal Jain
        2. HBASE-20327.master.002.patch
          4 kB
          Nihal Jain
        3. HBASE-20327.master.003.patch
          4 kB
          Nihal Jain
        4. HBASE-20327.master.004.patch
          3 kB
          Nihal Jain

        Issue Links

          Activity

            People

              nihaljain.cs Nihal Jain
              nihaljain.cs Nihal Jain
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: