[
https://issues.apache.org/jira/browse/PHOENIX-7919?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Kyle Purtell updated PHOENIX-7919:
-----------------------------------------
Description: {{EXPLAIN (FORMAT JSON) <stmt>}} returns a single VARCHAR cell
whose value is the Jackson serialization of the in-memory
{{ExplainPlanAttributes}} tree. A new {{ExplainJsonRenderer}} owns a private
static {{ObjectWriter}} configured for the EXPLAIN JSON contract and a
{{DefaultPrettyPrinter}} whose {{DefaultIndenter}} is set on both the object
and array indenters, so the output is human readable with two space indentation
for both objects and arrays, {{render(...)}} wraps {{JsonProcessingException}}
as {{SQLException}}.
{{PhoenixStatement#ExecutableExplainStatement.compilePlan}} branches on
{{getOptions().getFormat()}}. {{TEXT}} is unchanged. {{JSON}} skips
{{renderTopOfPlanText}} and emits exactly one row carrying the rendered
document, with the three plan-total estimate cells attached to the first row.
{{regionLocations}} populates under {{(REGIONS, FORMAT JSON)}} and is {{null}}
otherwise.
> Support EXPLAIN FORMAT JSON
> ---------------------------
>
> Key: PHOENIX-7919
> URL: https://issues.apache.org/jira/browse/PHOENIX-7919
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Major
> Fix For: PHOENIX-7876-feature
>
>
> {{EXPLAIN (FORMAT JSON) <stmt>}} returns a single VARCHAR cell whose value is
> the Jackson serialization of the in-memory {{ExplainPlanAttributes}} tree. A
> new {{ExplainJsonRenderer}} owns a private static {{ObjectWriter}} configured
> for the EXPLAIN JSON contract and a {{DefaultPrettyPrinter}} whose
> {{DefaultIndenter}} is set on both the object and array indenters, so the
> output is human readable with two space indentation for both objects and
> arrays, {{render(...)}} wraps {{JsonProcessingException}} as
> {{SQLException}}. {{PhoenixStatement#ExecutableExplainStatement.compilePlan}}
> branches on {{getOptions().getFormat()}}. {{TEXT}} is unchanged. {{JSON}}
> skips {{renderTopOfPlanText}} and emits exactly one row carrying the rendered
> document, with the three plan-total estimate cells attached to the first row.
> {{regionLocations}} populates under {{(REGIONS, FORMAT JSON)}} and is
> {{null}} otherwise.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)