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: [email protected]
For additional commands, e-mail: [email protected]