/* * Copyright (C) 2022-present ScyllaDB */ /* * SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0 */ #pragma once #include "schema/schema_fwd.hh" #include #include "dht/i_partitioner_fwd.hh" #include "readers/mutation_reader_fwd.hh" #include "readers/mutation_reader.hh" class reader_permit; class mutation; namespace query { class partition_slice; extern const dht::partition_range full_partition_range; } // Reader optimized for a single mutation. mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, mutation m, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no, bool reversed = false); // Reader optimized for a single mutation. mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, mutation m, const query::partition_slice& slice, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no); // All mutations should have the same schema. mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, utils::chunked_vector, const dht::partition_range& pr, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no); // All mutations should have the same schema. inline mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, utils::chunked_vector ms, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no) { if (ms.size() == 1) { return make_mutation_reader_from_mutations(std::move(schema), std::move(permit), std::move(ms.back()), fwd); } return make_mutation_reader_from_mutations(std::move(schema), std::move(permit), std::move(ms), query::full_partition_range, fwd); } // All mutations should have the same schema. mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, utils::chunked_vector ms, const dht::partition_range& pr, const query::partition_slice& slice, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no); // All mutations should have the same schema. inline mutation_reader make_mutation_reader_from_mutations( schema_ptr schema, reader_permit permit, utils::chunked_vector ms, const query::partition_slice& slice, streamed_mutation::forwarding fwd = streamed_mutation::forwarding::no) { if (ms.size() == 1) { return make_mutation_reader_from_mutations(std::move(schema), std::move(permit), std::move(ms.back()), slice, fwd); } return make_mutation_reader_from_mutations(std::move(schema), std::move(permit), std::move(ms), query::full_partition_range, slice, fwd); }