[ 
https://issues.apache.org/jira/browse/PHOENIX-7903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Kyle Purtell updated PHOENIX-7903:
-----------------------------------------
    Description: Disclose {{OptimizerReasons}} for functional indexes. The 
chosen functional index's per-scan {{INDEX}} line gains the rule {{matches 
<expr>}} where {{<expr>}} is the user's path expression. Candidates discarded 
because no query expression matched their indexed expression are tagged {{path 
expression does not match}}. {{QueryOptimizer.recordDecision}}, 
{{labelComparatorRule}}, and the {{RULE_ONLY_CANDIDATE}} path in 
{{getApplicablePlansForSingleFlatQuery}} override the rule label with 
{{OptimizerReasons.matches(sourceExpression.toString())}} when the winning 
candidate is a functional index, sourcing {{sourceExpression}} from  
{{StatementContext.getIndexExpressionSubstitutions()}} of the winning index. 
{{QueryOptimizer.addPlan}} and {{tagComparatorRejections}} switch the rejection 
tag for functional index candidates to 
{{REASON_PATH_EXPRESSION_DOES_NOT_MATCH}}. A functional index is detected by an 
index column with a non-null {{PColumn.getExpressionStr()}}.

> Functional index match rule EXPLAIN disclosure
> ----------------------------------------------
>
>                 Key: PHOENIX-7903
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7903
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Andrew Kyle Purtell
>            Assignee: Andrew Kyle Purtell
>            Priority: Major
>             Fix For: PHOENIX-7876-feature
>
>
> Disclose {{OptimizerReasons}} for functional indexes. The chosen functional 
> index's per-scan {{INDEX}} line gains the rule {{matches <expr>}} where 
> {{<expr>}} is the user's path expression. Candidates discarded because no 
> query expression matched their indexed expression are tagged {{path 
> expression does not match}}. {{QueryOptimizer.recordDecision}}, 
> {{labelComparatorRule}}, and the {{RULE_ONLY_CANDIDATE}} path in 
> {{getApplicablePlansForSingleFlatQuery}} override the rule label with 
> {{OptimizerReasons.matches(sourceExpression.toString())}} when the winning 
> candidate is a functional index, sourcing {{sourceExpression}} from  
> {{StatementContext.getIndexExpressionSubstitutions()}} of the winning index. 
> {{QueryOptimizer.addPlan}} and {{tagComparatorRejections}} switch the 
> rejection tag for functional index candidates to 
> {{REASON_PATH_EXPRESSION_DOES_NOT_MATCH}}. A functional index is detected by 
> an index column with a non-null {{PColumn.getExpressionStr()}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to