Jesus Camacho Rodriguez created HIVE-12662:
----------------------------------------------

             Summary: StackOverflowError in HiveSortJoinReduceRule when limit=0
                 Key: HIVE-12662
                 URL: https://issues.apache.org/jira/browse/HIVE-12662
             Project: Hive
          Issue Type: Bug
    Affects Versions: 2.0.0, 2.1.0
            Reporter: Jesus Camacho Rodriguez
            Assignee: Jesus Camacho Rodriguez


L96 of HiveSortJoinReduceRule, you will see 

{noformat}
    // Finally, if we do not reduce the input size, we bail out
    if (RexLiteral.intValue(sortLimit.fetch)
            >= RelMetadataQuery.getRowCount(reducedInput)) {
      return false;
    }
{noformat}

It is using “ RelMetadataQuery.getRowCount” which is always at least 1. This is 
the problem that we resolved in CALCITE-987.

To confirm this, I just run the q file :

{noformat}
set hive.mapred.mode=nonstrict;
set hive.optimize.limitjointranspose=true;
set hive.optimize.limitjointranspose.reductionpercentage=1f;
set hive.optimize.limitjointranspose.reductiontuples=0;

explain
select *
from src src1 right outer join (
  select *
  from src src2 left outer join src src3
  on src2.value = src3.value) src2
on src1.key = src2.key
limit 0;
{noformat}

  And I got

{noformat}
2015-12-11T10:21:04,435 ERROR [c1efb099-f900-46dc-9f74-97af0944a99d main[]]: 
parse.CalcitePlanner (CalcitePlanner.java:genOPTree(301)) - CBO failed, 
skipping CBO.
java.lang.RuntimeException: java.lang.StackOverflowError
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.rethrowCalciteException(CalcitePlanner.java:749)
 ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.getOptimizedAST(CalcitePlanner.java:645)
 ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:264)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10076)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:223)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:237)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.ExplainSemanticAnalyzer.analyzeInternal(ExplainSemanticAnalyzer.java:74)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:237)
 [hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:456) 
[hive-exec-2.1.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:310) 
[hive-exec-2.1.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1138) 
[hive-exec-2.1.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1187) 
[hive-exec-2.1.0-SNAPSHOT.jar:?]
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1063) 
[hive-exec-2.1.0-SNAPSHOT.jar:?]
{noformat}

via [~pxiong]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to