Skip to content

Commit 79ec50d

Browse files
authored
migration(issue-views): Make groupsearchview.position nullable (#87258)
This PR makes the groupsearchview.position column nullable. This is the first step to deleting the column entirely, since it's being superseded by the groupsearchviewstarred.position column. The next steps after merging this are: 1. Delete all usages of this column — Besides tests, there are already no more places where we are filtering based on the position, but we need to remove the position from any newly created entries. 2. Add migration to safe delete the column w/ pending deletion_action=DeletionAction.MOVE_TO_PENDING 3. Add migration to fully delete the column ^ If these steps are incorrect, please let me know. The migration docs seem to be a little unclear about this.
1 parent ee04fd0 commit 79ec50d

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

migrations_lockfile.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ remote_subscriptions: 0003_drop_remote_subscription
1717

1818
replays: 0004_index_together
1919

20-
sentry: 0842_create_organization_member_invite_table
20+
sentry: 0843_make_groupsearchview_postition_nullable_for_deletion
2121

2222
social_auth: 0002_default_auto_field
2323

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Generated by Django 5.1.7 on 2025-03-17 22:56
2+
3+
from django.db import migrations, models
4+
5+
from sentry.new_migrations.migrations import CheckedMigration
6+
7+
8+
class Migration(CheckedMigration):
9+
# This flag is used to mark that a migration shouldn't be automatically run in production.
10+
# This should only be used for operations where it's safe to run the migration after your
11+
# code has deployed. So this should not be used for most operations that alter the schema
12+
# of a table.
13+
# Here are some things that make sense to mark as post deployment:
14+
# - Large data migrations. Typically we want these to be run manually so that they can be
15+
# monitored and not block the deploy for a long period of time while they run.
16+
# - Adding indexes to large tables. Since this can take a long time, we'd generally prefer to
17+
# run this outside deployments so that we don't block them. Note that while adding an index
18+
# is a schema change, it's completely safe to run the operation after the code has deployed.
19+
# Once deployed, run these manually via: https://develop.sentry.dev/database-migrations/#migration-deployment
20+
21+
is_post_deployment = False
22+
23+
dependencies = [
24+
("sentry", "0842_create_organization_member_invite_table"),
25+
]
26+
27+
operations = [
28+
migrations.AlterField(
29+
model_name="groupsearchview",
30+
name="position",
31+
field=models.PositiveSmallIntegerField(null=True),
32+
),
33+
]

src/sentry/models/groupsearchview.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class GroupSearchView(DefaultFieldsModelExisting):
6262
query_sort = models.CharField(
6363
max_length=16, default=SortOptions.DATE, choices=SortOptions.as_choices()
6464
)
65-
position = models.PositiveSmallIntegerField()
65+
position = models.PositiveSmallIntegerField(null=True)
6666

6767
# Projects = [] maps to "My Projects" (This is so when a project is deleted, it correctly defaults to "My Projects")
6868
projects = models.ManyToManyField("sentry.Project", through="sentry.GroupSearchViewProject")

0 commit comments

Comments
 (0)