Description
Code executed:
@Test public void testHbasePutDeleteCell() throws Exception { TableName tableName = TableName.valueOf("my_test"); Configuration configuration = HBaseConfiguration.create(); HTableInterface table = new HTable(configuration, tableName); final String rowKey = "12345"; final byte[] familly = Bytes.toBytes("default"); // put one row Put put = new Put(rowKey); put.add(family, Bytes.toBytes("A"), Bytes.toBytes("a")); put.add(family, Bytes.toBytes("B"), Bytes.toBytes("b")); put.add(family, Bytes.toBytes("C"), Bytes.toBytes("c")); put.add(family, Bytes.toBytes("D"), Bytes.toBytes("d")); table.put(put); // get row back and assert the values Get get = new Get(rowKey); Result result = table.get(get); assertTrue("Column A value should be a", Bytes.toString(result.getValue(family, Bytes.toBytes("A"))).equals("a")); assertTrue("Column B value should be b", Bytes.toString(result.getValue(family, Bytes.toBytes("B"))).equals("b")); assertTrue("Column C value should be c", Bytes.toString(result.getValue(family, Bytes.toBytes("C"))).equals("c")); assertTrue("Column D value should be d", Bytes.toString(result.getValue(family, Bytes.toBytes("D"))).equals("d")); // put the same row again with C column deleted put = new Put(rowKey); put.add(family, Bytes.toBytes("A"), Bytes.toBytes("a1")); put.add(family, Bytes.toBytes("B"), Bytes.toBytes("b1")); KeyValue marker = new KeyValue(rowKey, family, Bytes.toBytes("C"), HConstants.LATEST_TIMESTAMP, KeyValue.Type.DeleteColumn); put.add(marker); put.add(family, Bytes.toBytes("D"), Bytes.toBytes("d1")); table.put(put); // get row back and assert the values get = new Get(rowKey); result = table.get(get); assertTrue("Column A value should be a1", Bytes.toString(result.getValue(family, Bytes.toBytes("A"))).equals("a1")); assertTrue("Column B value should be b1", Bytes.toString(result.getValue(family, Bytes.toBytes("B"))).equals("b1")); assertTrue("Column C should not exist", result.getValue(family, Bytes.toBytes("C")) == null); assertTrue("Column D value should be d1", Bytes.toString(result.getValue(family, Bytes.toBytes("D"))).equals("d1")); }
This assertion fails, the cell D is also deleted
Attachments
Attachments
Issue Links
- blocks
-
HBASE-11788 hbase is not deleting the cell when a Put with a KeyValue, KeyValue.Type.Delete is submitted
- Closed