[ 
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]

Reply via email to