.setType(Type.Put) .setValue(label) .setTags(TagUtil.fromList(Arrays.asList(LABELS_TABLE_TAGS))) .build()); if (LOG.isDebugEnabled()) {
.setType(Cell.Type.Put) .setValue(DUMMY_VALUE) .setTags(TagUtil.fromList(Arrays.asList(LABELS_TABLE_TAGS))) .build()); puts.add(p);
/** * Marked as audience Private as of 1.2.0. * Creating a Cell with tags and a memstoreTS/mvcc is an * internal implementation detail not for public use. * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0. Use * {@link ExtendedCellBuilder} instead */ @InterfaceAudience.Private @Deprecated public static Cell createCell(final byte[] row, final byte[] family, final byte[] qualifier, final long timestamp, final byte type, final byte[] value, byte[] tags, final long memstoreTS) { return ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY) .setRow(row) .setFamily(family) .setQualifier(qualifier) .setTimestamp(timestamp) .setType(type) .setValue(value) .setTags(tags) .setSequenceId(memstoreTS) .build(); }
.setType(reference.getTypeByte()) .setValue(HConstants.EMPTY_BYTE_ARRAY) .setTags(reference.getTagsArray(), reference.getTagsOffset(), reference.getTagsLength()) .build();
private static Cell reckonDelta(final Cell delta, final Cell currentCell, final byte[] columnFamily, final long now, Mutation mutation, Function<Cell, byte[]> supplier) throws IOException { // Forward any tags found on the delta. List<Tag> tags = TagUtil.carryForwardTags(delta); tags = TagUtil.carryForwardTTLTag(tags, mutation.getTTL()); if (currentCell != null) { tags = TagUtil.carryForwardTags(tags, currentCell); byte[] newValue = supplier.apply(currentCell); return ExtendedCellBuilderFactory.create(CellBuilderType.SHALLOW_COPY) .setRow(mutation.getRow(), 0, mutation.getRow().length) .setFamily(columnFamily, 0, columnFamily.length) // copy the qualifier if the cell is located in shared memory. .setQualifier(CellUtil.cloneQualifier(delta)) .setTimestamp(Math.max(currentCell.getTimestamp() + 1, now)) .setType(KeyValue.Type.Put.getCode()) .setValue(newValue, 0, newValue.length) .setTags(TagUtil.fromList(tags)) .build(); } else { PrivateCellUtil.updateLatestStamp(delta, now); return CollectionUtils.isEmpty(tags) ? delta : PrivateCellUtil.createCell(delta, tags); } }
public static Cell toCell(ExtendedCellBuilder cellBuilder, byte[] row, TColumnValue columnValue) { return cellBuilder.clear() .setRow(row) .setFamily(columnValue.getFamily()) .setQualifier(columnValue.getQualifier()) .setTimestamp(columnValue.getTimestamp()) .setType(columnValue.getType()) .setValue(columnValue.getValue()) .setTags(columnValue.getTags()) .build(); }
@Override protected Cell parseCell() throws IOException { byte[] row = readByteArray(this.in); byte[] family = readByteArray(in); byte[] qualifier = readByteArray(in); byte[] longArray = new byte[Bytes.SIZEOF_LONG]; IOUtils.readFully(this.in, longArray); long timestamp = Bytes.toLong(longArray); byte type = (byte) this.in.read(); byte[] value = readByteArray(in); byte[] tags = readByteArray(in); // Read memstore version byte[] memstoreTSArray = new byte[Bytes.SIZEOF_LONG]; IOUtils.readFully(this.in, memstoreTSArray); long memstoreTS = Bytes.toLong(memstoreTSArray); return cellBuilder.clear() .setRow(row) .setFamily(family) .setQualifier(qualifier) .setTimestamp(timestamp) .setType(type) .setValue(value) .setSequenceId(memstoreTS) .setTags(tags) .build(); }
.setType(KeyValue.Type.Put.getCode()) .setValue(value) .setTags(tags) .build());
@Test public void testTaggingAPutUnconditionally() throws Exception { Put put = generateOriginalPut(); // valueArray is null so we always set tags MetaDataUtil.conditionallyAddTagsToPutCells(put, TABLE_FAMILY_BYTES, QUALIFIER, mockBuilder, null, DUMMY_TAGS); verify(mockBuilder, times(1)).setTags(Mockito.any(byte[].class)); Cell newCell = put.getFamilyCellMap().get(TABLE_FAMILY_BYTES).get(0); assertEquals(mockCellWithTags, newCell); }
@Before public void setupMockCellBuilder() { Mockito.when(mockBuilder.setRow(Mockito.any(byte[].class), Mockito.anyInt(), Mockito.anyInt())).thenReturn(mockBuilder); Mockito.when(mockBuilder.setFamily(Mockito.any(byte[].class), Mockito.anyInt(), Mockito.anyInt())).thenReturn(mockBuilder); Mockito.when(mockBuilder.setQualifier(Mockito.any(byte[].class), Mockito.anyInt(), Mockito.anyInt())).thenReturn(mockBuilder); Mockito.when(mockBuilder.setValue(Mockito.any(byte[].class), Mockito.anyInt(), Mockito.anyInt())).thenReturn(mockBuilder); Mockito.when(mockBuilder.setTimestamp(Mockito.anyLong())).thenReturn(mockBuilder); Mockito.when(mockBuilder.setType(Mockito.any(Cell.Type.class))) .thenReturn(mockBuilder); Mockito.when(mockBuilder.setTags(Mockito.any(byte[].class))) .thenReturn(mockBuilder); Mockito.when(mockBuilder.build()).thenReturn(mockCellWithTags); }
@Test public void testTaggingAPutDueToDifferentCellValue() throws Exception { Put put = generateOriginalPut(); // valueArray is set to a value different than the one in the cell, so we tag the cell MetaDataUtil.conditionallyAddTagsToPutCells(put, TABLE_FAMILY_BYTES, QUALIFIER, mockBuilder, EMPTY_BYTE_ARRAY, DUMMY_TAGS); verify(mockBuilder, times(1)).setTags(Mockito.any(byte[].class)); Cell newCell = put.getFamilyCellMap().get(TABLE_FAMILY_BYTES).get(0); assertEquals(mockCellWithTags, newCell); }
@Test public void testExtendedCellBuilderWithDeepCopy() { byte[] row = new byte[]{OLD_DATA}; byte[] family = new byte[]{OLD_DATA}; byte[] qualifier = new byte[]{OLD_DATA}; byte[] value = new byte[]{OLD_DATA}; byte[] tags = new byte[]{OLD_DATA}; long seqId = 999; Cell cell = ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY) .setRow(row) .setFamily(family) .setQualifier(qualifier) .setType(KeyValue.Type.Put.getCode()) .setValue(value) .setTags(tags) .setSequenceId(seqId) .build(); row[0] = NEW_DATA; family[0] = NEW_DATA; qualifier[0] = NEW_DATA; value[0] = NEW_DATA; tags[0] = NEW_DATA; assertEquals(OLD_DATA, cell.getRowArray()[cell.getRowOffset()]); assertEquals(OLD_DATA, cell.getFamilyArray()[cell.getFamilyOffset()]); assertEquals(OLD_DATA, cell.getQualifierArray()[cell.getQualifierOffset()]); assertEquals(OLD_DATA, cell.getValueArray()[cell.getValueOffset()]); assertEquals(OLD_DATA, cell.getTagsArray()[cell.getTagsOffset()]); assertEquals(seqId, cell.getSequenceId()); } }
@Test public void testExtendedCellBuilderWithShallowCopy() { byte[] row = new byte[]{OLD_DATA}; byte[] family = new byte[]{OLD_DATA}; byte[] qualifier = new byte[]{OLD_DATA}; byte[] value = new byte[]{OLD_DATA}; byte[] tags = new byte[]{OLD_DATA}; long seqId = 999; Cell cell = ExtendedCellBuilderFactory.create(CellBuilderType.SHALLOW_COPY) .setRow(row) .setFamily(family) .setQualifier(qualifier) .setType(KeyValue.Type.Put.getCode()) .setValue(value) .setTags(tags) .setSequenceId(seqId) .build(); row[0] = NEW_DATA; family[0] = NEW_DATA; qualifier[0] = NEW_DATA; value[0] = NEW_DATA; tags[0] = NEW_DATA; assertEquals(NEW_DATA, cell.getRowArray()[cell.getRowOffset()]); assertEquals(NEW_DATA, cell.getFamilyArray()[cell.getFamilyOffset()]); assertEquals(NEW_DATA, cell.getQualifierArray()[cell.getQualifierOffset()]); assertEquals(NEW_DATA, cell.getValueArray()[cell.getValueOffset()]); assertEquals(NEW_DATA, cell.getTagsArray()[cell.getTagsOffset()]); assertEquals(seqId, cell.getSequenceId()); }
@Test public void testTaggingAPutWrongQualifier() throws Exception { Put put = generateOriginalPut(); Cell initialCell = put.get(TABLE_FAMILY_BYTES, QUALIFIER).get(0); // Different qualifier, so no tags should be set MetaDataUtil.conditionallyAddTagsToPutCells(put, TABLE_FAMILY_BYTES, EMPTY_BYTE_ARRAY, mockBuilder, EMPTY_BYTE_ARRAY, DUMMY_TAGS); verify(mockBuilder, never()).setTags(Mockito.any(byte[].class)); Cell newCell = put.getFamilyCellMap().get(TABLE_FAMILY_BYTES).get(0); assertEquals(initialCell, newCell); assertNull(TagUtil.carryForwardTags(newCell)); }
@Test public void testSkipTaggingAPutDueToSameCellValue() throws Exception { Put put = generateOriginalPut(); Cell initialCell = put.get(TABLE_FAMILY_BYTES, QUALIFIER).get(0); // valueArray is set as the value stored in the cell, so we skip tagging the cell MetaDataUtil.conditionallyAddTagsToPutCells(put, TABLE_FAMILY_BYTES, QUALIFIER, mockBuilder, ORIGINAL_VALUE, DUMMY_TAGS); verify(mockBuilder, never()).setTags(Mockito.any(byte[].class)); Cell newCell = put.getFamilyCellMap().get(TABLE_FAMILY_BYTES).get(0); assertEquals(initialCell, newCell); assertNull(TagUtil.carryForwardTags(newCell)); }
.setTimestamp(cell.getTimestamp()) .setType(cell.getType()) .setTags(TagUtil.concatTags(tagArray, cell)) .build();
.setType(KeyValue.Type.Put.getCode()) .setValue(value) .setTags(tags) .build());