mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 12:59:34 +00:00
Speed up purge time with newer MariaDB versions (#87409)
* Speed up purge time with newer MariaDB versions * fix * document * document * document * rename * self review * Update homeassistant/components/recorder/util.py * fixes
This commit is contained in:
@@ -230,7 +230,12 @@ def test_setup_connection_for_dialect_sqlite(sqlite_version):
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
util.setup_connection_for_dialect(instance_mock, "sqlite", dbapi_connection, True)
|
||||
assert (
|
||||
util.setup_connection_for_dialect(
|
||||
instance_mock, "sqlite", dbapi_connection, True
|
||||
)
|
||||
is not None
|
||||
)
|
||||
|
||||
assert len(execute_args) == 5
|
||||
assert execute_args[0] == "PRAGMA journal_mode=WAL"
|
||||
@@ -240,7 +245,12 @@ def test_setup_connection_for_dialect_sqlite(sqlite_version):
|
||||
assert execute_args[4] == "PRAGMA foreign_keys=ON"
|
||||
|
||||
execute_args = []
|
||||
util.setup_connection_for_dialect(instance_mock, "sqlite", dbapi_connection, False)
|
||||
assert (
|
||||
util.setup_connection_for_dialect(
|
||||
instance_mock, "sqlite", dbapi_connection, False
|
||||
)
|
||||
is None
|
||||
)
|
||||
|
||||
assert len(execute_args) == 3
|
||||
assert execute_args[0] == "PRAGMA cache_size = -16384"
|
||||
@@ -275,7 +285,12 @@ def test_setup_connection_for_dialect_sqlite_zero_commit_interval(
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
util.setup_connection_for_dialect(instance_mock, "sqlite", dbapi_connection, True)
|
||||
assert (
|
||||
util.setup_connection_for_dialect(
|
||||
instance_mock, "sqlite", dbapi_connection, True
|
||||
)
|
||||
is not None
|
||||
)
|
||||
|
||||
assert len(execute_args) == 5
|
||||
assert execute_args[0] == "PRAGMA journal_mode=WAL"
|
||||
@@ -285,7 +300,12 @@ def test_setup_connection_for_dialect_sqlite_zero_commit_interval(
|
||||
assert execute_args[4] == "PRAGMA foreign_keys=ON"
|
||||
|
||||
execute_args = []
|
||||
util.setup_connection_for_dialect(instance_mock, "sqlite", dbapi_connection, False)
|
||||
assert (
|
||||
util.setup_connection_for_dialect(
|
||||
instance_mock, "sqlite", dbapi_connection, False
|
||||
)
|
||||
is None
|
||||
)
|
||||
|
||||
assert len(execute_args) == 3
|
||||
assert execute_args[0] == "PRAGMA cache_size = -16384"
|
||||
@@ -443,11 +463,13 @@ def test_supported_pgsql(caplog, pgsql_version):
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
util.setup_connection_for_dialect(
|
||||
database_engine = util.setup_connection_for_dialect(
|
||||
instance_mock, "postgresql", dbapi_connection, True
|
||||
)
|
||||
|
||||
assert "minimum supported version" not in caplog.text
|
||||
assert database_engine is not None
|
||||
assert database_engine.optimizer.slow_range_in_select is True
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -524,9 +546,13 @@ def test_supported_sqlite(caplog, sqlite_version):
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
util.setup_connection_for_dialect(instance_mock, "sqlite", dbapi_connection, True)
|
||||
database_engine = util.setup_connection_for_dialect(
|
||||
instance_mock, "sqlite", dbapi_connection, True
|
||||
)
|
||||
|
||||
assert "minimum supported version" not in caplog.text
|
||||
assert database_engine is not None
|
||||
assert database_engine.optimizer.slow_range_in_select is False
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -598,7 +624,7 @@ async def test_issue_for_mariadb_with_MDEV_25020(
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
await hass.async_add_executor_job(
|
||||
database_engine = await hass.async_add_executor_job(
|
||||
util.setup_connection_for_dialect,
|
||||
instance_mock,
|
||||
"mysql",
|
||||
@@ -612,6 +638,9 @@ async def test_issue_for_mariadb_with_MDEV_25020(
|
||||
assert issue is not None
|
||||
assert issue.translation_placeholders == {"min_version": min_version}
|
||||
|
||||
assert database_engine is not None
|
||||
assert database_engine.optimizer.slow_range_in_select is True
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"mysql_version",
|
||||
@@ -648,7 +677,7 @@ async def test_no_issue_for_mariadb_with_MDEV_25020(hass, caplog, mysql_version)
|
||||
|
||||
dbapi_connection = MagicMock(cursor=_make_cursor_mock)
|
||||
|
||||
await hass.async_add_executor_job(
|
||||
database_engine = await hass.async_add_executor_job(
|
||||
util.setup_connection_for_dialect,
|
||||
instance_mock,
|
||||
"mysql",
|
||||
@@ -661,6 +690,9 @@ async def test_no_issue_for_mariadb_with_MDEV_25020(hass, caplog, mysql_version)
|
||||
issue = registry.async_get_issue(DOMAIN, "maria_db_range_index_regression")
|
||||
assert issue is None
|
||||
|
||||
assert database_engine is not None
|
||||
assert database_engine.optimizer.slow_range_in_select is False
|
||||
|
||||
|
||||
def test_basic_sanity_check(hass_recorder, recorder_db_url):
|
||||
"""Test the basic sanity checks with a missing table."""
|
||||
|
||||
Reference in New Issue
Block a user