mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 16:57:10 +00:00
Add index to old_state_id column for postgres and older databases (#44757)
* Add index to old_state_id column for older databases The schema was updated in #43610 but the index was not added on migration. * Handle postgresql missing ondelete * create index first
This commit is contained in:
parent
3c62c21991
commit
12af87bc6e
@ -211,7 +211,13 @@ def _update_states_table_with_foreign_key_options(engine):
|
|||||||
inspector = reflection.Inspector.from_engine(engine)
|
inspector = reflection.Inspector.from_engine(engine)
|
||||||
alters = []
|
alters = []
|
||||||
for foreign_key in inspector.get_foreign_keys(TABLE_STATES):
|
for foreign_key in inspector.get_foreign_keys(TABLE_STATES):
|
||||||
if foreign_key["name"] and not foreign_key["options"]:
|
if foreign_key["name"] and (
|
||||||
|
# MySQL/MariaDB will have empty options
|
||||||
|
not foreign_key["options"]
|
||||||
|
or
|
||||||
|
# Postgres will have ondelete set to None
|
||||||
|
foreign_key["options"].get("ondelete") is None
|
||||||
|
):
|
||||||
alters.append(
|
alters.append(
|
||||||
{
|
{
|
||||||
"old_fk": ForeignKeyConstraint((), (), name=foreign_key["name"]),
|
"old_fk": ForeignKeyConstraint((), (), name=foreign_key["name"]),
|
||||||
@ -312,6 +318,10 @@ def _apply_update(engine, new_version, old_version):
|
|||||||
_create_index(engine, "events", "ix_events_event_type_time_fired")
|
_create_index(engine, "events", "ix_events_event_type_time_fired")
|
||||||
_drop_index(engine, "events", "ix_events_event_type")
|
_drop_index(engine, "events", "ix_events_event_type")
|
||||||
elif new_version == 10:
|
elif new_version == 10:
|
||||||
|
# Now done in step 11
|
||||||
|
pass
|
||||||
|
elif new_version == 11:
|
||||||
|
_create_index(engine, "states", "ix_states_old_state_id")
|
||||||
_update_states_table_with_foreign_key_options(engine)
|
_update_states_table_with_foreign_key_options(engine)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"No schema migration defined for version {new_version}")
|
raise ValueError(f"No schema migration defined for version {new_version}")
|
||||||
|
@ -25,7 +25,7 @@ import homeassistant.util.dt as dt_util
|
|||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
|
|
||||||
SCHEMA_VERSION = 10
|
SCHEMA_VERSION = 11
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user