Drop duplicated indices from recorder database schema (#89613)

Drop duplicated indices from schema

https://docs.percona.com/percona-toolkit/pt-duplicate-key-checker.html

```
% pt-duplicate-key-checker --databases fresh

ALTER TABLE `fresh`.`events` DROP INDEX `ix_events_event_type_id`;

ALTER TABLE `fresh`.`states` DROP INDEX `ix_states_metadata_id`;

ALTER TABLE `fresh`.`statistics` DROP INDEX `ix_statistics_metadata_id`;

ALTER TABLE `fresh`.`statistics_short_term` DROP INDEX `ix_statistics_short_term_metadata_id`;

```
pull/87774/head
J. Nick Koston 2023-03-12 22:24:57 -10:00 committed by GitHub
parent 470b0b5471
commit d1ee303e85
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 4 deletions

View File

@ -68,7 +68,7 @@ class Base(DeclarativeBase):
"""Base class for tables."""
SCHEMA_VERSION = 39
SCHEMA_VERSION = 40
_LOGGER = logging.getLogger(__name__)
@ -229,7 +229,7 @@ class Events(Base):
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
)
event_type_id: Mapped[int | None] = mapped_column(
Integer, ForeignKey("event_types.event_type_id"), index=True
Integer, ForeignKey("event_types.event_type_id")
)
event_data_rel: Mapped[EventData | None] = relationship("EventData")
event_type_rel: Mapped[EventTypes | None] = relationship("EventTypes")
@ -426,7 +426,7 @@ class States(Base):
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
)
metadata_id: Mapped[int | None] = mapped_column(
Integer, ForeignKey("states_meta.metadata_id"), index=True
Integer, ForeignKey("states_meta.metadata_id")
)
states_meta_rel: Mapped[StatesMeta | None] = relationship("StatesMeta")
@ -617,7 +617,6 @@ class StatisticsBase:
metadata_id: Mapped[int | None] = mapped_column(
Integer,
ForeignKey(f"{TABLE_STATISTICS_META}.id", ondelete="CASCADE"),
index=True,
)
start: Mapped[datetime | None] = mapped_column(
DATETIME_TYPE, index=True

View File

@ -1041,6 +1041,19 @@ def _apply_update( # noqa: C901
"ix_statistics_short_term_statistic_id_start",
quiet=True,
)
elif new_version == 40:
# ix_events_event_type_id is a left-prefix of ix_events_event_type_id_time_fired_ts
_drop_index(session_maker, "events", "ix_events_event_type_id")
# ix_states_metadata_id is a left-prefix of ix_states_metadata_id_last_updated_ts
_drop_index(session_maker, "states", "ix_states_metadata_id")
# ix_statistics_metadata_id is a left-prefix of ix_statistics_statistic_id_start_ts
_drop_index(session_maker, "statistics", "ix_statistics_metadata_id")
# ix_statistics_short_term_metadata_id is a left-prefix of ix_statistics_short_term_statistic_id_start_ts
_drop_index(
session_maker,
"statistics_short_term",
"ix_statistics_short_term_metadata_id",
)
else:
raise ValueError(f"No schema migration defined for version {new_version}")