mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 02:37:08 +00:00
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`; ```
This commit is contained in:
parent
470b0b5471
commit
d1ee303e85
@ -68,7 +68,7 @@ class Base(DeclarativeBase):
|
|||||||
"""Base class for tables."""
|
"""Base class for tables."""
|
||||||
|
|
||||||
|
|
||||||
SCHEMA_VERSION = 39
|
SCHEMA_VERSION = 40
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ class Events(Base):
|
|||||||
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
|
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
|
||||||
)
|
)
|
||||||
event_type_id: Mapped[int | None] = mapped_column(
|
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_data_rel: Mapped[EventData | None] = relationship("EventData")
|
||||||
event_type_rel: Mapped[EventTypes | None] = relationship("EventTypes")
|
event_type_rel: Mapped[EventTypes | None] = relationship("EventTypes")
|
||||||
@ -426,7 +426,7 @@ class States(Base):
|
|||||||
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
|
LargeBinary(CONTEXT_ID_BIN_MAX_LENGTH)
|
||||||
)
|
)
|
||||||
metadata_id: Mapped[int | None] = mapped_column(
|
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")
|
states_meta_rel: Mapped[StatesMeta | None] = relationship("StatesMeta")
|
||||||
|
|
||||||
@ -617,7 +617,6 @@ class StatisticsBase:
|
|||||||
metadata_id: Mapped[int | None] = mapped_column(
|
metadata_id: Mapped[int | None] = mapped_column(
|
||||||
Integer,
|
Integer,
|
||||||
ForeignKey(f"{TABLE_STATISTICS_META}.id", ondelete="CASCADE"),
|
ForeignKey(f"{TABLE_STATISTICS_META}.id", ondelete="CASCADE"),
|
||||||
index=True,
|
|
||||||
)
|
)
|
||||||
start: Mapped[datetime | None] = mapped_column(
|
start: Mapped[datetime | None] = mapped_column(
|
||||||
DATETIME_TYPE, index=True
|
DATETIME_TYPE, index=True
|
||||||
|
@ -1041,6 +1041,19 @@ def _apply_update( # noqa: C901
|
|||||||
"ix_statistics_short_term_statistic_id_start",
|
"ix_statistics_short_term_statistic_id_start",
|
||||||
quiet=True,
|
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:
|
else:
|
||||||
raise ValueError(f"No schema migration defined for version {new_version}")
|
raise ValueError(f"No schema migration defined for version {new_version}")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user