This is an automated email from the ASF dual-hosted git repository. maximebeauchemin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push: new 0730261 Fix column type on dbs.encrypted_extra, add instructions for testing migration downgrades (#8493) 0730261 is described below commit 0730261342b694e5ced1008f0bcc65b910491a47 Author: Will Barrett <w...@preset.io> AuthorDate: Mon Nov 4 23:13:21 2019 -0800 Fix column type on dbs.encrypted_extra, add instructions for testing migration downgrades (#8493) * Fix column type on dbs.encrypted_extra * Add instructions for testing migration downgrades * Account for non-Postgres DBs in migration * Use batch_alter_table to make SQLite happy * Another CI-appeasing tweak --- CONTRIBUTING.md | 14 +++++ ...acd2cf3df2_alter_type_of_dbs_encrypted_extra.py | 64 ++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a080179..109a080 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -768,6 +768,20 @@ https://github.com/apache/incubator-superset/pull/3013 [Example commit](https://github.com/apache/incubator-superset/pull/5745/commits/6220966e2a0a0cf3e6d87925491f8920fe8a3458) +1. Test the migration's `down` method + + ```bash + superset db downgrade + ``` + + The output should look like this: + + ``` + INFO [alembic.runtime.migration] Context impl SQLiteImpl. + INFO [alembic.runtime.migration] Will assume transactional DDL. + INFO [alembic.runtime.migration] Running downgrade 40a0a483dd12 -> 1a1d627ebd8e, add_metadata_column_to_annotation_model.py + ``` + ### Merging DB migrations When two DB migrations collide, you'll get an error message like this one: diff --git a/superset/migrations/versions/c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py b/superset/migrations/versions/c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py new file mode 100644 index 0000000..8fe2631 --- /dev/null +++ b/superset/migrations/versions/c2acd2cf3df2_alter_type_of_dbs_encrypted_extra.py @@ -0,0 +1,64 @@ +# 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. +"""alter type of dbs encrypted_extra + + +Revision ID: c2acd2cf3df2 +Revises: cca2f5d568c8 +Create Date: 2019-11-01 09:18:36.953603 + +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy_utils import EncryptedType + +# revision identifiers, used by Alembic. +revision = "c2acd2cf3df2" +down_revision = "cca2f5d568c8" + + +def upgrade(): + with op.batch_alter_table("dbs") as batch_op: + try: + # Postgres migration + batch_op.alter_column( + "encrypted_extra", + existing_type=sa.Text(), + type_=EncryptedType(sa.Text()), + postgresql_using="encrypted_extra::bytea", + existing_nullable=True, + ) + except TypeError: + # non-Postgres migration + batch_op.alter_column( + "dbs", + "encrypted_extra", + existing_type=sa.Text(), + type_=EncryptedType(sa.Text()), + existing_nullable=True, + ) + + +def downgrade(): + with op.batch_alter_table("dbs") as batch_op: + batch_op.alter_column( + "encrypted_extra", + existing_type=EncryptedType(sa.Text()), + type_=sa.Text(), + existing_nullable=True, + )