/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.cassandra.db.rows;

import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.db.*;

Interface that allows to act on the result of merging multiple rows. More precisely, given N rows and the result of merging them, one can call Rows.diff(RowDiffListener, Row, Row...) with a RowDiffListener and that listener will be informed for each input row of the diff between that input and merge row.
/** * Interface that allows to act on the result of merging multiple rows. * * More precisely, given N rows and the result of merging them, one can call {@link Rows#diff(RowDiffListener, Row, Row...)} * with a {@code RowDiffListener} and that listener will be informed for each input row of the diff between * that input and merge row. */
public interface RowDiffListener {
Called for the row primary key liveness info of input i.
Params:
  • i – the input row from which original is from.
  • clustering – the clustering for the row that is merged.
  • merged – the primary key liveness info of the merged row. Will be null if input i had a LivenessInfo, but the merged result don't (i.e. the original info has been shadowed/deleted).
  • original – the primary key liveness info of input i. May be null if input i has not primary key liveness info (i.e. it has LivenessInfo.NONE) but the merged result has.
/** * Called for the row primary key liveness info of input {@code i}. * * @param i the input row from which {@code original} is from. * @param clustering the clustering for the row that is merged. * @param merged the primary key liveness info of the merged row. Will be {@code null} if input {@code i} had * a {@code LivenessInfo}, but the merged result don't (i.e. the original info has been shadowed/deleted). * @param original the primary key liveness info of input {@code i}. May be {@code null} if input {@code i} * has not primary key liveness info (i.e. it has {@code LivenessInfo.NONE}) but the merged result has. */
public void onPrimaryKeyLivenessInfo(int i, Clustering clustering, LivenessInfo merged, LivenessInfo original);
Called for the row deletion of input i.
Params:
  • i – the input row from which original is from.
  • clustering – the clustering for the row that is merged.
  • merged – the deletion of the merged row. Will be null if input i had deletion but the merged result doesn't (i.e. the deletion has been shadowed).
  • original – the deletion of input i. May be null if input i had no deletion but the merged row has.
/** * Called for the row deletion of input {@code i}. * * @param i the input row from which {@code original} is from. * @param clustering the clustering for the row that is merged. * @param merged the deletion of the merged row. Will be {@code null} if input {@code i} had deletion * but the merged result doesn't (i.e. the deletion has been shadowed). * @param original the deletion of input {@code i}. May be {@code null} if input {@code i} had no deletion but the merged row has. */
public void onDeletion(int i, Clustering clustering, Row.Deletion merged, Row.Deletion original);
Called for every (non-live) complex deletion of any complex column present in either the merged row of input i.
Params:
  • i – the input row from which original is from.
  • clustering – the clustering for the row that is merged.
  • column – the column for which this is a complex deletion of.
  • merged – the complex deletion of the merged row. Will be null if input i had a complex deletion for column but the merged result doesn't (i.e. the deletion has been shadowed).
  • original – the complex deletion of input i for column column. May be null if input i had no complex deletion but the merged row has.
/** * Called for every (non-live) complex deletion of any complex column present in either the merged row of input {@code i}. * * @param i the input row from which {@code original} is from. * @param clustering the clustering for the row that is merged. * @param column the column for which this is a complex deletion of. * @param merged the complex deletion of the merged row. Will be {@code null} if input {@code i} had a complex deletion * for {@code column} but the merged result doesn't (i.e. the deletion has been shadowed). * @param original the complex deletion of input {@code i} for column {@code column}. May be {@code null} if input {@code i} * had no complex deletion but the merged row has. */
public void onComplexDeletion(int i, Clustering clustering, ColumnDefinition column, DeletionTime merged, DeletionTime original);
Called for any cell that is either in the merged row or in input i.
Params:
  • i – the input row from which original is from.
  • clustering – the clustering for the row that is merged.
  • merged – the cell of the merged row. Will be null if input i had a cell but that cell is no present in the merged result (it has been deleted/shadowed).
  • original – the cell of input i. May be null if input i had cell corresponding to merged.
/** * Called for any cell that is either in the merged row or in input {@code i}. * * @param i the input row from which {@code original} is from. * @param clustering the clustering for the row that is merged. * @param merged the cell of the merged row. Will be {@code null} if input {@code i} had a cell but that cell is no present * in the merged result (it has been deleted/shadowed). * @param original the cell of input {@code i}. May be {@code null} if input {@code i} had cell corresponding to {@code merged}. */
public void onCell(int i, Clustering clustering, Cell merged, Cell original); }