cdc: Add get_base_table helper

This commit is contained in:
Calle Wilund
2020-05-18 09:15:17 +00:00
parent 8f462e8606
commit 8a728ce618
2 changed files with 16 additions and 2 deletions

View File

@@ -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());

View File

@@ -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);