Descrizione
Esegue una SELECT custom SQL (con JOIN, GROUP BY, CTE WITH, aggregations, subquery) e ritorna le righe. SOLO LETTURA: guard server-side rejecta INSERT/UPDATE/DELETE/DDL (per mutazioni usa db_insert/db_update/db_delete). Row limit configurabile (default 5000, hard cap anti-runaway). Parametrizzato anti-SQLi via Drizzle. Output: { rows: object[], rowCount, durationMs }. Use case: report multi-tabella per dashboard, analytics aggregati pre-Excel, query complesse da legacy ERP/Odoo.
