diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java index efc2542..4f19caf 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java @@ -451,7 +451,11 @@ OpAttr visit(HiveSort sortRel) throws SemanticException { if (sortRel.fetch != null) { int limit = RexLiteral.intValue(sortRel.fetch); LimitDesc limitDesc = new LimitDesc(limit); - // TODO: Set 'last limit' global property + // Because we are visiting the operators recursively, the last limit op that + // calls the following function will set the global property. + if (this.semanticAnalyzer != null && semanticAnalyzer.getQB() != null + && semanticAnalyzer.getQB().getParseInfo() != null) + this.semanticAnalyzer.getQB().getParseInfo().setOuterQueryLimit(limit); ArrayList cinfoLst = createColInfos(inputOp); resultOp = OperatorFactory.getAndMakeChild(limitDesc, new RowSchema(cinfoLst), resultOp);