[
https://issues.apache.org/jira/browse/PHOENIX-7902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Kyle Purtell updated PHOENIX-7902:
-----------------------------------------
Description: Replace the two opaque per-scan markers {{SERVER ARRAY ELEMENT
PROJECTION}} and {{SERVER JSON FUNCTION PROJECTION}} with per-type clauses
{{SERVER ARRAY PROJECTION <count>}}, {{SERVER JSON PROJECTION <count>}}, and
{{SERVER BSON PROJECTION <count>}} emitted only when at least one path
expression of the corresponding type is pushed server-side, and each followed
by one indented detail line per expression in the function-call form
({{Expression.toString()}} indented to the next level).
{{ProjectionCompiler.compileSelectClause}} stashes the per-attribute expression
buckets (the {{serverAttributeToFuncExpressionMap}} it already builds before
scan serialization) on {{StatementContext}} as {{serverParsedProjections :
Map<String, List<Expression>>}} keyed by scan attribute name.
{{ExplainTable.explain(...)}} replaces the existing code with new code that
processes "ARRAY", "JSON", and "BSON" buckets, emits the counted header, and
the additional indented detail lines. {{ExplainPlanAttributes}} retires the
{{serverArrayElementProjection}} boolean and adds a {{serverParsedProjections:
Map<String,List<String>>}} map, with up to three buckets ("ARRAY", "JSON", and
"BSON" ) each holding a {{List<String>}}, with matching {{ExplainPlanTestUtil}}
fluent assertion getters, setters, and testers.
> SERVER ARRAY|JSON|BSON PROJECTION counted forms in EXPLAIN
> ----------------------------------------------------------
>
> Key: PHOENIX-7902
> URL: https://issues.apache.org/jira/browse/PHOENIX-7902
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Major
> Fix For: PHOENIX-7876-feature
>
>
> Replace the two opaque per-scan markers {{SERVER ARRAY ELEMENT PROJECTION}}
> and {{SERVER JSON FUNCTION PROJECTION}} with per-type clauses {{SERVER ARRAY
> PROJECTION <count>}}, {{SERVER JSON PROJECTION <count>}}, and {{SERVER BSON
> PROJECTION <count>}} emitted only when at least one path expression of the
> corresponding type is pushed server-side, and each followed by one indented
> detail line per expression in the function-call form
> ({{Expression.toString()}} indented to the next level).
> {{ProjectionCompiler.compileSelectClause}} stashes the per-attribute
> expression buckets (the {{serverAttributeToFuncExpressionMap}} it already
> builds before scan serialization) on {{StatementContext}} as
> {{serverParsedProjections : Map<String, List<Expression>>}} keyed by scan
> attribute name. {{ExplainTable.explain(...)}} replaces the existing code with
> new code that processes "ARRAY", "JSON", and "BSON" buckets, emits the
> counted header, and the additional indented detail lines.
> {{ExplainPlanAttributes}} retires the {{serverArrayElementProjection}}
> boolean and adds a {{serverParsedProjections: Map<String,List<String>>}} map,
> with up to three buckets ("ARRAY", "JSON", and "BSON" ) each holding a
> {{List<String>}}, with matching {{ExplainPlanTestUtil}} fluent assertion
> getters, setters, and testers.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)