diff --git a/db/view/view.cc b/db/view/view.cc index c8d6ab8b28..eb681dd63b 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -86,7 +86,7 @@ cql3::statements::select_statement& view_info::select_statement() const { // FIXME(sarna): legacy code, should be removed after "computed_columns" feature is guaranteed // to be available on every node. Then, we won't need to check if this view is backing a secondary index. const column_definition* legacy_token_column = nullptr; - if (service::get_local_storage_service().db().local().find_column_family(base_id()).get_index_manager().is_index(_schema)) { + if (service::get_local_storage_service().db().local().find_column_family(base_id()).get_index_manager().is_global_index(_schema)) { if (!_schema.clustering_key_columns().empty()) { legacy_token_column = &_schema.clustering_key_columns().front(); } diff --git a/index/secondary_index_manager.cc b/index/secondary_index_manager.cc index 5a435ef536..1b7a0dd45d 100644 --- a/index/secondary_index_manager.cc +++ b/index/secondary_index_manager.cc @@ -181,4 +181,10 @@ bool secondary_index_manager::is_index(const schema& s) const { }); } +bool secondary_index_manager::is_global_index(const schema& s) const { + return boost::algorithm::any_of(_indices | boost::adaptors::map_values, [&s] (const index& i) { + return !i.metadata().local() && s.cf_name() == index_table_name(i.metadata().name()); + }); +} + } diff --git a/index/secondary_index_manager.hh b/index/secondary_index_manager.hh index f17cf05721..9c1c20c05c 100644 --- a/index/secondary_index_manager.hh +++ b/index/secondary_index_manager.hh @@ -77,6 +77,7 @@ public: std::vector list_indexes() const; bool is_index(view_ptr) const; bool is_index(const schema& s) const; + bool is_global_index(const schema& s) const; private: void add_index(const index_metadata& im); };