mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-07-23 02:28:21 -04:00
ca16958ef0
# Description of Changes This commit adds special handling in automigrations to accept a broad set of schema- and layout-altering automigrations on event tables, including changes that we'd reject for non-event tables like removing or reordering columns, or layout-incompatibly changing the types of existing columns. This is due to a change we want to make to the ControlDB schema, where we have a product type which is used both as a table type, and as the column type of an event table, and we want to add an element to that product type. I've added a simple smoketest of the new behavior, `automigrate_reschema_event_table_arbitrarily`. Note that I have not tested commitlog replay of a database which has undergone one of these migrations, which has been a common place that bugs have appeared in similar changes in the past. I have done a pretty lazy job with the migration plan formatter for the new step, just printing the name of the event table which is changing, not any information about the specific changes or the columns. This is in an effort to save time, as we'd like to release the ControlDB change blocked by this. # API and ABI breaking changes N/a # Expected complexity level and risk 3 at least: new categories of automigrations have a high risk to introduce commitlog replay bugs, and it's also possible I have misunderstood or mis-remembered some of the safety invariants of the `table` crate. # Testing - [x] New (minimal) smoketest. - [x] Manually tested replay: - Copied event table from the before version new smoketest into module-test. - Published module-test. - Replaced event table with after version, published, observed and approved client-breaking automigration. - Restarted SpacetimeDB. - Called the procedure `return_value` in the migrated module to force commitlog replay. - [ ] Test the ControlDB change in staging, incl. restarting the control node. --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: joshua-spacetime <josh@clockworklabs.io>
⚠️ Internal Crate ⚠️
This crate is intended for internal use only. It is not stable and may change without notice.