From 8a728ce618e2b87f2d6c5074f4ca751a79eaa2bd Mon Sep 17 00:00:00 2001 From: Calle Wilund Date: Mon, 18 May 2020 09:15:17 +0000 Subject: [PATCH] cdc: Add get_base_table helper --- cdc/log.cc | 15 +++++++++++++-- cdc/log.hh | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cdc/log.cc b/cdc/log.cc index a92a376655..71cd4df9e5 100644 --- a/cdc/log.cc +++ b/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()); diff --git a/cdc/log.hh b/cdc/log.hh index 37ad8d05cb..d84b18f348 100644 --- a/cdc/log.hh +++ b/cdc/log.hh @@ -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);