HBASE-24335 Support deleteall with ts but without column in shell mode (#1668)

Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org>
(cherry picked from commit 2cafe81e9c)
This commit is contained in:
bsglz 2020-05-08 01:18:57 +08:00 committed by Wellington Chevreuil
parent f49fc24ecf
commit 9dd8c9607c
3 changed files with 23 additions and 6 deletions

View File

@ -183,12 +183,14 @@ EOF
visibility = args[VISIBILITY] visibility = args[VISIBILITY]
set_cell_visibility(d, visibility) if visibility set_cell_visibility(d, visibility) if visibility
end end
if column && all_version if column != ""
family, qualifier = parse_column_name(column) if column && all_version
d.addColumns(family, qualifier, timestamp) family, qualifier = parse_column_name(column)
elsif column && !all_version d.addColumns(family, qualifier, timestamp)
family, qualifier = parse_column_name(column) elsif column && !all_version
d.addColumn(family, qualifier, timestamp) family, qualifier = parse_column_name(column)
d.addColumn(family, qualifier, timestamp)
end
end end
d d
end end

View File

@ -30,12 +30,16 @@ row key prefix. Examples:
hbase> deleteall 't1', 'r1' hbase> deleteall 't1', 'r1'
hbase> deleteall 't1', 'r1', 'c1' hbase> deleteall 't1', 'r1', 'c1'
hbase> deleteall 't1', 'r1', 'c1', ts1 hbase> deleteall 't1', 'r1', 'c1', ts1
//'' means no specific column, will delete all cells in the row which timestamp is lower than
//the one specified in the command
hbase> deleteall 't1', 'r1', '', ts1
hbase> deleteall 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'} hbase> deleteall 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
ROWPREFIXFILTER can be used to delete row ranges ROWPREFIXFILTER can be used to delete row ranges
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'} hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1' //delete certain column family in the row ranges hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1' //delete certain column family in the row ranges
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1 hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, '', ts1
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'} hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
CACHE can be used to specify how many deletes batched to be sent to server at one time, default is 100 CACHE can be used to specify how many deletes batched to be sent to server at one time, default is 100

View File

@ -115,6 +115,9 @@ module Hbase
@test_table.put(105, "x:a", "3") @test_table.put(105, "x:a", "3")
@test_table.put(105, "x:a", "4") @test_table.put(105, "x:a", "4")
@test_table.put(106, "x:a", "3", 1588765900000)
@test_table.put(106, "x:b", "4", 1588765900010)
@test_table.put("111", "x:a", "5") @test_table.put("111", "x:a", "5")
@test_table.put("111", "x:b", "6") @test_table.put("111", "x:b", "6")
@test_table.put("112", "x:a", "5") @test_table.put("112", "x:a", "5")
@ -168,6 +171,14 @@ module Hbase
assert_nil(res) assert_nil(res)
end end
define_test "deleteall should work with timestamps but w/o columns" do
@test_table.deleteall("106", "", 1588765900005)
res = @test_table._get_internal('106', 'x:a')
assert_nil(res)
res = @test_table._get_internal('106', 'x:b')
assert_not_nil(res)
end
define_test "deleteall should work with integer keys" do define_test "deleteall should work with integer keys" do
@test_table.deleteall(105) @test_table.deleteall(105)
res = @test_table._get_internal('105', 'x:a') res = @test_table._get_internal('105', 'x:a')