[
https://issues.apache.org/jira/browse/IMPALA-12770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17813416#comment-17813416
]
Wenzhe Zhou edited comment on IMPALA-12770 at 2/2/24 12:14 AM:
---------------------------------------------------------------
In the case, the 'when' are all FALSE in inner case expression so that the
'case' expr is set as NULL for outer case expression. This cause
SimplifyConditionalsRule.simplifyCaseExpr() enter infinite loop.
was (Author: wzhou):
In the case, the inner case expression is re-wrote as NULL ans set the
case-expr as NULL for outer case expression. This cause
SimplifyConditionalsRule.simplifyCaseExpr() enter infinite loop.
> ExprRewriter enter infinite loop for nested Case expressions
> ------------------------------------------------------------
>
> Key: IMPALA-12770
> URL: https://issues.apache.org/jira/browse/IMPALA-12770
> Project: IMPALA
> Issue Type: Bug
> Components: Frontend
> Reporter: Wenzhe Zhou
> Assignee: Wenzhe Zhou
> Priority: Major
>
> ExprRewriter enter infinite loop when run following query with nested Case
> statement:
> {code:java}
> select
> case
> case ''
> when 'abc' then t4.string_col
> end
> when 'none' then 'Total'
> end
> as fcol from functional.alltypes as t4 limit 1;
> {code}
> jstack shows Impala enter infinite loop in ExprRewriter functions:
> {code:java}
> "Thread-16" #39 prio=5 os_prio=0 tid=0x000000000e188000 nid=0x90ec8 runnable
> [0x00007fa8b3d23000]
> java.lang.Thread.State: RUNNABLE
> at org.apache.impala.service.FeSupport.NativeEvalExprsWithoutRow(Native
> Method)
> at
> org.apache.impala.service.FeSupport.EvalExprsWithoutRowBounded(FeSupport.java:261)
> at
> org.apache.impala.service.FeSupport.EvalExprWithoutRowBounded(FeSupport.java:205)
> at
> org.apache.impala.analysis.LiteralExpr.createBounded(LiteralExpr.java:214)
> at
> org.apache.impala.rewrite.FoldConstantsRule.apply(FoldConstantsRule.java:68)
> at
> org.apache.impala.rewrite.ExprRewriter.applyRuleBottomUp(ExprRewriter.java:85)
> at
> org.apache.impala.rewrite.ExprRewriter.applyRuleRepeatedly(ExprRewriter.java:71)
> at org.apache.impala.rewrite.ExprRewriter.rewrite(ExprRewriter.java:55)
> at
> org.apache.impala.rewrite.SimplifyConditionalsRule.simplifyCaseExpr(SimplifyConditionalsRule.java:240)
> at
> org.apache.impala.rewrite.SimplifyConditionalsRule.apply(SimplifyConditionalsRule.java:71)
> at
> org.apache.impala.rewrite.ExprRewriter.applyRuleBottomUp(ExprRewriter.java:85)
> at
> org.apache.impala.rewrite.ExprRewriter.applyRuleRepeatedly(ExprRewriter.java:71)
> at org.apache.impala.rewrite.ExprRewriter.rewrite(ExprRewriter.java:55)
> at org.apache.impala.analysis.SelectList.rewriteExprs(SelectList.java:100)
> at
> org.apache.impala.analysis.SelectStmt.rewriteExprs(SelectStmt.java:1517)
> at
> org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:585)
> at
> org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:492)
> at
> org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2397)
> at org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2144)
> at
> org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1913)
> at
> org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:169)
> {code}
> The issue does not happen if a matching value is found for the inner 'case'
> statement, or adding 'else' for the inner 'case' statement.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]