Skip to content

Releases: 0verme/dbx-plugin-plan-detective

Plan Detective v0.6.7

Choose a tag to compare

@0verme 0verme released this 24 Sep 07:10
7b17560

Plan Detective v0.6.7

更新内容

  • 优化插件与 README 的产品描述,让用户更容易了解其用途和分析结果。
  • 更新 DBX Store 与 GitHub Release 的安装说明。

能力范围

本版本仅包含 metadata 与文案更新,不改变功能逻辑。Plan Detective 仍分析 SQL 的预估执行计划(Estimated Plan),不新增 Actual Plan、EXPLAIN ANALYZE 或 SQL 自动优化能力。分析结果反映优化器估算,可作为排查线索,不代表实际运行表现。

GitHub Release 提供的 universal 插件包为未签名候选包。

Plan Detective v0.6.6

Choose a tag to compare

@0verme 0verme released this 23 Sep 12:21
939d152

Plan Detective v0.6.6

本版本包含 Doris Estimated EXPLAIN 结构化解析,以及 OceanBase 4.2.5.7 MySQL 模式执行计划解析兼容修复。

新增与修复

  • Doris Estimated EXPLAIN 文本计划进入结构化分析。
  • DBX 返回 dbType=mysql 且 dbVersion 明确包含 OceanBase 标识时,路由到独立的 oceanbase-mysql family,并复用 OceanBase JSON parser / normalizer。
  • Native MySQL parser contract 保持不变;不根据 Raw Plan shape 猜测数据库 family。

验证

  • npm test:1253/1253 passed。
  • npm run build:DBX_UI_BUILD_SUCCESS。
  • DBX CLI universal package preflight:成功。
  • OceanBase 4.2.5.7 真实实例回放:NOT RUN;样本来自用户报告并已脱敏,内网验证待用户执行。
  • 真实 Doris / DBX Desktop Host Smoke:NOT RUN。

兼容要求保持不变:DBX >=0.6.18、Host API ^1.2、权限 host.plans:read。本次发布 GitHub Release;DBX Store / 签名流程不在本次范围。

Plan Detective v0.6.5

Choose a tag to compare

@0verme 0verme released this 23 Sep 04:11
eca0052

Plan Detective v0.6.5

v0.6.5 将 QuestDB Estimated EXPLAIN 文本计划纳入结构化分析,基于 DBX Host 返回的 format: text / mode: estimated 计划,不执行用户 SQL。

新增

  • QuestDB 文本计划解析、统一计划树与 Node Inspector 展示;保留 operator properties、未知 operator 与原始计划证据。
  • Frame / Interval relation access 以保守语义计数;PageFrame / Row cursor 不重复计为扫描。
  • QuestDB 未报告的 estimated rows 与 PostgreSQL cost 保持缺失,不推导这些数值或据此生成 Findings / Hotspots。

兼容与边界

  • DBX >=0.6.18,Host API ^1.2,权限 host.plans:read。
  • 仅支持 Estimated text plan;不支持 Actual Plan / autotrace,不建立数据库连接、不读取 credential。
  • 测试数据包括官方文档转录与 synthetic fixtures;没有真实本地 QuestDB capture。

验证

  • npm test:1193/1193 passed。
  • npm run build:DBX_UI_BUILD_SUCCESS。
  • DBX CLI universal package preflight 成功;GitHub Release workflow 将生成并附加发布包与 metadata。
  • 真实 QuestDB / DBX Desktop Host smoke:NOT RUN(当前环境不可用)。

DBX Store 更新与签名是独立流程,本次仅发布 GitHub Release。

Plan Detective v0.6.4

Choose a tag to compare

@0verme 0verme released this 22 Sep 16:07
c35f2d2

