* Handle statistics columns being unmigrated from previous downgrades
If the user downgraded HA from 2023.3.x to an older version without
restoring the database and they upgrade again with the same database
they will have unmigrated statistics columns since we only migrate them
once.
As its expensive to check, we do not want to check every time
at startup, so we will only do this one more time since the
risk that someone will downgrade to an older version is very
low at this point.
* add guard to sqlite to prevent re-migrate
* test
* move test to insert with old schema
* use helper
* normalize timestamps
* remove
* add check
* add fallback migration
* add fallback migration
* commit
* remove useless logging
* remove useless logging
* do the other columns at the same time
* coverage
* dry
* comment
* Update tests/components/recorder/test_migration_from_schema_32.py
* Add deduplicate script
* Fix forecast_solar incorrect key with space
* Fix utf-8
* Do not create references to other arbitrary other integrations
* Add commented code to only allow applying to referencing integrations
* Tweak
* Bug fix
* Add command line arg for limit reference
* never suggest to update common keys
* Output of script
* Apply suggestions from code review
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
---------
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
* Add common translations
* Add common translations
* Add common translations
* Add common translations
* Add common translations
* Add common translations
* Add common translations
* Add common translations
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* Fix package names to match pypi index metadata
* uses _
* uses -
* fix metadata
* Add additional coverage to history websocket api
related issue #93258
* Add additional coverage to history websocket api
related issue #93258
* Fix results when union query ends up at the end instead of front
* Apply suggestions from code review
* resort
* zero instead
* fix exception
* fix tests
* Significantly speed up recorder event listener
This code is called every time an event happens since it
subscribes to all events. Its our most frequently called
listener out of the box.
It used to have a seperate filter function but it was
later combined after core had some previous refactoring.
It was never optimized after that happened.
This change reduces the run time by ~70%
* decruft
* Support calculating changes between consecutive sum statistics
* Add support for unit conversion when calculating change
* Don't include sum in WS response unless requested
* Improve tests
* Break out calculating change to its own function
* Improve test coverage
* Auto repair incorrect collation on MySQL schema
As we do more union queries in 2023.5.x if there is a mismatch
between collations on tables, they will fail with an error
that is hard for the user to figure out how to fix
`Error executing query: (MySQLdb.OperationalError) (1271, "Illegal mix of collations for operation UNION")`
This was reported in the #beta channel and by PM from others
so the problem is not isolated to a single user
https://discord.com/channels/330944238910963714/427516175237382144/1100908739910963272
* test with ascii since older maraidb versions may not work otherwise
* Revert "test with ascii since older maraidb versions may not work otherwise"
This reverts commit 787fda1aefcd8418a28a8a8f430e7e7232218ef8.t
* older version need to check collation_server because the collation is not reflected if its the default