mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-22 07:42:16 +00:00
After scylladb/scylladb#28929 `task_uuid_generator` became necassary dependency of `view_building_task_mutation_builder`. However to create the generator we need `view_building_state`, which in some parts of the code (schema_tables.cc, migration_manager.cc) requires remote proxy to be obtained. But sometimes we need the mutation builder to just remove some view building task. In those cases, we don't need the uuid generator and the remote proxy requirement is not necassary.
99 lines
3.7 KiB
C++
99 lines
3.7 KiB
C++
/*
|
|
* Copyright (C) 2025-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.1
|
|
*/
|
|
|
|
#include "db/view/view_building_task_mutation_builder.hh"
|
|
#include "keys/keys.hh"
|
|
|
|
namespace db {
|
|
|
|
namespace view {
|
|
|
|
utils::UUID view_building_task_mutation_builder::new_id() {
|
|
if (_uuid_gen) {
|
|
return (*_uuid_gen)();
|
|
} else {
|
|
utils::on_internal_error("view_building_task_mutation_builder: cannot generate new id without uuid generator");
|
|
}
|
|
}
|
|
|
|
clustering_key view_building_task_mutation_builder::get_ck(utils::UUID id) {
|
|
return clustering_key::from_single_value(*_s, data_value(id).serialize_nonnull());
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_type(utils::UUID id, db::view::view_building_task::task_type type) {
|
|
_m.set_clustered_cell(get_ck(id), "type", data_value(task_type_to_sstring(type)), _ts);
|
|
return *this;
|
|
}
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_aborted(utils::UUID id, bool aborted) {
|
|
_m.set_clustered_cell(get_ck(id), "aborted", data_value(aborted), _ts);
|
|
return *this;
|
|
}
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_base_id(utils::UUID id, table_id base_id) {
|
|
_m.set_clustered_cell(get_ck(id), "base_id", data_value(base_id.uuid()), _ts);
|
|
return *this;
|
|
}
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_view_id(utils::UUID id, table_id view_id) {
|
|
_m.set_clustered_cell(get_ck(id), "view_id", data_value(view_id.uuid()), _ts);
|
|
return *this;
|
|
}
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_last_token(utils::UUID id, dht::token last_token) {
|
|
_m.set_clustered_cell(get_ck(id), "last_token", data_value(dht::token::to_int64(last_token)), _ts);
|
|
return *this;
|
|
}
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_replica(utils::UUID id, const locator::tablet_replica& replica) {
|
|
_m.set_clustered_cell(get_ck(id), "host_id", data_value(replica.host.uuid()), _ts);
|
|
_m.set_clustered_cell(get_ck(id), "shard", data_value(int32_t(replica.shard)), _ts);
|
|
return *this;
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::del_task(utils::UUID id) {
|
|
_m.partition().apply_delete(*_s, clustering_key_prefix::from_single_value(*_s, data_value(id).serialize_nonnull()), tombstone{_ts, gc_clock::now()});
|
|
return *this;
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::del_tasks_before(utils::UUID id) {
|
|
auto ck = get_ck(id);
|
|
range_tombstone rt(
|
|
position_in_partition::before_all_clustered_rows(),
|
|
position_in_partition_view(ck, bound_weight::before_all_prefixed),
|
|
tombstone{_ts, gc_clock::now()});
|
|
_m.partition().apply_row_tombstone(*_s, std::move(rt));
|
|
return *this;
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::del_all_tasks() {
|
|
range_tombstone rt(
|
|
position_in_partition::before_all_clustered_rows(),
|
|
position_in_partition::after_all_clustered_rows(),
|
|
tombstone{_ts, gc_clock::now()});
|
|
_m.partition().apply_row_tombstone(*_s, std::move(rt));
|
|
return *this;
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_min_task_id(utils::UUID id) {
|
|
_m.set_static_cell("min_task_id", data_value(id), _ts);
|
|
return *this;
|
|
}
|
|
|
|
view_building_task_mutation_builder& view_building_task_mutation_builder::set_task(db::view::view_building_task& task) {
|
|
auto id = task.id;
|
|
set_type(id, task.type);
|
|
set_aborted(id, task.aborted);
|
|
set_base_id(id, task.base_id);
|
|
if (task.view_id) {
|
|
set_view_id(id, *task.view_id);
|
|
}
|
|
set_last_token(id, task.last_token);
|
|
set_replica(id, task.replica);
|
|
return *this;
|
|
}
|
|
|
|
}
|
|
|
|
}
|