亮点

  • Dameng Estimated Plan 结构化解析:支持 DBX 当前返回的 Dameng 原生 EXPLAIN 文本与 format: "text" 输出。
  • 原生 tuple 与树结构:解析 [cost, rows, bytes-per-row],按 # 显示列恢复计划树,operation id 仅用于证据与 predicate 关联。
  • 未知内容安全保留:未知 operator/detail 保留原文和完整子树;缺失字段 fail-soft,多根、损坏输入与 runtime/autotrace marker fail-closed。
  • 代价语义隔离:Dameng cost 保留在 engineSpecific.dameng,不映射为 PostgreSQL startupCost / totalCost;共享规则与热点只使用可靠 rows 信号。
  • 共享分析链路:接入 Metrics、既有 Rules、Hotspots、Plan Tree、Node Inspector、i18n 与 UI;新增 1 个 official 与 6 个 synthetic fixture / golden。

验证

  • npm test:1128/1128 passed
  • npm run test:update-goldens:72 个 golden unchanged
  • npm run build:DBX_UI_BUILD_SUCCESS
  • dbx-plugin package .:unsigned universal candidate 成功,manifest version 0.6.4

本版本仅支持 Estimated Plan;不支持 Actual Plan、EXPLAIN ANALYZE 或 autotrace。当前环境无真实 Dameng 实例与 DBX Desktop Host,Host Smoke 未运行。该版本不更新 DBX Store。

Plan Detective v0.6.3

Choose a tag to compare

@0verme 0verme released this 22 Sep 13:59
18f84c4

亮点

  • Oracle DBMS_XPLAN Estimated Plan 结构化解析:支持 DBX 当前返回的 DBMS_XPLAN.DISPLAY(..., 'TYPICAL +PREDICATE')、format: "text" 输出。
  • 按 Operation 缩进恢复计划树:不使用 Oracle Id 推断父子关系,保留未知 operation 与完整子树。
  • Oracle 原生证据保留:Rows、Bytes、Cost、%CPU、Time、predicate marker / text、Plan hash 与未知字段进入 engineSpecific.oracle。
  • 代价语义隔离:Oracle Cost 不映射为 PostgreSQL startupCost / totalCost,共享 cost attribution 为 not-applicable。
  • 共享分析链路:接入 Metrics、既有 Rules、Hotspots、Plan Tree、Node Inspector 与中英文 Hotspot 文案。

验证

  • npm test:1066/1066 passed
  • npm run test:update-goldens:65 个 golden unchanged
  • npm run build:DBX_UI_BUILD_SUCCESS
  • dbx-plugin package .:unsigned universal candidate 成功,manifest version 0.6.3

本版本仅支持 Estimated Plan;不支持 Actual Plan、DISPLAY_CURSOR 或 ALLSTATS LAST。当前环境无 Oracle 实例与 DBX Desktop Host,Host Smoke 未运行。该版本尚未更新 DBX Store。

Plan Detective v0.6.2

Choose a tag to compare

@0verme 0verme released this 22 Sep 12:08
89a5d07

