/** * Explainer (v2.17) * * Per-DB EXPLAIN abstraction. Returns both parsed ExplainRow[] (best effort) * and raw DB output as fallback. */ import type { BaseAdapter } from '../adapters/base.js'; import type { ExplainResult } from './query-analyzer-types.js'; export declare class Explainer { readonly adapter: BaseAdapter; readonly dbType: string; constructor(adapter: BaseAdapter, dbType: string); explain(sql: string, params?: unknown[]): Promise; private usesJsonFormat; /** * 从 rows 中提取 JSON 字符串列。MySQL `EXPLAIN FORMAT=JSON` 返回 1 行 1 列, * 列名 `EXPLAIN`;PG `EXPLAIN (FORMAT JSON)` 返回 1 行 1 列,列名 `QUERY PLAN`。 * 兜底:任何 row 的任何 string value 都试一下 JSON.parse。 */ private extractJsonColumn; /** 把 JSON plan 解析成扁平的 ExplainRow[](顶层算子),便于 LLM 看到结构。 */ private parseJsonPlan; private walkMysqlPlan; private walkPgPlan; private buildExplainSql; private parsePlan; } //# sourceMappingURL=explainer.d.ts.map