@Test public void testCheckAndPut_wrongRowInPut() throws IOException { this.region = initHRegion(tableName, method, CONF, COLUMNS); Put put = new Put(row2); put.addColumn(fam1, qual1, value1); try { region.checkAndMutate(row, fam1, qual1, CompareOperator.EQUAL, new BinaryComparator(value2), put); fail(); } catch (org.apache.hadoop.hbase.DoNotRetryIOException expected) { // expected exception. } }
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), put); assertEquals(false, res); region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator(bd2), put); assertEquals(false, res); delete.addFamily(fam1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator(bd2), put); assertEquals(false, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), delete); assertEquals(true, res); region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd1), put); assertEquals(true, res); delete.addColumn(fam1, qf1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd1), delete); assertEquals(true, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), put); assertEquals(true, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), put); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), put); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), put); assertFalse(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertFalse(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), put); assertTrue(res); delete.addColumn(fam1, qf1); delete.addColumn(fam1, qf1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), delete); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertTrue(res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val4), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val2), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val2), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val1), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.GREATER, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.GREATER,
delete.addColumn(fam2, qf1); delete.addColumn(fam1, qf3); boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), delete); assertEquals(true, res); res = region.checkAndMutate(row1, fam2, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), delete); assertEquals(true, res);
@Test public void testCheckAndMutateTimestampsAreMonotonic() throws IOException { region = initHRegion(tableName, method, CONF, fam1); ManualEnvironmentEdge edge = new ManualEnvironmentEdge(); EnvironmentEdgeManager.injectEdge(edge); edge.setValue(10); Put p = new Put(row); p.setDurability(Durability.SKIP_WAL); p.addColumn(fam1, qual1, qual1); region.put(p); Result result = region.get(new Get(row)); Cell c = result.getColumnLatestCell(fam1, qual1); assertNotNull(c); assertEquals(10L, c.getTimestamp()); edge.setValue(1); // clock goes back p = new Put(row); p.setDurability(Durability.SKIP_WAL); p.addColumn(fam1, qual1, qual2); region.checkAndMutate(row, fam1, qual1, CompareOperator.EQUAL, new BinaryComparator(qual1), p); result = region.get(new Get(row)); c = result.getColumnLatestCell(fam1, qual1); assertEquals(10L, c.getTimestamp()); assertTrue(Bytes.equals(c.getValueArray(), c.getValueOffset(), c.getValueLength(), qual2, 0, qual2.length)); }
boolean result = region.checkAndMutate(row, family, qualifier, compareOp, comparator, timeRange, put); if (region.getCoprocessorHost() != null) { boolean result = region.checkAndMutate(row, family, qualifier, op, comparator, timeRange, delete); if (region.getCoprocessorHost() != null) {
/** * * @param row * @param family * @param qualifier * @param compareOp * @param comparator * @param writeToWAL * @throws IOException * @return true if the new put was execute, false otherwise */ public boolean checkAndMutate(byte [] row, byte [] family, byte [] qualifier, CompareOp compareOp, WritableByteArrayComparable comparator, Writable w, boolean writeToWAL) throws IOException { return checkAndMutate(row, family, qualifier, compareOp, comparator, w, null, writeToWAL); }
private boolean checkAndMutate(final byte[] regionName, final byte[] row, final byte[] family, final byte[] qualifier, final CompareOp compareOp, final WritableByteArrayComparable comparator, final Writable w, Integer lock) throws IOException { checkOpen(); this.requestCount.incrementAndGet(); HRegion region = getRegion(regionName); try { if (!region.getRegionInfo().isMetaTable()) { this.cacheFlusher.reclaimMemStoreMemory(); } return region.checkAndMutate(row, family, qualifier, compareOp, comparator, w, lock, true); } catch (Throwable t) { throw convertThrowableToIOE(cleanup(t)); } }
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator( val2), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), put); assertEquals(false, res); region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd2), put); assertEquals(false, res); delete.addFamily(fam1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd2), put); assertEquals(false, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator( val1), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), delete); assertEquals(true, res); region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd1), put); assertEquals(true, res); delete.addColumn(fam1, qf1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BigDecimalComparator( bd1), delete); assertEquals(true, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator( emptyVal), put); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), put); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), put); assertFalse(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertFalse(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), put); assertTrue(res); delete.addColumn(fam1, qf1); delete.addColumn(fam1, qf1); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val2), delete); assertTrue(res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertTrue(res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator( val1), put); assertEquals(true, res);
boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val4), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS, new BinaryComparator(val2), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val2), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.LESS_OR_EQUAL, new BinaryComparator(val1), put); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.GREATER, new BinaryComparator(val3), put); assertEquals(false, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.GREATER,
@Test public void testCheckAndPut_wrongRowInPut() throws IOException { this.region = initHRegion(tableName, method, CONF, COLUMNS); try { Put put = new Put(row2); put.addColumn(fam1, qual1, value1); try { region.checkAndMutate(row, fam1, qual1, CompareOperator.EQUAL, new BinaryComparator(value2), put); fail(); } catch (org.apache.hadoop.hbase.DoNotRetryIOException expected) { // expected exception. } } finally { HBaseTestingUtility.closeRegionAndWAL(this.region); this.region = null; } }
delete.addColumn(fam2, qf1); delete.addColumn(fam1, qf3); boolean res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator( val2), delete); assertEquals(true, res); res = region.checkAndMutate(row1, fam2, qf1, CompareOperator.EQUAL, new BinaryComparator(emptyVal), delete); assertEquals(true, res); res = region.checkAndMutate(row1, fam1, qf1, CompareOperator.EQUAL, new BinaryComparator(val1), delete); assertEquals(true, res);
@Test public void testCheckAndMutateTimestampsAreMonotonic() throws IOException { HRegion region = initHRegion(tableName, method, CONF, fam1); ManualEnvironmentEdge edge = new ManualEnvironmentEdge(); EnvironmentEdgeManager.injectEdge(edge); edge.setValue(10); Put p = new Put(row); p.setDurability(Durability.SKIP_WAL); p.addColumn(fam1, qual1, qual1); region.put(p); Result result = region.get(new Get(row)); Cell c = result.getColumnLatestCell(fam1, qual1); assertNotNull(c); assertEquals(10L, c.getTimestamp()); edge.setValue(1); // clock goes back p = new Put(row); p.setDurability(Durability.SKIP_WAL); p.addColumn(fam1, qual1, qual2); region.checkAndMutate(row, fam1, qual1, CompareOperator.EQUAL, new BinaryComparator(qual1), p); result = region.get(new Get(row)); c = result.getColumnLatestCell(fam1, qual1); assertEquals(10L, c.getTimestamp()); assertTrue(Bytes.equals(c.getValueArray(), c.getValueOffset(), c.getValueLength(), qual2, 0, qual2.length)); }