Wenzhe Zhou created IMPALA-12770:
------------------------------------

             Summary: ExprRewriter enter infinite loop for nested Case 
statements
                 Key: IMPALA-12770
                 URL: https://issues.apache.org/jira/browse/IMPALA-12770
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
            Reporter: Wenzhe Zhou


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: issues-all-unsubscr...@impala.apache.org
For additional commands, e-mail: issues-all-h...@impala.apache.org

Reply via email to