| """DbExecutor β runs compiled SQL on a user's external DB. |
| |
| Pipeline: |
| IR β SqlCompiler β SQL string + params |
| β |
| sqlglot validation (SELECT-only, whitelist tables/columns, LIMIT enforced) |
| β |
| asyncpg / pymysql in read-only transaction with timeout (30s) |
| β |
| QueryResult |
| """ |
|
|
| from ...catalog.models import Catalog |
| from ..compiler.sql import SqlCompiler |
| from ..ir.models import QueryIR |
| from .base import BaseExecutor, QueryResult |
|
|
|
|
| class DbExecutor(BaseExecutor): |
| def __init__(self, catalog: Catalog) -> None: |
| self._catalog = catalog |
| self._compiler = SqlCompiler(catalog) |
|
|
| async def run(self, ir: QueryIR) -> QueryResult: |
| raise NotImplementedError |
|
|