Add runtime statistics via engine.stats

This commit is contained in:
2026-06-03 09:48:33 +02:00
parent 0faa01d89b
commit b044ca43f8
7 changed files with 116 additions and 5 deletions
+13 -1
View File
@@ -5,13 +5,21 @@ from loguru import logger
from .cache import CacheManager
from .parser import ParsedQuery
from .registry import ColumnRegistry
from .stats import StatsCollector
class QueryExecutor:
def __init__(self, cache: CacheManager, registry: ColumnRegistry, source_conn: sqlite3.Connection) -> None:
def __init__(
self,
cache: CacheManager,
registry: ColumnRegistry,
source_conn: sqlite3.Connection,
stats: StatsCollector,
) -> None:
self._cache = cache
self._registry = registry
self._source_conn = source_conn
self._stats = stats
def execute(self, parsed: ParsedQuery) -> list[dict]:
table = parsed.table
@@ -26,11 +34,15 @@ class QueryExecutor:
f"Re-fetching {table!r} — new columns requested: {missing}. "
f"Expanding cache from {self._registry.get_columns(table)} + {missing}"
)
self._stats.record_refetch()
else:
self._stats.record_miss()
all_columns = list(self._registry.get_columns(table)) + missing
self._cache.load_table(table, all_columns, self._source_conn)
self._registry.update(table, all_columns)
else:
logger.debug(f"Cache hit: {table!r} columns={columns}")
self._stats.record_hit()
return self._run_in_memory(parsed)