Correct migration to recorder schema 22 (#59048)
This commit is contained in:
parent
4345432d14
commit
2f3dea30e2
1 changed files with 14 additions and 9 deletions
|
@ -12,6 +12,7 @@ from sqlalchemy.exc import (
|
|||
SQLAlchemyError,
|
||||
)
|
||||
from sqlalchemy.schema import AddConstraint, DropConstraint
|
||||
from sqlalchemy.sql.expression import true
|
||||
|
||||
from .models import (
|
||||
SCHEMA_VERSION,
|
||||
|
@ -24,7 +25,7 @@ from .models import (
|
|||
StatisticsShortTerm,
|
||||
process_timestamp,
|
||||
)
|
||||
from .statistics import get_metadata_with_session, get_start_time
|
||||
from .statistics import get_start_time
|
||||
from .util import session_scope
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
@ -558,21 +559,25 @@ def _apply_update(instance, session, new_version, old_version): # noqa: C901
|
|||
session.add(StatisticsRuns(start=fake_start_time))
|
||||
fake_start_time += timedelta(minutes=5)
|
||||
|
||||
# Copy last hourly statistic to the newly created 5-minute statistics table
|
||||
sum_statistics = get_metadata_with_session(
|
||||
instance.hass, session, statistic_type="sum"
|
||||
)
|
||||
for metadata_id, _ in sum_statistics.values():
|
||||
# When querying the database, be careful to only explicitly query for columns
|
||||
# which were present in schema version 21. If querying the table, SQLAlchemy
|
||||
# will refer to future columns.
|
||||
for sum_statistic in session.query(StatisticsMeta.id).filter_by(has_sum=true()):
|
||||
last_statistic = (
|
||||
session.query(Statistics)
|
||||
.filter_by(metadata_id=metadata_id)
|
||||
session.query(
|
||||
Statistics.start,
|
||||
Statistics.last_reset,
|
||||
Statistics.state,
|
||||
Statistics.sum,
|
||||
)
|
||||
.filter_by(metadata_id=sum_statistic.id)
|
||||
.order_by(Statistics.start.desc())
|
||||
.first()
|
||||
)
|
||||
if last_statistic:
|
||||
session.add(
|
||||
StatisticsShortTerm(
|
||||
metadata_id=last_statistic.metadata_id,
|
||||
metadata_id=sum_statistic.id,
|
||||
start=last_statistic.start,
|
||||
last_reset=last_statistic.last_reset,
|
||||
state=last_statistic.state,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue