@Override public void put(Collection<Map.Entry<Cell, byte[]>> data, long ts) { List<Object[]> args = Lists.newArrayListWithCapacity(data.size()); for (Entry<Cell, byte[]> entry : data) { Cell cell = entry.getKey(); byte[] val = entry.getValue(); args.add(new Object[] { cell.getRowName(), cell.getColumnName(), ts, val }); } put(args); }
public static <T> NavigableMap<byte[], SortedMap<byte[], T>> breakCellsUpByRow(Iterable<Map.Entry<Cell, T>> map) { NavigableMap<byte[], SortedMap<byte[], T>> ret = Maps.newTreeMap(UnsignedBytes.lexicographicalComparator()); for (Map.Entry<Cell, T> e : map) { byte[] row = e.getKey().getRowName(); SortedMap<byte[], T> sortedMap = ret.computeIfAbsent(row, rowName -> Maps.newTreeMap(UnsignedBytes.lexicographicalComparator())); sortedMap.put(e.getKey().getColumnName(), e.getValue()); } return ret; }
@Override public Iterator<Map.Entry<ValueStreamValueRow, ValueStreamValueNamedColumnValue<?>>> getRowsColumnRange(Iterable<ValueStreamValueRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { ValueStreamValueRow row = ValueStreamValueRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); ValueStreamValueNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<SweepShardProgressRow, SweepShardProgressNamedColumnValue<?>>> getRowsColumnRange(Iterable<SweepShardProgressRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { SweepShardProgressRow row = SweepShardProgressRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); SweepShardProgressNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<ValueStreamMetadataRow, ValueStreamMetadataNamedColumnValue<?>>> getRowsColumnRange(Iterable<ValueStreamMetadataRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { ValueStreamMetadataRow row = ValueStreamMetadataRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); ValueStreamMetadataNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<BlobsRow, BlobsNamedColumnValue<?>>> getRowsColumnRange(Iterable<BlobsRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { BlobsRow row = BlobsRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); BlobsNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<BlobsSerializableRow, BlobsSerializableNamedColumnValue<?>>> getRowsColumnRange(Iterable<BlobsSerializableRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { BlobsSerializableRow row = BlobsSerializableRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); BlobsSerializableNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<MetadataRow, MetadataNamedColumnValue<?>>> getRowsColumnRange(Iterable<MetadataRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { MetadataRow row = MetadataRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); MetadataNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
private ArrayHandler cellsToOracleArray(Iterable<Cell> cells) { List<Object[]> oraRows = Lists.newArrayListWithCapacity(Iterables.size(cells)); for (Cell cell : cells) { oraRows.add(new Object[] { cell.getRowName(), cell.getColumnName(), null }); } return config.jdbcHandler().createStructArray( structArrayPrefix() + "CELL_TS", "" + structArrayPrefix() + "CELL_TS_TABLE", oraRows); }
@Override public Iterator<Map.Entry<SweepableCellsRow, SweepableCellsColumnValue>> getRowsColumnRange(Iterable<SweepableCellsRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { SweepableCellsRow row = SweepableCellsRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); SweepableCellsColumn col = SweepableCellsColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); com.palantir.atlasdb.keyvalue.api.StoredWriteReference val = SweepableCellsColumnValue.hydrateValue(e.getValue()); SweepableCellsColumnValue colValue = SweepableCellsColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<UserPhotosStreamIdxRow, UserPhotosStreamIdxColumnValue>> getRowsColumnRange(Iterable<UserPhotosStreamIdxRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { UserPhotosStreamIdxRow row = UserPhotosStreamIdxRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); UserPhotosStreamIdxColumn col = UserPhotosStreamIdxColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); Long val = UserPhotosStreamIdxColumnValue.hydrateValue(e.getValue()); UserPhotosStreamIdxColumnValue colValue = UserPhotosStreamIdxColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }
@Override public FullQuery getAllCellQuery(Cell cell, long ts, boolean includeValue) { String query = " /* GET_ALL_CELL (" + tableName + ") */ " + " SELECT m.row_name, m.col_name, m.ts" + (includeValue ? ", m.val " : " ") + " FROM " + prefixedTableName() + " m " + " WHERE m.row_name = ? " + " AND m.col_name = ? " + " AND m.ts < ? "; return new FullQuery(query).withArgs(cell.getRowName(), cell.getColumnName(), ts); }
private List<WriteInfo> generateHundredWrites(int startCol, long startTs) { List<WriteInfo> writeInfos = new ArrayList<>(); for (int i = 0; i < 100; i++) { writeInfos.add(WriteInfo.write(TABLE_CONS, Cell.create(DEFAULT_CELL.getRowName(), PtBytes.toBytes(startCol * 100 + i)), startTs)); } return writeInfos; } }
private Key getKey(Table table, Cell cell, long timestamp) { byte[] row = cell.getRowName(); byte[] col = cell.getColumnName(); Key nextKey = table.entries.ceilingKey(new Key(row, ArrayUtils.EMPTY_BYTE_ARRAY, Long.MIN_VALUE)); if (nextKey != null && nextKey.matchesRow(row)) { // Save memory by sharing rows. row = nextKey.row; } return new Key(row, col, timestamp); }
@Override public Iterator<Map.Entry<TwoColumnsRow, TwoColumnsNamedColumnValue<?>>> getRowsColumnRange(Iterable<TwoColumnsRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { TwoColumnsRow row = TwoColumnsRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); TwoColumnsNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<StreamTestStreamMetadataRow, StreamTestStreamMetadataNamedColumnValue<?>>> getRowsColumnRange(Iterable<StreamTestStreamMetadataRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { StreamTestStreamMetadataRow row = StreamTestStreamMetadataRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); StreamTestStreamMetadataNamedColumnValue<?> colValue = shortNameToHydrator.get(PtBytes.toString(e.getKey().getColumnName())).hydrateFromBytes(e.getValue()); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<StreamTestStreamHashAidxRow, StreamTestStreamHashAidxColumnValue>> getRowsColumnRange(Iterable<StreamTestStreamHashAidxRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { StreamTestStreamHashAidxRow row = StreamTestStreamHashAidxRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); StreamTestStreamHashAidxColumn col = StreamTestStreamHashAidxColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); Long val = StreamTestStreamHashAidxColumnValue.hydrateValue(e.getValue()); StreamTestStreamHashAidxColumnValue colValue = StreamTestStreamHashAidxColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<StreamTestWithHashStreamHashAidxRow, StreamTestWithHashStreamHashAidxColumnValue>> getRowsColumnRange(Iterable<StreamTestWithHashStreamHashAidxRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { StreamTestWithHashStreamHashAidxRow row = StreamTestWithHashStreamHashAidxRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); StreamTestWithHashStreamHashAidxColumn col = StreamTestWithHashStreamHashAidxColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); Long val = StreamTestWithHashStreamHashAidxColumnValue.hydrateValue(e.getValue()); StreamTestWithHashStreamHashAidxColumnValue colValue = StreamTestWithHashStreamHashAidxColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<Index1IdxRow, Index1IdxColumnValue>> getRowsColumnRange(Iterable<Index1IdxRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { Index1IdxRow row = Index1IdxRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); Index1IdxColumn col = Index1IdxColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); Long val = Index1IdxColumnValue.hydrateValue(e.getValue()); Index1IdxColumnValue colValue = Index1IdxColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }
@Override public Iterator<Map.Entry<Index3IdxRow, Index3IdxColumnValue>> getRowsColumnRange(Iterable<Index3IdxRow> rows, ColumnRangeSelection columnRangeSelection, int batchHint) { Iterator<Map.Entry<Cell, byte[]>> results = t.getRowsColumnRange(getTableRef(), Persistables.persistAll(rows), columnRangeSelection, batchHint); return Iterators.transform(results, e -> { Index3IdxRow row = Index3IdxRow.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getRowName()); Index3IdxColumn col = Index3IdxColumn.BYTES_HYDRATOR.hydrateFromBytes(e.getKey().getColumnName()); Long val = Index3IdxColumnValue.hydrateValue(e.getValue()); Index3IdxColumnValue colValue = Index3IdxColumnValue.of(col, val); return Maps.immutableEntry(row, colValue); }); }