| # Schema Change — Review Guide |
| |
| ## Strategy Selection |
| |
| Three strategies: `LinkedSchemaChange` (metadata-only), `VSchemaChangeDirectly` (rewrite, no sort), `VLocalSchemaChangeWithSorting` (full rewrite with sort). |
| |
| - [ ] Request classification flows through the existing parse-and-dispatch path? |
| |
| ## Lock Order |
| |
| Required: `base_tablet push_lock → new_tablet push_lock → base_tablet header_lock → new_tablet header_lock` |
| |
| - [ ] Four-level order preserved? |
| |
| ## MoW Delete Bitmap Flow |
| |
| Staged flow: (1) dual-write rowsets skip immediate bitmap calc → (2) converted rowsets catch up bitmaps → (3) new publish blocked during incremental catch-up → (4) state switches to `TABLET_RUNNING`. |
| |
| - [ ] Four-step ordering preserved exactly? |
| - [ ] Base and cumulative compaction locks held before MoW delete bitmap calculation? |
| |
| ## Dropped-Column Trap |
| |
| - [ ] `return_columns` derived before dropped columns merged? (Dropped columns needed for delete-predicate evaluation) |
| - [ ] `ignore_schema_change_check` stays an explicit escape hatch, not normal production behavior? |