[sqlalchemy-20] Remove redundant indexes from some tables
The following tables and columns were defined as primary key and key (index). A column defined as primary key creates an index in the table. The is no need to create a second one. Tables and columns affected: * portdataplanestatuses, port_id * portdnses, port_id * portuplinkstatuspropagation, port_id * qos_policies_default, project_id * quotausages, resource * quotausages, project_id * subnet_dns_publish_fixed_ips, subnet_id * segmenthostmappings, segment_id * segmenthostmappings, host * networkdnsdomains, network_id * floatingipdnses, floatingip_id Closes-Bug: #2024044 Change-Id: I271c109a597eb0aa088a7a9c785e8631bfaa01d7
This commit is contained in:
parent
cbb89fdb14
commit
08fe84f443
|
@ -0,0 +1,65 @@
|
||||||
|
# Copyright 2023 OpenStack Foundation
|
||||||
|
#
|
||||||
|
# Licensed 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
"""Remove dedundant indexes
|
||||||
|
|
||||||
|
Revision ID: 0aefee21cd87
|
||||||
|
Revises: 682c319773d7
|
||||||
|
Create Date: 2023-06-11 04:04:28.536800
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '0aefee21cd87'
|
||||||
|
down_revision = '682c319773d7'
|
||||||
|
|
||||||
|
|
||||||
|
TABLES_AND_COLUMNS = (
|
||||||
|
('portdataplanestatuses', 'port_id'),
|
||||||
|
('portdnses', 'port_id'),
|
||||||
|
('portuplinkstatuspropagation', 'port_id'),
|
||||||
|
('qos_policies_default', 'project_id'),
|
||||||
|
('quotausages', 'resource'),
|
||||||
|
('quotausages', 'project_id'),
|
||||||
|
('subnet_dns_publish_fixed_ips', 'subnet_id'),
|
||||||
|
('segmenthostmappings', 'segment_id'),
|
||||||
|
('segmenthostmappings', 'host'),
|
||||||
|
('networkdnsdomains', 'network_id'),
|
||||||
|
('floatingipdnses', 'floatingip_id')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
inspector = sa.inspect(op.get_bind())
|
||||||
|
for table, column in TABLES_AND_COLUMNS:
|
||||||
|
for index in inspector.get_indexes(table):
|
||||||
|
if index['column_names'] == [column]:
|
||||||
|
op.drop_index(index_name=op.f(index['name']), table_name=table)
|
||||||
|
|
||||||
|
|
||||||
|
def expand_drop_exceptions():
|
||||||
|
"""Drop the redundant indexes
|
||||||
|
|
||||||
|
This migration will remove the indexes from those columns that are primary
|
||||||
|
keys. A primary key creates an index in the table; this second index is
|
||||||
|
redundant.
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
sa.Index: list({val[0] for val in TABLES_AND_COLUMNS}),
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
682c319773d7
|
0aefee21cd87
|
||||||
|
|
|
@ -36,7 +36,7 @@ def upgrade():
|
||||||
sa.Column('tenant_id', sa.String(length=255),
|
sa.Column('tenant_id', sa.String(length=255),
|
||||||
nullable=False, primary_key=True, index=True),
|
nullable=False, primary_key=True, index=True),
|
||||||
sa.Column('resource', sa.String(length=255),
|
sa.Column('resource', sa.String(length=255),
|
||||||
nullable=False, primary_key=True, index=True),
|
nullable=False, primary_key=True),
|
||||||
sa.Column('dirty', sa.Boolean(), nullable=False,
|
sa.Column('dirty', sa.Boolean(), nullable=False,
|
||||||
server_default=sql.false()),
|
server_default=sql.false()),
|
||||||
sa.Column('in_use', sa.Integer(), nullable=False,
|
sa.Column('in_use', sa.Integer(), nullable=False,
|
||||||
|
|
|
@ -35,20 +35,19 @@ def upgrade():
|
||||||
sa.Column('network_id',
|
sa.Column('network_id',
|
||||||
sa.String(length=36),
|
sa.String(length=36),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
index=True),
|
primary_key=True),
|
||||||
sa.Column('dns_domain', sa.String(
|
sa.Column('dns_domain', sa.String(
|
||||||
length=constants.FQDN_FIELD_SIZE),
|
length=constants.FQDN_FIELD_SIZE),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sa.ForeignKeyConstraint(['network_id'],
|
sa.ForeignKeyConstraint(['network_id'],
|
||||||
['networks.id'],
|
['networks.id'],
|
||||||
ondelete='CASCADE'),
|
ondelete='CASCADE'))
|
||||||
sa.PrimaryKeyConstraint('network_id'))
|
|
||||||
|
|
||||||
op.create_table('floatingipdnses',
|
op.create_table('floatingipdnses',
|
||||||
sa.Column('floatingip_id',
|
sa.Column('floatingip_id',
|
||||||
sa.String(length=36),
|
sa.String(length=36),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
index=True),
|
primary_key=True),
|
||||||
sa.Column('dns_name', sa.String(
|
sa.Column('dns_name', sa.String(
|
||||||
length=constants.FQDN_FIELD_SIZE),
|
length=constants.FQDN_FIELD_SIZE),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
|
@ -63,14 +62,13 @@ def upgrade():
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sa.ForeignKeyConstraint(['floatingip_id'],
|
sa.ForeignKeyConstraint(['floatingip_id'],
|
||||||
['floatingips.id'],
|
['floatingips.id'],
|
||||||
ondelete='CASCADE'),
|
ondelete='CASCADE'))
|
||||||
sa.PrimaryKeyConstraint('floatingip_id'))
|
|
||||||
|
|
||||||
op.create_table('portdnses',
|
op.create_table('portdnses',
|
||||||
sa.Column('port_id',
|
sa.Column('port_id',
|
||||||
sa.String(length=36),
|
sa.String(length=36),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
index=True),
|
primary_key=True),
|
||||||
sa.Column('current_dns_name',
|
sa.Column('current_dns_name',
|
||||||
sa.String(length=constants.FQDN_FIELD_SIZE),
|
sa.String(length=constants.FQDN_FIELD_SIZE),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
|
@ -85,5 +83,4 @@ def upgrade():
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sa.ForeignKeyConstraint(['port_id'],
|
sa.ForeignKeyConstraint(['port_id'],
|
||||||
['ports.id'],
|
['ports.id'],
|
||||||
ondelete='CASCADE'),
|
ondelete='CASCADE'))
|
||||||
sa.PrimaryKeyConstraint('port_id'))
|
|
||||||
|
|
|
@ -33,13 +33,12 @@ def upgrade():
|
||||||
op.create_table('segmenthostmappings',
|
op.create_table('segmenthostmappings',
|
||||||
sa.Column('segment_id',
|
sa.Column('segment_id',
|
||||||
sa.String(length=36),
|
sa.String(length=36),
|
||||||
index=True,
|
primary_key=True,
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sa.Column('host',
|
sa.Column('host',
|
||||||
sa.String(255),
|
sa.String(255),
|
||||||
index=True,
|
primary_key=True,
|
||||||
nullable=False),
|
nullable=False),
|
||||||
sa.PrimaryKeyConstraint('segment_id', 'host'),
|
|
||||||
sa.ForeignKeyConstraint(['segment_id'],
|
sa.ForeignKeyConstraint(['segment_id'],
|
||||||
['networksegments.id'],
|
['networksegments.id'],
|
||||||
ondelete='CASCADE'))
|
ondelete='CASCADE'))
|
||||||
|
|
|
@ -36,7 +36,7 @@ portdnses = sa.Table('portdnses', sa.MetaData(),
|
||||||
sa.Column('port_id', sa.String(36),
|
sa.Column('port_id', sa.String(36),
|
||||||
sa.ForeignKey('ports.id',
|
sa.ForeignKey('ports.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True, index=True),
|
primary_key=True),
|
||||||
sa.Column('dns_name', sa.String(length=255),
|
sa.Column('dns_name', sa.String(length=255),
|
||||||
nullable=False),
|
nullable=False),
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,5 @@ def upgrade():
|
||||||
sa.Column('project_id',
|
sa.Column('project_id',
|
||||||
sa.String(length=255),
|
sa.String(length=255),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
index=True,
|
|
||||||
primary_key=True),
|
primary_key=True),
|
||||||
)
|
)
|
||||||
|
|
|
@ -34,6 +34,6 @@ def upgrade():
|
||||||
sa.Column('port_id', sa.String(36),
|
sa.Column('port_id', sa.String(36),
|
||||||
sa.ForeignKey('ports.id',
|
sa.ForeignKey('ports.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True, index=True),
|
primary_key=True),
|
||||||
sa.Column('data_plane_status', sa.String(length=16),
|
sa.Column('data_plane_status', sa.String(length=16),
|
||||||
nullable=True))
|
nullable=True))
|
||||||
|
|
|
@ -35,7 +35,7 @@ def upgrade():
|
||||||
sa.Column('port_id', sa.String(36),
|
sa.Column('port_id', sa.String(36),
|
||||||
sa.ForeignKey('ports.id',
|
sa.ForeignKey('ports.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True, index=True),
|
primary_key=True),
|
||||||
sa.Column('propagate_uplink_status', sa.Boolean(),
|
sa.Column('propagate_uplink_status', sa.Boolean(),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
server_default=sa.sql.false()))
|
server_default=sa.sql.false()))
|
||||||
|
|
|
@ -34,8 +34,7 @@ def upgrade():
|
||||||
op.create_table('subnet_dns_publish_fixed_ips',
|
op.create_table('subnet_dns_publish_fixed_ips',
|
||||||
sa.Column('subnet_id',
|
sa.Column('subnet_id',
|
||||||
sa.String(length=db_const.UUID_FIELD_SIZE),
|
sa.String(length=db_const.UUID_FIELD_SIZE),
|
||||||
nullable=False,
|
nullable=False),
|
||||||
index=True),
|
|
||||||
sa.Column('dns_publish_fixed_ip',
|
sa.Column('dns_publish_fixed_ip',
|
||||||
sa.Boolean(),
|
sa.Boolean(),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
|
|
|
@ -24,7 +24,7 @@ class PortDataPlaneStatus(model_base.BASEV2):
|
||||||
|
|
||||||
port_id = sa.Column(sa.String(36),
|
port_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('ports.id', ondelete="CASCADE"),
|
sa.ForeignKey('ports.id', ondelete="CASCADE"),
|
||||||
primary_key=True, index=True)
|
primary_key=True)
|
||||||
data_plane_status = sa.Column(sa.String(16), nullable=True)
|
data_plane_status = sa.Column(sa.String(16), nullable=True)
|
||||||
port = orm.relationship(
|
port = orm.relationship(
|
||||||
models_v2.Port, load_on_pending=True,
|
models_v2.Port, load_on_pending=True,
|
||||||
|
|
|
@ -24,8 +24,7 @@ from neutron.db import models_v2
|
||||||
class NetworkDNSDomain(model_base.BASEV2):
|
class NetworkDNSDomain(model_base.BASEV2):
|
||||||
network_id = sa.Column(sa.String(36),
|
network_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('networks.id', ondelete="CASCADE"),
|
sa.ForeignKey('networks.id', ondelete="CASCADE"),
|
||||||
primary_key=True,
|
primary_key=True)
|
||||||
index=True)
|
|
||||||
dns_domain = sa.Column(sa.String(255),
|
dns_domain = sa.Column(sa.String(255),
|
||||||
nullable=False)
|
nullable=False)
|
||||||
|
|
||||||
|
@ -47,8 +46,7 @@ class FloatingIPDNS(model_base.BASEV2):
|
||||||
floatingip_id = sa.Column(sa.String(36),
|
floatingip_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('floatingips.id',
|
sa.ForeignKey('floatingips.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True,
|
primary_key=True)
|
||||||
index=True)
|
|
||||||
dns_name = sa.Column(sa.String(255),
|
dns_name = sa.Column(sa.String(255),
|
||||||
nullable=False)
|
nullable=False)
|
||||||
dns_domain = sa.Column(sa.String(255),
|
dns_domain = sa.Column(sa.String(255),
|
||||||
|
@ -76,8 +74,7 @@ class PortDNS(model_base.BASEV2):
|
||||||
port_id = sa.Column(sa.String(36),
|
port_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('ports.id',
|
sa.ForeignKey('ports.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True,
|
primary_key=True)
|
||||||
index=True)
|
|
||||||
current_dns_name = sa.Column(sa.String(255),
|
current_dns_name = sa.Column(sa.String(255),
|
||||||
nullable=False)
|
nullable=False)
|
||||||
current_dns_domain = sa.Column(sa.String(255),
|
current_dns_domain = sa.Column(sa.String(255),
|
||||||
|
@ -106,8 +103,7 @@ class SubnetDNSPublishFixedIP(model_base.BASEV2):
|
||||||
|
|
||||||
subnet_id = sa.Column(sa.String(constants.UUID_FIELD_SIZE),
|
subnet_id = sa.Column(sa.String(constants.UUID_FIELD_SIZE),
|
||||||
sa.ForeignKey('subnets.id', ondelete="CASCADE"),
|
sa.ForeignKey('subnets.id', ondelete="CASCADE"),
|
||||||
primary_key=True,
|
primary_key=True)
|
||||||
index=True)
|
|
||||||
dns_publish_fixed_ip = sa.Column(sa.Boolean(),
|
dns_publish_fixed_ip = sa.Column(sa.Boolean(),
|
||||||
nullable=False,
|
nullable=False,
|
||||||
server_default=sql.false())
|
server_default=sql.false())
|
||||||
|
|
|
@ -71,11 +71,9 @@ class SegmentHostMapping(model_base.BASEV2):
|
||||||
sa.ForeignKey('networksegments.id',
|
sa.ForeignKey('networksegments.id',
|
||||||
ondelete="CASCADE"),
|
ondelete="CASCADE"),
|
||||||
primary_key=True,
|
primary_key=True,
|
||||||
index=True,
|
|
||||||
nullable=False)
|
nullable=False)
|
||||||
host = sa.Column(sa.String(255),
|
host = sa.Column(sa.String(255),
|
||||||
primary_key=True,
|
primary_key=True,
|
||||||
index=True,
|
|
||||||
nullable=False)
|
nullable=False)
|
||||||
|
|
||||||
# Add a relationship to the NetworkSegment model in order to instruct
|
# Add a relationship to the NetworkSegment model in order to instruct
|
||||||
|
|
|
@ -22,7 +22,7 @@ class PortUplinkStatusPropagation(model_base.BASEV2):
|
||||||
|
|
||||||
port_id = sa.Column(sa.String(36),
|
port_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('ports.id', ondelete="CASCADE"),
|
sa.ForeignKey('ports.id', ondelete="CASCADE"),
|
||||||
primary_key=True, index=True)
|
primary_key=True)
|
||||||
propagate_uplink_status = sa.Column(sa.Boolean(), nullable=False,
|
propagate_uplink_status = sa.Column(sa.Boolean(), nullable=False,
|
||||||
server_default=sa.sql.true())
|
server_default=sa.sql.true())
|
||||||
port = orm.relationship(
|
port = orm.relationship(
|
||||||
|
|
|
@ -132,7 +132,7 @@ class QosPortPolicyBinding(model_base.BASEV2):
|
||||||
|
|
||||||
|
|
||||||
class QosPolicyDefault(model_base.BASEV2,
|
class QosPolicyDefault(model_base.BASEV2,
|
||||||
model_base.HasProjectPrimaryKeyIndex):
|
model_base.HasProjectPrimaryKey):
|
||||||
__tablename__ = 'qos_policies_default'
|
__tablename__ = 'qos_policies_default'
|
||||||
qos_policy_id = sa.Column(sa.String(36),
|
qos_policy_id = sa.Column(sa.String(36),
|
||||||
sa.ForeignKey('qos_policies.id',
|
sa.ForeignKey('qos_policies.id',
|
||||||
|
|
|
@ -54,11 +54,11 @@ class Quota(model_base.BASEV2, model_base.HasId, model_base.HasProject):
|
||||||
model_base.BASEV2.__table_args__)
|
model_base.BASEV2.__table_args__)
|
||||||
|
|
||||||
|
|
||||||
class QuotaUsage(model_base.BASEV2, model_base.HasProjectPrimaryKeyIndex):
|
class QuotaUsage(model_base.BASEV2, model_base.HasProjectPrimaryKey):
|
||||||
"""Represents the current usage for a given resource."""
|
"""Represents the current usage for a given resource."""
|
||||||
|
|
||||||
resource = sa.Column(sa.String(255), nullable=False,
|
resource = sa.Column(sa.String(255), nullable=False,
|
||||||
primary_key=True, index=True)
|
primary_key=True)
|
||||||
dirty = sa.Column(sa.Boolean, nullable=False, server_default=sql.false())
|
dirty = sa.Column(sa.Boolean, nullable=False, server_default=sql.false())
|
||||||
|
|
||||||
in_use = sa.Column(sa.Integer, nullable=False,
|
in_use = sa.Column(sa.Integer, nullable=False,
|
||||||
|
|
Loading…
Reference in New Issue