In this commit we make use of splitted functions introduced before. Pattern is as follows: - in merge_tables_and_views we call some preparatory functions - in schema_applier::update we call non-yielding step - in schema_applier::post_commit we call cleanups and other finalizing async functions Additionally we introduce frozen_schema_diff because converting schema_ptr to global_schema_ptr triggers schema registration and with atomic changes we need to place registration only in commit phase. Schema freezing is the same method global_schema_ptr uses to transport schema across shards (via schema_registry cache).
52 lines
875 B
C++
52 lines
875 B
C++
/*
|
|
* Copyright (C) 2015-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
#include <seastar/core/sharded.hh>
|
|
|
|
namespace replica {
|
|
|
|
// replica/database.hh
|
|
class database;
|
|
class keyspace;
|
|
class table;
|
|
using column_family = table;
|
|
class memtable_list;
|
|
class keyspace_change;
|
|
}
|
|
|
|
|
|
// mutation.hh
|
|
class mutation;
|
|
class mutation_partition;
|
|
|
|
// schema/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;
|
|
}
|