Index: bin/hirb.rb =================================================================== --- bin/hirb.rb (revision 886726) +++ bin/hirb.rb (working copy) @@ -225,6 +225,14 @@ hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, \\ VERSIONS => 4} + incr Increments a cell 'value' at specified table/row/column coordinates. + To increment a cell value in table 't1' at row 'r1' under column 'c1' + by 1 (can be omitted) or 10 do: + + hbase> incr 't1', 'r1', 'c1' + hbase> incr 't1', 'r1', 'c1', 1 + hbase> incr 't1', 'r1', 'c1', 10 + list List all tables in hbase put Put a cell 'value' at specified table/row/column and optionally @@ -392,6 +400,10 @@ table(table).put(row, column, value, timestamp) end +def incr(table, row, column, value = nil) + table(table).incr(row, column, value) +end + def scan(table, args = {}) table(table).scan(args) end Index: bin/HBase.rb =================================================================== --- bin/HBase.rb (revision 886726) +++ bin/HBase.rb (working copy) @@ -460,6 +460,22 @@ @formatter.footer(now) end + def incr(row, column, value = nil) + now = Time.now + split = KeyValue.parseColumn(column.to_java_bytes) + family = split[0] + qualifier = nil + if split.length > 1 + qualifier = split[1] + end + if value == nil + value = 1 + end + @table.incrementColumnValue(row.to_java_bytes, family, qualifier, value) + @formatter.header() + @formatter.footer(now) + end + def isMetaTable() tn = @table.getTableName() return Bytes.equals(tn, HConstants::META_TABLE_NAME) || @@ -621,6 +637,12 @@ if formatter.rowCount() != 3 raise IOError.new("Failed endrow test") end + # Verify that incr works + table.incr('incr1', 'c:1'); + table.scan({COLUMNS => ['c:1']}) + if formatter.rowCount() != 1 + raise IOError.new("Failed incr test") + end # Verify that delete works table.delete('x1', 'x:1'); table.scan({COLUMNS => ['x:1']})