亮点

  • OceanBase Oracle 结构化执行计划(Phase 3.2 / PR #46):OceanBase Oracle 的 Estimated Plan(宿主 dbType: "oceanbase-oracle"、format: "json",即 EXPLAIN FORMAT=JSON 的解码结果)从 Raw Plan 升级为结构化分析。按 CHILD_<n> 递归构建计划树(ID / OPERATOR / NAME / EST.ROWS / EST.TIME(us) / COST / output),进入统一的 NormalizedPlan → Metrics → Hotspots / Findings → Plan Tree / Node Inspector 链路。
  • 跨数据库抽象得到验证:本轮没有为 OceanBase Oracle 修改公共 IR、Metrics 引擎或规则引擎,也没有新增数据库条件分支(database === "oceanbase-oracle" 仅出现在 2 处明确的 engine-aware 位置:Hotspot 的 source 标签与代价说明文案)。NormalizedPlan 字段、Metrics 语义与 3 条既有规则均未变化。
  • 代价语义保持诚实:EST.TIME(us) / COST 属于 OceanBase 自己的估算模型,不映射到 PostgreSQL 语义的 startupCost / totalCost;costAttribution.status = "not-applicable",不生成任何代价占比信号。
  • Hotspot / Findings 保持克制:不新增 OceanBase 专属规则,直接复用既有行数信号(large-sequential-scan / nested-loop-amplification,source 标为 EST.ROWS);expensive-sort 因无 PostgreSQL 代价数据保持静默;文案继续强调 Estimated Plan ≠ runtime fact。
  • Fail-soft:未知算子保留节点、原始标签与完整子树;未知 / 未验证的扩展键(filter / access / range_key / ...)原样保留在 engineSpecific.extra,不提升为中立谓词;缺字段为 null;根对象不是计划节点时才 MALFORMED_PLAN。
  • 降级路径:宿主 plan_not_json 降级为 format: "text" 时,OceanBase Oracle 仍只展示 Raw Plan(UNSUPPORTED_FORMAT),不猜文本计划。
  • 支持矩阵:PostgreSQL / MySQL / SQL Server / OceanBase Oracle = Structured;Oracle / Doris / Dameng / QuestDB = Raw Plan。

安装

  1. 下载下方 .dbxp(universal,未签名 review candidate)。
  2. 打开 DBX → 插件中心 → 第三方与开发者选项,开启「允许安装未签名开发包」。
  3. 选择下载的 .dbxp 安装。

运行要求:DBX >=0.6.18(Host API ^1.2,权限 host.plans:read)。

验证

  • npm test:1019/1019 passed(基线 870/870,新增 149:OceanBase parser / normalizer / fixture+golden / analysis / view-model)。
  • npm run build:DBX_UI_BUILD_SUCCESS;ui/ 发布产物已随源码重新构建入库。
  • dbx-plugin package .:本地 unsigned universal candidate 生成成功;既有 48 个 golden(PostgreSQL / MySQL / SQL Server)未变化。
  • Fixture:新增 12 个 OceanBase Oracle fixture + golden,其中 1 个为 OceanBase 官方 Oracle 模式 EXPLAIN 文档(V4.3.5)中的 JSON 示例,11 个为 synthetic(本机无 OceanBase 实例,provenance 见 fixtures/oceanbase-oracle/README.md;未在真实 OceanBase 上回放)。
  • Host Smoke:NOT RUN —— 真实 DBX + Windows 安装与 OceanBase Oracle 计划验证由维护者手工执行。

说明

  • 本包为未签名候选包;不包含 Actual Plan、Plan Diff、AI 接入、数据库 Driver,也不包含 Oracle / Dameng / Doris / QuestDB 的结构化 parser。
  • 兼容性:manifest.json 仅版本号变化(0.6.1 → 0.6.2),engines 与 permissions 未变化;既有 PostgreSQL / MySQL / SQL Server 行为与 golden 未变化。
  • 人工验收建议 SQL:SELECT * FROM t1, t2 WHERE t1.c2 = t2.c2 AND t2.c1 > 4;、SELECT COUNT(*) FROM t1;、SELECT * FROM t1 WHERE c1 = 1;(配合索引可验证 TABLE RANGE SCAN)。

Plan Detective v0.6.1

Choose a tag to compare

@0verme 0verme released this 22 Sep 07:59
3eb8c37

亮点

  • Hotspot 可读性增强(Issue #42 / PR #43):每个 Hotspot reason 在保留原始 node label / statement / code / source / Evidence 的同时,新增 zh-CN / en 自然语言摘要与克制的 caveat;未知 reason code 优雅回退,不隐藏 Hotspot,也不修改检测规则、阈值与 severity 语义。
  • 复制 AI 分析提示词(Issue #42 / PR #43):分析成功后可在成功状态栏一键复制本地生成的结构化 Prompt(Database Context / SQL / Plan Summary / Findings / Hotspots / Evidence 节选 + 语义约束与回答结构),由用户自行粘贴到外部 AI 工具。优先走 DBX host.copy,降级 navigator.clipboard,失败有明确反馈。
  • 隐私边界:插件不调用任何 AI 服务、不新增网络请求、不新增 API Key / 模型配置,也不自动发送 SQL / Plan;仅本地字符串打包 + 本地复制。

安装

  1. 下载下方 .dbxp(universal,未签名 review candidate)。
  2. 打开 DBX → 插件中心 → 第三方与开发者选项,开启「允许安装未签名开发包」。
  3. 选择下载的 .dbxp 安装。

运行要求:DBX >=0.6.18(Host API ^1.2,权限 host.plans:read)。

验证

  • npm test:870/870 passed;npm run build:DBX_UI_BUILD_SUCCESS。
  • ui/ 发布产物已随源码重新构建入库。
  • Host Smoke:NOT RUN —— 真实 DBX + Windows 安装与 Issue #42 功能(Hotspot 人话解释 / 复制 Prompt / clipboard fallback)验证由维护者手工执行。

说明

  • 本包为未签名候选包;不包含 AI API 集成、SQL 自动改写、自动索引建议或 SQL 脱敏。
  • DBX Store 收录:PR #112(v0.5.4)已签名发布;Release Sync 注册 PR #132 仍等待 maintainer review。

Plan Detective v0.6.0

Choose a tag to compare

@0verme 0verme released this 22 Sep 05:49
1a1d8c0

亮点

  • SQL Server ShowPlanXML 结构化解析(Phase 3.1):DBX Host 返回 format: "xml" 的 Estimated Plan 现在进入结构化分析,支持 Plan Tree / Metrics / Hotspots / Findings,并保留 ShowPlanXML 专有代价与对象信息(PR #37)。
  • MySQL data_read_per_join 修复(Issue #38):支持 MySQL human_readable_num_bytes() 的 data-size 格式(如 "167K" / "1M"),按 1024 进制归一化为 byte 数值,真实 MySQL 计划不再出现 PLAN PARSE FAILED(PR #39)。

安装

  1. 下载下方 .dbxp(universal,未签名 review candidate)。
  2. 打开 DBX → 插件中心 → 第三方与开发者选项,开启「允许安装未签名开发包」。
  3. 选择下载的 .dbxp 安装。

运行要求:DBX >=0.6.18(Host API ^1.2,权限 host.plans:read)。

验证

  • npm test:835/835 passed;npm run build:DBX_UI_BUILD_SUCCESS。
  • ui/ 发布产物已随源码重新构建入库。
  • Host Smoke:NOT RUN —— 真实 DBX + Windows 安装与真实 MySQL data-size 计划验证由维护者手工执行。

说明

  • 本包为未签名候选包;DBX Store 收录 PR #112 仍针对 v0.5.4,本 release 未提交 Store signing。

DBX Plan Detective v0.5.4

Choose a tag to compare

@0verme 0verme released this 21 Sep 07:32
c2d1a5d

变更

  • Plan Detective 0.5.3 → 0.5.4
  • 最低 DBX 宿主版本 >=0.6.18
  • Host API ^1.2
  • Permission host.plans:read

这是一个仅修正宿主兼容性声明的 patch release,不包含功能变化。

DBX v0.6.18 正式包含插件 Host API 的只读 Estimated Plan 获取能力,对应上游 t8y2/dbx#9692。因此本插件最低宿主版本收紧为 DBX >=0.6.18。

本 Release 由现有 Release workflow 生成 unsigned universal candidate package。

DBX Plan Detective v0.5.3

Choose a tag to compare

@0verme 0verme released this 21 Sep 06:46
0506da7

变更内容

  • 更新 Plan Detective 插件图标。
  • 新图标采用“放大镜 + Execution Plan Tree”的视觉语义。
  • manifest.json 与 workbench contribution 继续使用 assets/plugin.svg。
  • 版本更新至 0.5.3。

验证

  • npm test:629/629 通过。
  • npm run build:通过,输出 DBX_UI_BUILD_SUCCESS。
  • dbx-plugin package .:本地打包通过;包内确认包含 assets/plugin.svg。
  • 未运行真实 DBX Host Smoke;当前 NAS/Linux 环境无真实 DBX Desktop Host。

边界

  • 未修改插件功能。
  • 本 Release 未修改 t8y2/dbx。
  • 本轮不创建 DBX Store candidate,不修改 t8y2/dbx-store。