Skip to content

Commit ea9bc92

Browse files
authored
HBASE-26895 on hbase shell, 'delete/deleteall' for a columnfamily is not working (#4283)
Signed-off-by: Duo Zhang <[email protected]>
1 parent 7ac9e0b commit ea9bc92

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

hbase-shell/src/main/ruby/hbase/table.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,18 @@ def _createdelete_internal(row, column = nil,
189189
if column != ""
190190
if column && all_version
191191
family, qualifier = parse_column_name(column)
192-
d.addColumns(family, qualifier, timestamp)
192+
if qualifier
193+
d.addColumns(family, qualifier, timestamp)
194+
else
195+
d.addFamily(family, timestamp)
196+
end
193197
elsif column && !all_version
194198
family, qualifier = parse_column_name(column)
195-
d.addColumn(family, qualifier, timestamp)
199+
if qualifier
200+
d.addColumn(family, qualifier, timestamp)
201+
else
202+
d.addFamilyVersion(family, timestamp)
203+
end
196204
end
197205
end
198206
d

hbase-shell/src/test/ruby/hbase/table_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,21 @@ def teardown
164164
assert_nil(res)
165165
end
166166

167+
define_test "delete should set proper cell type" do
168+
del = @test_table._createdelete_internal('104', 'x:a', 1212)
169+
assert_equal(del.get('x'.to_java_bytes, 'a'.to_java_bytes).get(0).getType.getCode,
170+
org.apache.hadoop.hbase::KeyValue::Type::DeleteColumn.getCode)
171+
del = @test_table._createdelete_internal('104', 'x:a', 1212, [], false)
172+
assert_equal(del.get('x'.to_java_bytes, 'a'.to_java_bytes).get(0).getType.getCode,
173+
org.apache.hadoop.hbase::KeyValue::Type::Delete.getCode)
174+
del = @test_table._createdelete_internal('104', 'x', 1212)
175+
assert_equal(del.get('x'.to_java_bytes, nil).get(0).getType.getCode,
176+
org.apache.hadoop.hbase::KeyValue::Type::DeleteFamily.getCode)
177+
del = @test_table._createdelete_internal('104', 'x', 1212, [], false)
178+
assert_equal(del.get('x'.to_java_bytes, nil).get(0).getType.getCode,
179+
org.apache.hadoop.hbase::KeyValue::Type::DeleteFamilyVersion.getCode)
180+
end
181+
167182
#-------------------------------------------------------------------------------
168183

169184
define_test "deleteall should work w/o columns and timestamps" do

0 commit comments

Comments
 (0)