protected static Holder build(UnfilteredRowIterator iterator, int initialRowCapacity) { return build(iterator, initialRowCapacity, true); }
private RowAndDeletionMergeIterator merge(Iterator<Row> rowIter, Iterator<RangeTombstone> deleteIter, ColumnFilter selection, boolean reversed, Holder current, Row staticRow) { return new RowAndDeletionMergeIterator(metadata, partitionKey(), current.deletionInfo.getPartitionDeletion(), selection, staticRow, reversed, current.stats, rowIter, deleteIter, canHaveShadowedData()); }
public UnfilteredRowIterator unfilteredIterator() { return unfilteredIterator(ColumnFilter.selection(columns()), Slices.ALL, false); }
public UnfilteredRowIterator unfilteredIterator(ColumnFilter selection, Slices slices, boolean reversed) { return unfilteredIterator(holder(), selection, slices, reversed); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), partitionLevelDeletion(), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) sb.append("\n ").append(staticRow().toString(metadata, true)); try (UnfilteredRowIterator iter = unfilteredIterator()) { while (iter.hasNext()) sb.append("\n ").append(iter.next().toString(metadata, true)); } return sb.toString(); }
public DeletionInfo deletionInfo() { return holder().deletionInfo; }
public UnfilteredRowIterator unfilteredIterator(Holder current, ColumnFilter selection, Slices slices, boolean reversed) { Row staticRow = staticRow(current, selection, false); if (slices.size() == 0) { DeletionTime partitionDeletion = current.deletionInfo.getPartitionDeletion(); return UnfilteredRowIterators.noRowsIterator(metadata, partitionKey(), staticRow, partitionDeletion, reversed); } return slices.size() == 1 ? sliceIterator(selection, slices.get(0), reversed, current, staticRow) : new SlicesIterator(selection, slices, reversed, current, staticRow); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("[%s.%s] key=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) sb.append("\n ").append(staticRow().toString(metadata)); for (Row row : this) sb.append("\n ").append(row.toString(metadata)); return sb.toString(); }
public Row getRow(Clustering clustering) { Row row = searchIterator(ColumnFilter.selection(columns()), false).next(clustering); // Note that for statics, this will never return null, this will return an empty row. However, // it's more consistent for this method to return null if we don't really have a static row. return row == null || (clustering == Clustering.STATIC_CLUSTERING && row.isEmpty()) ? null : row; }
/** * Returns an iterator that iterates over the rows of this update in clustering order. * <p> * Note that this might trigger a sorting of the update, and as such the update will not * be modifiable anymore after this call. * * @return an iterator over the rows of this update. */ @Override public Iterator<Row> iterator() { maybeBuild(); return super.iterator(); }
@Override public DecoratedKey partitionKey() { return allocator.ensureOnHeap().applyToPartitionKey(super.partitionKey()); }
public DeletionTime partitionLevelDeletion() { return deletionInfo().getPartitionDeletion(); }
@Override public Row getRow(Clustering clustering) { return allocator.ensureOnHeap().applyToRow(super.getRow(clustering)); }
@Override public Row lastRow() { return allocator.ensureOnHeap().applyToRow(super.lastRow()); }
private UnfilteredRowIterator sliceIterator(ColumnFilter selection, Slice slice, boolean reversed, Holder current, Row staticRow) { ClusteringBound start = slice.start() == ClusteringBound.BOTTOM ? null : slice.start(); ClusteringBound end = slice.end() == ClusteringBound.TOP ? null : slice.end(); Iterator<Row> rowIter = BTree.slice(current.tree, metadata.comparator, start, true, end, true, desc(reversed)); Iterator<RangeTombstone> deleteIter = current.deletionInfo.rangeIterator(slice, reversed); return merge(rowIter, deleteIter, selection, reversed, current, staticRow); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), partitionLevelDeletion(), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) sb.append("\n ").append(staticRow().toString(metadata, true)); try (UnfilteredRowIterator iter = unfilteredIterator()) { while (iter.hasNext()) sb.append("\n ").append(iter.next().toString(metadata, true)); } return sb.toString(); }
public Row staticRow() { return holder().staticRow; }
public UnfilteredRowIterator unfilteredIterator(Holder current, ColumnFilter selection, Slices slices, boolean reversed) { Row staticRow = staticRow(current, selection, false); if (slices.size() == 0) { DeletionTime partitionDeletion = current.deletionInfo.getPartitionDeletion(); return UnfilteredRowIterators.noRowsIterator(metadata, partitionKey(), staticRow, partitionDeletion, reversed); } return slices.size() == 1 ? sliceIterator(selection, slices.get(0), reversed, current, staticRow) : new SlicesIterator(selection, slices, reversed, current, staticRow); }
public Row getRow(Clustering clustering) { Row row = searchIterator(ColumnFilter.selection(columns()), false).next(clustering); // Note that for statics, this will never return null, this will return an empty row. However, // it's more consistent for this method to return null if we don't really have a static row. return row == null || (clustering == Clustering.STATIC_CLUSTERING && row.isEmpty()) ? null : row; }
public UnfilteredRowIterator unfilteredIterator(ColumnFilter selection, Slices slices, boolean reversed) { return unfilteredIterator(holder(), selection, slices, reversed); }