From ae5238c0e88d0398fdd2e2e000d984d7097e18a8 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Thu, 23 Jun 2022 04:38:33 -0700 Subject: [PATCH] fix(migration): Ensure key_value LargeBinary is encoded as a MEDIUMBLOB as opposed to BLOB for MySQL (#20385) * fix(migration): Ensure key_value LargeBinary is encoded as a MEDIUMBLOB as opposed to BLOB for MySQL * Update 2022-06-14_15-28_e09b4ae78457_resize_key_value_blob.py Co-authored-by: John Bodley (cherry picked from commit f5cb23e0a39a5d5160f5481ba07838ca48beebf7) --- 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..34800d4a5d56 --- /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" + +import sqlalchemy as sa +from alembic import op + + +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(), + )