From 91ceda7e581301aac2ca62fdf6a413b42c1249e0 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Thu, 9 May 2024 17:06:58 -0700 Subject: [PATCH] chore: Update logic in migration fcea065655 --- UPDATING.md | 1 + ..._17fcea065655_change_text_to_mediumtext.py | 2 - .../2024-05-09_19-19_f7b6750b67e8_.py | 52 +++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 superset/migrations/versions/2024-05-09_19-19_f7b6750b67e8_.py diff --git a/UPDATING.md b/UPDATING.md index 909cd9f6d9bed..ad6427dfb43d9 100644 --- a/UPDATING.md +++ b/UPDATING.md @@ -51,6 +51,7 @@ assists people when migrating to a new version. ### Potential Downtime - [27392](/~https://github.com/apache/superset/pull/27392): Adds an index to `query.sql_editor_id` to improve performance. This may cause downtime on large deployments. +- [28422](/~https://github.com/apache/superset/pull/28422): Potentially augments the `query.executed_sql` and `query.select_sql` columns for MySQL from `MEDIUMTEXT` to `LONGTEXT`. Potential downtime may be required for large deployments which previously ran [27119](/~https://github.com/apache/superset/pull/27119). ## 4.0.0 diff --git a/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py b/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py index 3ba126d24ec29..17b888c641b5b 100644 --- a/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py +++ b/superset/migrations/versions/2024-02-14_14-43_17fcea065655_change_text_to_mediumtext.py @@ -38,8 +38,6 @@ "dashboards.css", "keyvalue.value", "query.extra_json", - "query.executed_sql", - "query.select_sql", "report_execution_log.value_row_json", "report_recipient.recipient_config_json", "report_schedule.sql", diff --git a/superset/migrations/versions/2024-05-09_19-19_f7b6750b67e8_.py b/superset/migrations/versions/2024-05-09_19-19_f7b6750b67e8_.py new file mode 100644 index 0000000000000..09913a5a2923f --- /dev/null +++ b/superset/migrations/versions/2024-05-09_19-19_f7b6750b67e8_.py @@ -0,0 +1,52 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +"""change_mediumtext_to_longtext + +Revision ID: f7b6750b67e8 +Revises: 4081be5b6b74 +Create Date: 2024-05-09 19:19:46.630140 + +""" + +# revision identifiers, used by Alembic. +revision = "f7b6750b67e8" +down_revision = "4081be5b6b74" + +from alembic import op # noqa: E402 +from sqlalchemy.dialects.mysql import LONGTEXT, MEDIUMTEXT # noqa: E402 +from sqlalchemy.dialects.mysql.base import MySQLDialect # noqa: E402 +from sqlalchemy.engine.reflection import Inspector # noqa: E402 + + +def upgrade(): + bind = op.get_bind() + + if isinstance(bind.dialect, MySQLDialect): + for column in Inspector.from_engine(bind).get_columns("query"): + for name in ["executed_sql", "select_sql"]: + if column["name"] == name and isinstance(column["type"], MEDIUMTEXT): + with op.batch_alter_table("query") as batch_op: + batch_op.alter_column( + name, + existing_type=MEDIUMTEXT, + type_=LONGTEXT, + existing_nullable=True, + ) + + +def downgrade(): + pass