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 <[email protected]>
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,
+ )