mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-24 18:40:38 +00:00
This PR purpose is to handle schema integrity issues that can arise in races involving materialized views. The possibility of such integrity issues was found in #7420 , where a view schema was used for reading without it's _base_info member initialized resulting in a segfault. We handle this doing 3 things: 1. First guard against using an uninitialized base info - this will be considered as an internal error as it will indicate that there is a path in our code that creates a view schema to be used for reads or writes but is not initializing the base info. 2. We allow the base info to be initialized also from partially matching base (most likely a newer one that this used to create the view). 3. We fix the suspected path that create such a view schema to initialize it. (in migration manager) It is worth mentioning that this PR is a workaround to a probable design flaw in our materialized views which requires the base table's information to be retrieved in the first place instead of just being self contained. Refs #7420 Closes #7469 * github.com:scylladb/scylla: materialized views: add a base table reference if missing view info: support partial match between base and view for only reading from view. view info: guard against null dereference of the base info