From a08e6767be21fce609d30d0c32c9c1e5b435782b Mon Sep 17 00:00:00 2001 From: John Bodley Date: Fri, 20 Jul 2018 16:14:44 -0700 Subject: [PATCH] [schema] Updating the datasources schema --- superset/connectors/druid/models.py | 3 +- .../937d04c16b64_update_datasources.py | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 superset/migrations/versions/937d04c16b64_update_datasources.py diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 3b22ade1df366..d212444bef82f 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -410,7 +410,7 @@ class DruidDatasource(Model, BaseDatasource): baselink = 'druiddatasourcemodelview' # Columns - datasource_name = Column(String(255)) + datasource_name = Column(String(255), nullable=False) is_hidden = Column(Boolean, default=False) filter_select_enabled = Column(Boolean, default=True) # override default fetch_values_from = Column(String(100)) @@ -420,7 +420,6 @@ class DruidDatasource(Model, BaseDatasource): 'DruidCluster', backref='datasources', foreign_keys=[cluster_name]) owners = relationship(owner_class, secondary=druiddatasource_user, backref='druiddatasources') - UniqueConstraint('cluster_name', 'datasource_name') export_fields = ( 'datasource_name', 'is_hidden', 'description', 'default_endpoint', diff --git a/superset/migrations/versions/937d04c16b64_update_datasources.py b/superset/migrations/versions/937d04c16b64_update_datasources.py new file mode 100644 index 0000000000000..fa770b21cbb2c --- /dev/null +++ b/superset/migrations/versions/937d04c16b64_update_datasources.py @@ -0,0 +1,53 @@ +# 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. +"""update datasources + +Revision ID: 937d04c16b64 +Revises: c82ee8a39623 +Create Date: 2018-07-20 16:08:10.195843 + +""" + +# revision identifiers, used by Alembic. +revision = '937d04c16b64' +down_revision = 'c82ee8a39623' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + + # Enforce that the datasource_name column be non-nullable. Note this will + # break if the table is corrupted and includes ill-defined datasources. + with op.batch_alter_table('datasources') as batch_op: + batch_op.alter_column( + 'datasource_name', + nullable=False, + type_=sa.String(255), + ) + + +def downgrade(): + + # Forego that the datasource_name column be non-nullable. + with op.batch_alter_table('datasources') as batch_op: + batch_op.alter_column( + 'datasource_name', + nullable=True, + type_=sa.String(255), + )