mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
fix(migration): commit the grok enum value before seeding (autocommit_block)
CI's "Apply database migrations" failed with asyncpg UnsafeNewEnumValueUsageError: alembic runs the whole upgrade in a single transaction, so migration 039's INSERT used 'grok' in the same transaction that 038 added it — which Postgres forbids. Splitting into two migration files did not help (one transaction spans both). Wrap the ALTER TYPE ADD VALUE in op.get_context().autocommit_block() so the value commits before 039 (and any later migration) uses it. Still renders in offline --sql, so the enum-migration-parity test is unaffected.
This commit is contained in:
@@ -22,9 +22,15 @@ depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# Unguarded (renders in offline --sql so the enum-migration-parity test
|
||||
# sees it) and idempotent. PG 16 permits ADD VALUE inside a transaction.
|
||||
op.execute("ALTER TYPE modelprovider ADD VALUE IF NOT EXISTS 'grok'")
|
||||
# The new value must be COMMITTED before migration 039 inserts a row using
|
||||
# it: alembic runs the whole upgrade in a single transaction, and Postgres
|
||||
# forbids using a freshly added enum value in the same transaction that
|
||||
# added it (UnsafeNewEnumValueUsageError). autocommit_block commits the
|
||||
# ALTER on its own so 'grok' is usable downstream. Still renders the ALTER
|
||||
# TYPE in offline --sql, so the enum-migration-parity test sees it.
|
||||
# Idempotent via IF NOT EXISTS.
|
||||
with op.get_context().autocommit_block():
|
||||
op.execute("ALTER TYPE modelprovider ADD VALUE IF NOT EXISTS 'grok'")
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
|
||||
Reference in New Issue
Block a user