Aman Sinha created IMPALA-9620:
----------------------------------
Summary: Predicates in the SELECT and GROUP-BY cause failure with
CNF rewrite enabled
Key: IMPALA-9620
URL: https://issues.apache.org/jira/browse/IMPALA-9620
Project: IMPALA
Issue Type: Bug
Components: Frontend
Affects Versions: Impala 3.4.0
Reporter: Aman Sinha
Assignee: Aman Sinha
Predicates can appear in the SELECT and GROUP BY list as part of IF(), CASE()
clauses.
When enable_cnf_rewrites is set to true, such queries encounter failure during
planning as shown below. Queries run successfully when the flag is disabled.
Note that the predicate does not have to be disjunctive predicate for this
failure to occur..even other types of predicates repro the issue.
{noformat}
set enable_cnf_rewrites = true;
select l_quantity, if(l_quantity < 5 or l_quantity > 45, 'invalid', 'valid')
from lineitem group by l_quantity, if(l_quantity < 5 or l_quantity > 45,
'invalid', 'valid') limit 5
ERROR: IllegalStateException: null
{noformat}
Stack trace:
{noformat}
I0407 17:40:40.306650 31240 jni-util.cc:288] 2741e90d2edac592:c625a35f00000000]
java.lang.IllegalStateException
at
com.google.common.base.Preconditions.checkState(Preconditions.java:492)
at org.apache.impala.analysis.SlotRef.getIdsHelper(SlotRef.java:229)
at org.apache.impala.analysis.Expr.getIdsHelper(Expr.java:1286)
at org.apache.impala.analysis.Expr.getIdsHelper(Expr.java:1286)
at org.apache.impala.analysis.Expr.getIds(Expr.java:1279)
at
org.apache.impala.rewrite.ConvertToCNFRule.convertToCNF(ConvertToCNFRule.java:111)
at
org.apache.impala.rewrite.ConvertToCNFRule.apply(ConvertToCNFRule.java:86)
at
org.apache.impala.rewrite.ExprRewriter.applyRuleBottomUp(ExprRewriter.java:85)
at
org.apache.impala.rewrite.ExprRewriter.applyRuleBottomUp(ExprRewriter.java:83)
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.SelectStmt.rewriteCheckOrdinalResult(SelectStmt.java:1043)
at
org.apache.impala.analysis.SelectStmt.rewriteExprs(SelectStmt.java:1068)
at
org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:472)
at
org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:415)
at
org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:1530)
at
org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:1497)
{noformat}
Other variations of the same pattern that also encounter similar failure:
{noformat}
explain select case when not (l_quantity = 5) then 0 else 1 end from lineitem
group by case when not (l_quantity = 5) then 0 else 1 end
ERROR: IllegalStateException: null
{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)