Memtables are a replica-side entity, and so are moved to the replica module and namespace. Memtables are also used outside the replica, in two places: - in some virtual tables; this is also in some way inside the replica, (virtual readers are installed at the replica level, not the cooordinator), so I don't consider it a layering violation - in many sstable unit tests, as a convenient way to create sstables with known input. This is a layering violation. We could make memtables their own module, but I think this is wrong. Memtables are deeply tied into replica memory management, and trying to make them a low-level primitive (at a lower level than sstables) will be difficult. Not least because memtables use sstables. Instead, we should have a memtable-like thing that doesn't support merging and doesn't have all other funky memtable stuff, and instead replace the uses of memtables in sstable tests with some kind of make_flat_mutation_reader_from_unsorted_mutations() that does the sorting that is the reason for the use of memtables in tests (and live with the layering violation meanwhile). Test: unit (dev) Closes #10120
48 lines
751 B
C++
48 lines
751 B
C++
/*
|
|
* Copyright (C) 2015-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
namespace replica {
|
|
|
|
// replica/database.hh
|
|
class database;
|
|
class keyspace;
|
|
class table;
|
|
using column_family = table;
|
|
class memtable_list;
|
|
|
|
}
|
|
|
|
|
|
// mutation.hh
|
|
class mutation;
|
|
class mutation_partition;
|
|
|
|
// schema.hh
|
|
class schema;
|
|
class column_definition;
|
|
class column_mapping;
|
|
|
|
// schema_mutations.hh
|
|
class schema_mutations;
|
|
|
|
// keys.hh
|
|
class exploded_clustering_prefix;
|
|
class partition_key;
|
|
class partition_key_view;
|
|
class clustering_key_prefix;
|
|
class clustering_key_prefix_view;
|
|
using clustering_key = clustering_key_prefix;
|
|
using clustering_key_view = clustering_key_prefix_view;
|
|
|
|
// memtable.hh
|
|
namespace replica {
|
|
class memtable;
|
|
}
|