From 89b890aa379fcc916dc3155a30ac7bf9c088cd94 Mon Sep 17 00:00:00 2001 From: John Bodley Date: Tue, 14 Jun 2022 16:13:03 -0700 Subject: [PATCH 1/2] fix(migration): Ensure key_value LargeBinary is encoded as a MEDIUMBLOB as opposed to BLOB for MySQL --- superset/key_value/models.py | 2 +- ...5-28_e09b4ae78457_resize_key_value_blob.py | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py diff --git a/superset/key_value/models.py b/superset/key_value/models.py index 33e749ca364e..f846d9039d4e 100644 --- a/superset/key_value/models.py +++ b/superset/key_value/models.py @@ -28,7 +28,7 @@ class KeyValueEntry(Model, AuditMixinNullable, ImportExportMixin): __tablename__ = "key_value" id = Column(Integer, primary_key=True) resource = Column(String(32), nullable=False) - value = Column(LargeBinary(), nullable=False) + value = Column(LargeBinary(length=2**24 - 1), nullable=False) created_on = Column(DateTime, nullable=True) created_by_fk = Column(Integer, ForeignKey("ab_user.id"), nullable=True) changed_on = Column(DateTime, nullable=True) diff --git a/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py new file mode 100644 index 000000000000..d0eb987df017 --- /dev/null +++ b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py @@ -0,0 +1,50 @@ +# 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. +"""Resize key_value blob + +Revision ID: e09b4ae78457 +Revises: e786798587de +Create Date: 2022-06-14 15:28:42.746349 + +""" + +# revision identifiers, used by Alembic. +revision = "e09b4ae78457" +down_revision = "e786798587de" + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + with op.batch_alter_table("key_value", schema=None) as batch_op: + batch_op.alter_column( + "value", + existing_nullable=False, + existing_type=sa.LargeBinary(), + type_=sa.LargeBinary(length=2**24 - 1), + ) + + +def downgrade(): + with op.batch_alter_table("key_value", schema=None) as batch_op: + batch_op.alter_column( + "value", + existing_nullable=False, + existing_type=sa.LargeBinary(length=2**24 - 1), + type_=sa.LargeBinary(), + ) From 69bdb78959fd13e5c3ff4c225a3b1ddc8c7bd710 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:42:34 -0700 Subject: [PATCH 2/2] Update 2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py --- .../2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py index d0eb987df017..34800d4a5d56 100644 --- a/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py +++ b/superset/migrations/versions/2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py @@ -26,8 +26,8 @@ revision = "e09b4ae78457" down_revision = "e786798587de" -from alembic import op import sqlalchemy as sa +from alembic import op def upgrade():