mirror of https://github.com/apache/superset.git
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
This commit is contained in:
parent
5617f8721d
commit
0730261342
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
)
|
Loading…
Reference in New Issue