Skip to content

Commit 38c2753

Browse files
committed
fix: Improve cross-database compatibility and defensive checks in DCR migrations
- Replace server_default='1' with sa.true() for PostgreSQL compatibility - Add table existence checks before ALTER operations - Handle fresh database installations gracefully - Follow existing migration patterns for conditional upgrades
1 parent 3315e4e commit 38c2753

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

mcpgateway/alembic/versions/2f67b12600b4_add_registered_oauth_clients_table_for_.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def upgrade() -> None:
3939
sa.Column("registration_access_token_encrypted", sa.Text, nullable=True),
4040
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
4141
sa.Column("expires_at", sa.DateTime(timezone=True), nullable=True),
42-
sa.Column("is_active", sa.Boolean, server_default="1"),
42+
sa.Column("is_active", sa.Boolean, server_default=sa.true()),
4343
)
4444

4545
# Create unique index on (gateway_id, issuer)

mcpgateway/alembic/versions/61ee11c482d6_add_code_verifier_to_oauth_states_for_.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,27 @@
2222

2323
def upgrade() -> None:
2424
"""Upgrade schema."""
25+
# Check if oauth_states table exists before adding column
26+
conn = op.get_bind()
27+
inspector = sa.inspect(conn)
28+
29+
if "oauth_states" not in inspector.get_table_names():
30+
print("oauth_states table not found. Skipping PKCE code_verifier migration.")
31+
return
32+
2533
# Add code_verifier column to oauth_states for PKCE support (RFC 7636)
2634
op.add_column("oauth_states", sa.Column("code_verifier", sa.String(128), nullable=True))
2735

2836

2937
def downgrade() -> None:
3038
"""Downgrade schema."""
39+
# Check if oauth_states table exists before dropping column
40+
conn = op.get_bind()
41+
inspector = sa.inspect(conn)
42+
43+
if "oauth_states" not in inspector.get_table_names():
44+
print("oauth_states table not found. Skipping PKCE code_verifier downgrade.")
45+
return
46+
3147
# Remove code_verifier column from oauth_states
3248
op.drop_column("oauth_states", "code_verifier")

0 commit comments

Comments
 (0)