diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java index 7b6c9a8..8df4639 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java @@ -1008,4 +1008,51 @@ public class TestFromClientSide3 { return s; } } + + @Test + public void testDeleteOldVersion() throws IOException, InterruptedException { + final TableName tableName = TableName.valueOf("testChia7712"); + Admin admin = TEST_UTIL.getHBaseAdmin(); + HColumnDescriptor colDesc = new HColumnDescriptor(FAMILY); + colDesc.setMaxVersions(1); + HTableDescriptor desc = new HTableDescriptor(tableName); + desc.addFamily(colDesc); + admin.createTable(desc); + byte[] qual0 = Bytes.toBytes("qual0"); + byte[] qual1 = Bytes.toBytes("qual1"); + byte[] value0 = Bytes.toBytes("value0"); + byte[] value1 = Bytes.toBytes("value1"); + try (Table table = TEST_UTIL.getConnection().getTable(tableName)){ + Put put = new Put(ROW); + put.addColumn(FAMILY, qual0, value0); + table.put(put); + put = new Put(ROW); + put.addColumn(FAMILY, qual0, value1); + table.put(put); + + put = new Put(ROW); + put.addColumn(FAMILY, qual1, value0); + table.put(put); + put = new Put(ROW); + put.addColumn(FAMILY, qual1, value1); + table.put(put); + + Result r = table.get(new Get(ROW).addColumn(FAMILY, qual0)); + assertEquals(1, r.size()); + assertEquals(Bytes.toString(value1), Bytes.toString(CellUtil.cloneValue(r.rawCells()[0]))); + r = table.get(new Get(ROW).addColumn(FAMILY, qual1)); + assertEquals(1, r.size()); + assertEquals(Bytes.toString(value1), Bytes.toString(CellUtil.cloneValue(r.rawCells()[0]))); + + // delete the qual0 before flush. + table.delete(new Delete(ROW).addColumn(FAMILY, qual0)); + admin.flush(tableName); + // delete the qual1 before flush. + table.delete(new Delete(ROW).addColumn(FAMILY, qual1)); + + int sizeOfQual0 = table.get(new Get(ROW).addColumn(FAMILY, qual0)).size(); + int sizeOfQual1 = table.get(new Get(ROW).addColumn(FAMILY, qual1)).size(); + assertEquals(sizeOfQual0, sizeOfQual1); + } + } }