The flat_mutation_reader files were conflated and contained multiple readers, which were not strictly necessary. Splitting optimizes both iterative compilation times, as touching rarely used readers doesn't recompile large chunks of codebase. Total compilation times are also improved, as the size of flat_mutation_reader.hh and flat_mutation_reader_v2.hh have been reduced and those files are included by many file in the codebase. With changes real 29m14.051s user 168m39.071s sys 5m13.443s Without changes real 30m36.203s user 175m43.354s sys 5m26.376s Closes #10194
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
/*
|
|
* Copyright (C) 2018-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "mutation_reader.hh"
|
|
#include <seastar/core/future.hh>
|
|
#include "readers/flat_mutation_reader.hh"
|
|
|
|
/*
|
|
* A helper class that wraps another flat_mutation_reader
|
|
* and splits range tombstones across rows before pushing them
|
|
* to the buffer.
|
|
*
|
|
* Used for bringing mutation stream read from old SSTables formats (ka/la)
|
|
* to the uniformed representation with that of a new format (mc).
|
|
*/
|
|
class normalizing_reader : public flat_mutation_reader::impl {
|
|
flat_mutation_reader _rd;
|
|
range_tombstone_stream _range_tombstones;
|
|
public:
|
|
normalizing_reader(flat_mutation_reader rd);
|
|
|
|
virtual future<> fill_buffer() override;
|
|
|
|
virtual future<> next_partition() override;
|
|
|
|
virtual future<> fast_forward_to(const dht::partition_range& pr) override;
|
|
|
|
virtual future<> fast_forward_to(position_range pr) override;
|
|
|
|
virtual future<> close() noexcept override;
|
|
};
|
|
|
|
// Creates a mutation_reader wrapper which creates a new stream of mutations
|
|
// with some mutations removed from the original stream.
|
|
// MutationFilter is a callable which decides which mutations are dropped. It
|
|
// accepts mutation const& and returns a bool. The mutation stays in the
|
|
// stream if and only if the filter returns true.
|
|
flat_mutation_reader make_normalizing_reader(flat_mutation_reader rd);
|
|
|