[
https://issues.apache.org/jira/browse/IMPALA-12770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17813416#comment-17813416
]
Wenzhe Zhou commented on IMPALA-12770:
--------------------------------------
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]