| """TabularExecutor — runs compiled pandas/polars chain on a Parquet file. |
| |
| Picks engine by file size: |
| ≤ 100 MB → eager pandas |
| 100 MB-1 GB → pyarrow with predicate pushdown |
| > 1 GB → polars lazy scan |
| |
| Initial scope ships eager pandas only; the others are added when a real |
| file is too big. |
| """ |
|
|
| from ...catalog.models import Catalog |
| from ..compiler.pandas import PandasCompiler |
| from ..ir.models import QueryIR |
| from .base import BaseExecutor, QueryResult |
|
|
|
|
| class TabularExecutor(BaseExecutor): |
| def __init__(self, catalog: Catalog) -> None: |
| self._catalog = catalog |
| self._compiler = PandasCompiler(catalog) |
|
|
| async def run(self, ir: QueryIR) -> QueryResult: |
| raise NotImplementedError |
|
|