[ https://issues.apache.org/jira/browse/HIVE-12662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15054331#comment-15054331 ]
Pengcheng Xiong commented on HIVE-12662: ---------------------------------------- LGTM +1. I think we do not have any better solution so far for Hive until next release of Calcite. > 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 > Attachments: HIVE-12662.patch > > > 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)