diff --git a/snuba/snuba_migrations/events/0025_add_sourcemapped_subcolumn_exception_frames.py b/snuba/snuba_migrations/events/0025_add_sourcemapped_subcolumn_exception_frames.py new file mode 100644 index 00000000000..d9a583e14fe --- /dev/null +++ b/snuba/snuba_migrations/events/0025_add_sourcemapped_subcolumn_exception_frames.py @@ -0,0 +1,48 @@ +from typing import Sequence + +from snuba.clickhouse.columns import Array, Column, UInt +from snuba.clusters.storage_sets import StorageSetKey +from snuba.migrations import migration, operations +from snuba.migrations.columns import MigrationModifiers as Modifiers +from snuba.migrations.operations import OperationTarget + + +class Migration(migration.ClickhouseNodeMigration): + blocking = False + + storage_set_key = StorageSetKey.EVENTS + + local_table_name = "errors_local" + dist_table_name = "errors_dist" + + def forwards_ops(self) -> Sequence[operations.SqlOperation]: + return [ + operations.AddColumn( + storage_set=self.storage_set_key, + table_name=table_name, + column=Column( + "exception_frames.sourcemapped", + Array(UInt(8, Modifiers(nullable=True))), + ), + after="exception_frames.stack_level", + target=target, + ) + for table_name, target in [ + (self.local_table_name, OperationTarget.LOCAL), + (self.dist_table_name, OperationTarget.DISTRIBUTED), + ] + ] + + def backwards_ops(self) -> Sequence[operations.SqlOperation]: + return [ + operations.DropColumn( + storage_set=self.storage_set_key, + table_name=table_name, + column_name="exception_frames.sourcemapped", + target=target, + ) + for table_name, target in [ + (self.dist_table_name, OperationTarget.DISTRIBUTED), + (self.local_table_name, OperationTarget.LOCAL), + ] + ]