public class RowIteratorMergeListener<E extends Endpoints<E>> extends java.lang.Object implements UnfilteredRowIterators.MergeListener
NOOP
Constructor and Description |
---|
RowIteratorMergeListener(DecoratedKey partitionKey,
RegularAndStaticColumns columns,
boolean isReversed,
ReplicaPlan.ForRead<E> readPlan,
ReadCommand command,
ReadRepair readRepair) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
void |
onMergedPartitionLevelDeletion(DeletionTime mergedDeletion,
DeletionTime[] versions)
Called once for the merged partition.
|
void |
onMergedRangeTombstoneMarkers(RangeTombstoneMarker merged,
RangeTombstoneMarker[] versions)
Called once for every range tombstone marker participating in the merge.
|
Row |
onMergedRows(Row merged,
Row[] versions)
Called once for every row participating in the merge.
|
public RowIteratorMergeListener(DecoratedKey partitionKey, RegularAndStaticColumns columns, boolean isReversed, ReplicaPlan.ForRead<E> readPlan, ReadCommand command, ReadRepair readRepair)
public void onMergedPartitionLevelDeletion(DeletionTime mergedDeletion, DeletionTime[] versions)
UnfilteredRowIterators.MergeListener
onMergedPartitionLevelDeletion
in interface UnfilteredRowIterators.MergeListener
mergedDeletion
- the partition level deletion for the merged partition. Implementors can test if the
merged partition actually has a partition level deletion or not by calling mergedDeletion.isLive()
.versions
- the partition level deletion for the sources of the merge. Elements of the array will never
be null, but be "live".public Row onMergedRows(Row merged, Row[] versions)
UnfilteredRowIterators.MergeListener
Note that this is called for every clustering where at least one of the source merged has a row. In particular, this may be called in cases where there is no row in the merged output (if a source has a row that is shadowed by another source range tombstone or partition level deletion).
onMergedRows
in interface UnfilteredRowIterators.MergeListener
merged
- the result of the merge. This cannot be null
(so that listener can always access the
clustering from this safely)but can be empty, in which case this is a placeholder for when at least one
source has a row, but that row is shadowed in the merged output.versions
- for each source, the row in that source corresponding to merged
. This can be
null
for some sources if the source has not such row.null
). Most implementations should simply
return merged
, but this allows some implementations to impact the merge result if necessary. If this
returns either null
or an empty row, then the row is skipped from the merge result. If this returns a
non null
result, then the returned row must have the same clustering than merged
.public void onMergedRangeTombstoneMarkers(RangeTombstoneMarker merged, RangeTombstoneMarker[] versions)
UnfilteredRowIterators.MergeListener
Note that this is called for every "clustering position" where at least one of the source merged has a range tombstone marker.
onMergedRangeTombstoneMarkers
in interface UnfilteredRowIterators.MergeListener
merged
- the marker in the merged output. This can be null
if there is no such marker, which
means that at least one source has a marker in versions
but the merged out has nothing corresponding
(this basically mean the merged output has a currently open deletion that shadows whatever marker the source
had).versions
- the marker for each source merged. This can be null
for some source if that source
has not such marker.public void close()
close
in interface UnfilteredRowIterators.MergeListener
Copyright © 2009-2020 The Apache Software Foundation