index/secondary_index_manager: Add virtual columns to MV

Virtual columns are MV-specific columns that contribute to the
liveness of view rows. However, we were not adding those columns when
creating an index's underlying MV, causing indexes to miss base rows.

Fixes #4144
Branches: master, branch-3.0

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
This commit is contained in:
Duarte Nunes
2019-01-27 22:24:04 +00:00
parent ee0bb0aa94
commit aa476cd6c9

View File

@@ -134,6 +134,11 @@ view_ptr secondary_index_manager::create_view_for_index(const index_metadata& im
}
builder.with_column(col.name(), col.type, column_kind::clustering_key);
}
if (index_target->is_primary_key()) {
for (auto& def : schema->regular_columns()) {
db::view::create_virtual_column(builder, def.name(), def.type);
}
}
const sstring where_clause = format("{} IS NOT NULL", cql3::util::maybe_quote(index_target_name));
builder.with_view_info(*schema, false, where_clause);
return view_ptr{builder.build()};