/** * Method to execute a Delete mutation operation on Hypertable. A delete is implemented by * Hypertable as a put that inserts tombstone values. * * @param tableName * @param delete * @throws ClientException * @throws TException */ public void delete(String tableName, Delete delete) throws ClientException, TException { long mutator = client.mutator_open(ns, tableName, 0, 0); for (int i = 0; i < delete._getCells().size(); i++) { Cell c = delete._getCells().get(i); if (c.getKey().isSetRevision()) { int revs = (int) c.getKey().getRevision(); System.out.println(revs); String cfam = c.getKey().getColumn_family(); String cqual = c.getKey().getColumn_qualifier(); c.getKey().setRevisionIsSet(false); List<Result> res = this.scan( tableName, new Scan(delete.getRowkey()).addColumn(cfam, cqual).setRevisions(revs)); if (!res.isEmpty()) { System.out.println(res.get(0).getValueRevisions(cfam, cqual)); for (Long ts : res.get(0).getTimestampRevisions(cfam, cqual)) delete.deleteColumn(cfam, cqual, ts); } delete._getCells().remove(i--); } } try { if (delete._getCells().size() > 1) client.mutator_set_cells(mutator, delete._getCells()); else if (delete._getCells().size() == 1) client.mutator_set_cell(mutator, delete._getCells().get(0)); } finally { client.mutator_close(mutator); } }
/** * Method to execute a batch Delete mutation operation on Hypertable. A delete is implemented by * Hypertable as a put that inserts tombstone values. * * @param tableName * @param deletes * @throws ClientException * @throws TException */ public void delete(String tableName, List<Delete> deletes) throws ClientException, TException { long mutator = client.mutator_open(ns, tableName, 0, 0); List<Cell> cells = new LinkedList<Cell>(); for (Delete delete : deletes) cells.addAll(delete._getCells()); try { if (cells.size() > 1) client.mutator_set_cells(mutator, cells); else if (cells.size() == 1) client.mutator_set_cell(mutator, cells.get(0)); } finally { client.mutator_close(mutator); } }