From 9e98b51aaa401fd1960367fb256aba54f145adb2 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Mon, 14 Oct 2019 17:14:19 +0200 Subject: [PATCH] view: fix view_info select statement for local indexes Calculating the select statement for given view_info structure used to work fine, but once local indexes were introduced, a subtle bug appeared: the legacy token column does not exist in local indexes and a valid clustering key column was omitted instead. That results in potentially incorrect partition slices being used later in read-before-write. There's a long term plan for removing select_statement from view info altogether, but nonetheless the bug needs to be fixed first. --- db/view/view.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); }