Wire query plan rendering into --plan-format - #96
Merged
Conversation
Extend split-mode --plan-format beyond json/yaml so text and graph renderers run in-process after the query, with flag validation and a TTY refusal for PNG.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extend
--plan-formatfrom JSON/YAML envelopes to text, DOT, Mermaid, D2, SVG, and PNG through the existing in-process renderer. Add format-specific tuning flags, reject inapplicable combinations, and refuse PNG output to a terminal before executing SQL.Rendering shares the prepared command and result-output paths: graph query text comes from the frozen SQL statement, caller cancellation reaches rendering, and renderer errors after committed DML never replay the statement. A completed primary output is published even when rendering fails; the previous plan file remains intact. Read-only CSV and lazy jq retain streaming behavior.
Validation:
go build ./..., fullgo test ./...with the Spanner emulator, and golangci-lint v2.12.2 passed. Tests cover text/graph/image output, TTY and flag validation, frozen SQL file contents, cancellation, and post-commit renderer failure across JSON/YAML/CSV. Managed Spanner and Windows runtime were not tested.