There are some confusing parts about the Delete client API:
1. calling deleteFamily removes all prior column or columns markers without
checking the TS.
2. delete{Column|Columns|Family} do not use the timestamp passed to Delete at
construction time, but instead default to LATEST_TIMESTAMP.
Delete d = new Delete(R,T);
d.deleteFamily(CF);
Does not do what you expect (won't use T for the family delete, but rather the
current time).
Neither does
d.deleteColumns(CF, C1, T2);
d.deleteFamily(CF, T1); // T1 < T2
(the columns marker will be removed)
#1 prevents Delete from adding a family marker F for time T1 and a
column/columns marker for columns of F at T2 even if T2 > T1.
#2 is just unexpected and different from what Put is doing.
In HBASE-5205 I propose a simple patch to fix this.
Since this is a (slight) API change, please provide feed back.
Thanks.
-- Lars