-
Notifications
You must be signed in to change notification settings - Fork 484
fix: remove unnecessary index #418
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,31 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """Remove unique_text_version_user constraint | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Revision ID: 20250621130556_bcbe001128d1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Revises: 20250310201406_97a740b07a50 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Create Date: 2025-06-21 13:05:56.361347 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from typing import Sequence, Union | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from alembic import op | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # revision identifiers, used by Alembic. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| revision: str = "20250621130556_bcbe001128d1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| down_revision: Union[str, None] = "20250310201406_97a740b07a50" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| branch_labels: Union[str, Sequence[str], None] = None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| depends_on: Union[str, Sequence[str], None] = None | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def upgrade() -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ### commands auto generated by Alembic - please adjust! ### | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| op.drop_constraint("unique_text_version_user", "prompts", type_="unique") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ### end Alembic commands ### | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def downgrade() -> None: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ### commands auto generated by Alembic - please adjust! ### | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| op.create_unique_constraint( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "unique_text_version_user", "prompts", ["text", "version", "created_by"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ### end Alembic commands ### | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+26
to
+31
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Downgrade can hard-fail once duplicates exist After the unique constraint is removed, rows with the same Mitigate by:
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
+ # Fail early if duplicates would break the unique constraint.
+ # (Example for Postgres; adapt to other engines.)
+ op.execute(
+ """
+ DO $$
+ BEGIN
+ IF EXISTS (
+ SELECT (text, version, created_by)
+ FROM prompts
+ GROUP BY text, version, created_by
+ HAVING COUNT(*) > 1
+ ) THEN
+ RAISE EXCEPTION
+ 'Downgrade aborted – duplicates would violate unique_text_version_user';
+ END IF;
+ END;
+ $$;
+ """
+ )📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Add
schema=kwarg to ensure cross-schema safetyop.drop_constraint()defaults to the current search path.If the
promptstable lives in a dedicated schema (e.g.,core.prompts), the call will silently fail at runtime. Pass the explicit schema to make the migration deterministic across all envs.🏁 Script executed:
Length of output: 1972
🏁 Script executed:
Length of output: 251
🏁 Script executed:
Length of output: 3728
Add explicit
schema=argument toop.drop_constraintfor deterministic migrationsWithout an explicit schema,
op.drop_constraint()relies on the current search path and can silently fail ifpromptsisn’t in the default schema.Locations to update:
Suggested diff:
📝 Committable suggestion
🤖 Prompt for AI Agents