mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-13 03:12:13 +00:00
cdc: Add get_base_table helper
This commit is contained in:
15
cdc/log.cc
15
cdc/log.cc
@@ -352,13 +352,24 @@ static bool is_log_name(const std::string_view& table_name) {
|
||||
}
|
||||
|
||||
bool is_log_for_some_table(const sstring& ks_name, const std::string_view& table_name) {
|
||||
if (!is_log_name(table_name)) {
|
||||
auto base_schema = get_base_table(service::get_local_storage_proxy().get_db().local(), ks_name, table_name);
|
||||
if (!base_schema) {
|
||||
return false;
|
||||
}
|
||||
const auto base_schema = local_db.find_schema(ks_name, base_name(table_name));
|
||||
return base_schema->cdc_options().enabled();
|
||||
}
|
||||
|
||||
schema_ptr get_base_table(const database& db, const schema& s) {
|
||||
return get_base_table(db, s.ks_name(), s.cf_name());
|
||||
}
|
||||
|
||||
schema_ptr get_base_table(const database& db, sstring_view ks_name,std::string_view table_name) {
|
||||
if (!is_log_name(table_name)) {
|
||||
return nullptr;
|
||||
}
|
||||
return db.find_schema(sstring(ks_name), base_name(table_name));
|
||||
}
|
||||
|
||||
seastar::sstring base_name(std::string_view log_name) {
|
||||
assert(is_log_name(log_name));
|
||||
return sstring(log_name.data(), log_name.size() - cdc_log_suffix.size());
|
||||
|
||||
@@ -130,6 +130,9 @@ enum class operation : int8_t {
|
||||
|
||||
bool is_log_for_some_table(const sstring& ks_name, const std::string_view& table_name);
|
||||
|
||||
schema_ptr get_base_table(const database&, const schema&);
|
||||
schema_ptr get_base_table(const database&, sstring_view, std::string_view);
|
||||
|
||||
seastar::sstring base_name(std::string_view log_name);
|
||||
seastar::sstring log_name(std::string_view table_name);
|
||||
seastar::sstring log_data_column_name(std::string_view column_name);
|
||||
|
||||
Reference in New Issue
Block a user