[Feat]: Visual EXPLAIN: save plan snapshots and compare against a baseline
Maintainers usually reply within 1 day
@markankamaransheogarat-sys is already working on this.
Since Nov 6, 2026.
Assessment
This issue has not been assessed yet.
Description
Prerequisites
- I have written a descriptive issue title.
- I have searched existing issues and open pull requests to avoid duplicating an existing feature request.
🚀 Feature Proposal
Save explicit EXPLAIN snapshots with source SQL, qualified connection context, capture time and available engine/version metadata. Select an earlier same-engine snapshot as the baseline and compare parsed operators/metrics with raw-text fallback.
Motivation
An optimization loop needs a durable before/after record, not just the latest plan displayed on screen.
Example
Save a baseline, create an index separately, rerun EXPLAIN and compare the changed scan/join operators with the original.
Acceptance criteria
- Capture snapshots without rerunning SQL implicitly; preserve exact raw output and distinguish estimated from analyzed metrics.
- Show baseline/context identity and incompatibilities; do not compare unlike engine metrics as though their cost units were equivalent.
- Align nodes using a documented heuristic and expose unmatched/ambiguous nodes, metric changes and raw-text fallback.
- Support retention, explicit delete and pin/export behavior with clear treatment of SQL literals and captured plans; no credentials or result rows by default.
- Test structural changes, duplicate operators, unavailable metrics, parser failure and estimated/analyzed mismatch; preserve desktop/web behavior.
Where to start
packages/web-ui/src/components/explain/VisualExplainView.tsxhosts plan views.packages/explain/src/plan.ts,packages/explain/src/metrics.tsandpackages/explain/src/types.tsdescribe plans and metrics.src-tauri/src/explain_import.rsis an existing raw-plan import boundary;src-tauri/src/application/productivity.rshandles adjacent persisted productivity data.
Boundary: comparison of execution plans, distinct from schema comparison #1292, data comparison #21 and full-plan export.
Related proposals: #1400.
Contributor notes
- Follow AGENTS.md and the repository rules. Run GitNexus upstream impact analysis before editing existing symbols and report the blast radius.
- Add new UI strings to every locale under
packages/web-ui/src/i18n/locales/; use design tokens, keyboard access and visible focus. - Keep pure frontend helpers under
packages/web-ui/src/utils/and tests in the matchingpackages/web-ui/tests/paths. Run focused tests, typecheck and relevant repository checks. - Shared backend behavior belongs in
src-tauri/src/application/or plain modules. Keep Tauri code undertransport/desktop/, expose shared web behavior when applicable and preservecargo check --no-default-featuresfromsrc-tauri/for backend changes. - Questions? Ask here or on Discord.
- Dominant language
- TypeScript
- Stars
- 5.1k
- Forks
- 335
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 280
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TabularisDB/tabularis
-
[Feat]: Text viewer: show character, line and UTF-8 byte countsPossibly taken @maxteneff claimed this 1 day ago. Openfeature request good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
TabularisDB/tabularis#1395 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
TabularisDB/tabularis#1434 ·
Maintainers usually reply within 1 day
-
[Bug]: SQLite REAL values of infinity show as NULL in the data gridPossibly taken @markankamaransheogarat-sys claimed this 1 day ago. Open
TabularisDB/tabularis#1433 · 3 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
feature request help wanted
Difficulty 5/5 Over a week Newbie friendliness 38/100
TabularisDB/tabularis#1418 ·
Maintainers usually reply within 1 day
-
[Feat]: SQL editor: reusable snippets with tab-stop placeholdersPossibly taken @markankamaransheogarat-sys claimed this 1 day ago. Openfeature request help wanted
Difficulty 5/5 Over a week Newbie friendliness 35/100
TabularisDB/tabularis#1417 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in TabularisDB/tabularis
Similar issues
-
documentation good first issue roadmap
Difficulty 1/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
resend/react-email#3876 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
siyuan-note/siyuan#21324 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
dmno-dev/varlock#1279 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
himynameisdave/bsky-profanity-counter#59 ·
Maintainers usually reply within 1 day