HBASE-13550 [Shell] Support unset of a list of table attributes

This commit is contained in:
Andrew Purtell 2015-04-23 17:12:58 -07:00
parent 8a18cf3c01
commit cd83d39fb4
2 changed files with 28 additions and 3 deletions

View File

@ -518,10 +518,19 @@ module Hbase
# Unset table attributes
elsif method == "table_att_unset"
raise(ArgumentError, "NAME parameter missing for table_att_unset method") unless name
if (htd.getValue(name) == nil)
raise ArgumentError, "Can not find attribute: #{name}"
if name.kind_of?(Array)
name.each do |key|
if (htd.getValue(key) == nil)
raise ArgumentError, "Could not find attribute: #{key}"
end
htd.remove(key)
end
else
if (htd.getValue(name) == nil)
raise ArgumentError, "Could not find attribute: #{name}"
end
htd.remove(name)
end
htd.remove(name)
@admin.modifyTable(table_name.to_java_bytes, htd)
# Unknown method
else

View File

@ -348,6 +348,22 @@ module Hbase
assert_no_match(eval("/" + key + "/"), admin.describe(@test_name))
end
define_test "alter should be able to remove a list of table attributes" do
drop_test_table(@test_name)
key_1 = "TestAttr1"
key_2 = "TestAttr2"
admin.create(@test_name, { NAME => 'i'}, METADATA => { key_1 => 1, key_2 => 2 })
# eval() is used to convert a string to regex
assert_match(eval("/" + key_1 + "/"), admin.describe(@test_name))
assert_match(eval("/" + key_2 + "/"), admin.describe(@test_name))
admin.alter(@test_name, true, 'METHOD' => 'table_att_unset', 'NAME' => [ key_1, key_2 ])
assert_no_match(eval("/" + key_1 + "/"), admin.describe(@test_name))
assert_no_match(eval("/" + key_2 + "/"), admin.describe(@test_name))
end
define_test "get_table should get a real table" do
drop_test_table(@test_name)
create_test_table(@test_name)