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,
+        )

Reply via email to