From 73d5c7d46e792973b50b11331cab2cd182e6c03c Mon Sep 17 00:00:00 2001 From: bifangknt <1320414964@qq.com> Date: Sat, 24 Oct 2026 23:23:55 +0800 Subject: [PATCH] test(storage): make SQLite query plan assertions version-independent Classify event cleanup queries by selected columns instead of CORRELATED plan text, preserving covering-index, primary-key, and no-sort checks. Validated all 15 tests on ARM64 with SQLite 3.53.4 and 3.46.1. --- .../unit_tests/storage/test_inline_media_cleanup.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/unit_tests/storage/test_inline_media_cleanup.py b/tests/unit_tests/storage/test_inline_media_cleanup.py index e3aa1bafe..179ce0fb6 100644 --- a/tests/unit_tests/storage/test_inline_media_cleanup.py +++ b/tests/unit_tests/storage/test_inline_media_cleanup.py @@ -186,7 +186,8 @@ async def test_event_scan_budget_advances_past_foreign_events_without_reading_pa def capture_statement(connection, cursor, statement, parameters, context, executemany): if statement.startswith('SELECT ') and 'FROM agent_run_event' in statement: - statements.append((statement, parameters)) + columns = tuple(context.compiled.statement.selected_columns.keys()) + statements.append((statement, parameters, columns)) sa.event.listen(engine.sync_engine, 'before_cursor_execute', capture_statement) try: @@ -209,15 +210,17 @@ async def test_event_scan_budget_advances_past_foreign_events_without_reading_pa assert not MediaCache.has_inline_images(json.loads(await read_record(application, AgentRunEvent, 5, 'data_json'))) for number in (1, 2, 3, 4, 6): assert await read_record(application, AgentRunEvent, number, 'data_json') == PAYLOAD + assert {columns for _, _, columns in statements} == {('id', 'created_at'), ('data_json', 'metadata_json')} async with engine.connect() as connection: - for statement, parameters in statements: + for statement, parameters, columns in statements: plan = ' '.join( row[3] for row in await connection.exec_driver_sql('EXPLAIN QUERY PLAN ' + statement, parameters) ) - if 'CORRELATED' in plan: - assert 'SEARCH agent_run_event USING INTEGER PRIMARY KEY' in plan, plan - else: + # Classify by projection; SQLite versions describe EXISTS plans differently. + if columns == ('id', 'created_at'): assert 'COVERING INDEX ix_agent_run_event_media_ttl' in plan, plan + else: + assert 'SEARCH agent_run_event USING INTEGER PRIMARY KEY' in plan, plan assert 'TEMP B-TREE' not in plan, plan