@Override public ConciseSet getBitMap(TblColRef col, Integer startId, Integer endId) { return slice.getColumnValueContainer(type.getColIndexByTblColRef(col)).getBitMap(startId,endId); }
@Override public int getMaxValueId(TblColRef col) { return slice.getColumnValueContainer(type.getColIndexByTblColRef(col)).getMaxValueId(); } }
public Slice(TableRecordInfoDigest digest, short shard, long timestamp, ColumnValueContainer[] containers) { this.info = digest; this.nColumns = digest.getColumnCount(); this.shard = shard; this.timestamp = timestamp; this.nRecords = containers[0].getSize(); this.containers = containers; assert nColumns == containers.length; for (int i = 0; i < nColumns; i++) { assert nRecords == containers[i].getSize(); } }
@Override public RawTableRecord next() { for (int col = 0; col < nColumns; col++) { containers[col].getValueAt(i, temp); rec.setValueBytes(col, temp); } i++; return rec; }
public Slice append(TableRecord rec) { if (rec.getShard() != shard) throw new IllegalStateException(); Slice doneSlice = null; if (isFull()) { doneSlice = doneSlice(); } if (nRecords == 0) { sliceTimestamp = increaseSliceTimestamp(rec.getTimestamp()); } nRecords++; for (int i = 0; i < nColumns; i++) { rec.getValueBytes(i, temp); containers[i].append(temp); } return doneSlice; }
private Slice doneSlice() { Slice r = null; if (nRecords > 0) { for (int i = 0; i < nColumns; i++) { containers[i].closeForChange(); } r = new Slice(info.getDigest(), shard, sliceTimestamp, containers); } // reset for next slice nRecords = 0; containers = new ColumnValueContainer[nColumns]; for (int i : info.getDescriptor().getBitmapColumns()) { containers[i] = new BitMapContainer(info.getDigest(), i); } for (int i : info.getDescriptor().getValueColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } for (int i : info.getDescriptor().getMetricsColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } return r; }
@Override public RawTableRecord next() { while (!resultBitMap.contains(i)) { i++; } for (int col = 0; col < nColumns; col++) { containers[col].getValueAt(i, temp); rec.setValueBytes(col, temp); } iteratedCount++; i++; return rec; }
public Slice makeSlice(TableRecordInfoDigest digest, List<TableRecord> records) { Preconditions.checkArgument(records != null && !records.isEmpty(), "records cannot be empty"); Preconditions.checkArgument(records.size() <= nRecordsCap, "batch count cannot exceed " + nRecordsCap); sliceTimestamp = increaseSliceTimestamp(records.get(0).getTimestamp()); ColumnValueContainer[] containers = new ColumnValueContainer[nColumns]; for (int i : desc.getValueColumns()) { containers[i] = new CompressedValueContainer(digest, i, nRecordsCap); } for (int i : desc.getMetricsColumns()) { containers[i] = new CompressedValueContainer(digest, i, nRecordsCap); } for (TableRecord record : records) { for (int i = 0; i < nColumns; i++) { record.getValueBytes(i, temp); containers[i].append(temp); } } return new Slice(digest, shard, sliceTimestamp, containers); }
private Slice doneSlice() { Slice r = null; if (nRecords > 0) { for (int i = 0; i < nColumns; i++) { containers[i].closeForChange(); } r = new Slice(info.getDigest(), shard, sliceTimestamp, containers); } // reset for next slice nRecords = 0; containers = new ColumnValueContainer[nColumns]; // for (int i : info.getDescriptor().getBitmapColumns()) { // containers[i] = new CompressedValueContainer(info.getDigest(), i, // nRecordsCap); // } for (int i : info.getDescriptor().getValueColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } for (int i : info.getDescriptor().getMetricsColumns()) { containers[i] = new CompressedValueContainer(info.getDigest(), i, nRecordsCap); } return r; }
@Override public RawTableRecord next() { for (int col = 0; col < nColumns; col++) { containers[col].getValueAt(i, temp); rec.setValueBytes(col, temp); } i++; return rec; }
public Slice append(TableRecord rec) { if (rec.getShard() != shard) throw new IllegalStateException(); Slice doneSlice = null; if (isFull()) { doneSlice = doneSlice(); } if (nRecords == 0) { sliceTimestamp = increaseSliceTimestamp(rec.getTimestamp()); } nRecords++; for (int i = 0; i < nColumns; i++) { rec.getValueBytes(i, temp); containers[i].append(temp); } return doneSlice; }
public Slice(TableRecordInfoDigest digest, short shard, long timestamp, ColumnValueContainer[] containers) { this.info = digest; this.nColumns = digest.getColumnCount(); this.shard = shard; this.timestamp = timestamp; this.nRecords = containers[0].getSize(); this.containers = containers; assert nColumns == containers.length; for (int i = 0; i < nColumns; i++) { assert nRecords == containers[i].getSize(); } }
@Override public RawTableRecord next() { while (!resultBitMap.contains(i)) { i++; } for (int col = 0; col < nColumns; col++) { containers[col].getValueAt(i, temp); rec.setValueBytes(col, temp); } iteratedCount++; i++; return rec; }