Index: ql/src/test/results/clientpositive/input11_limit.q.out =================================================================== --- ql/src/test/results/clientpositive/input11_limit.q.out (revision 132828) +++ ql/src/test/results/clientpositive/input11_limit.q.out (working copy) @@ -21,12 +21,24 @@ expr: value type: string Limit - File Output Operator - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe - name: dest1 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: 0 + type: string + expr: 1 + type: string + # Reducers: 1 + Reduce Operator Tree: + Extract + Limit + File Output Operator + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe + name: dest1 Stage: Stage-0 Move Operator Index: ql/src/test/results/clientpositive/input1_limit.q.out =================================================================== --- ql/src/test/results/clientpositive/input1_limit.q.out (revision 132828) +++ ql/src/test/results/clientpositive/input1_limit.q.out (working copy) @@ -3,7 +3,9 @@ STAGE DEPENDENCIES: Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-1, Stage-2 + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-1, Stage-2 STAGE PLANS: Stage: Stage-1 @@ -21,12 +23,14 @@ expr: value type: string Limit - File Output Operator - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe - name: dest1 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: 0 + type: string + expr: 1 + type: string Filter Operator predicate: expr: (key < 100) @@ -40,10 +44,19 @@ Limit File Output Operator table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe - name: dest2 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.mapred.SequenceFileOutputFormat + name: binary_table + # Reducers: 1 + Reduce Operator Tree: + Extract + Limit + File Output Operator + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe + name: dest1 Stage: Stage-0 Move Operator @@ -61,7 +74,30 @@ serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe name: dest2 + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + /tmp/hive-njain/153468547/613626322.10002 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: 0 + type: string + expr: 1 + type: string + # Reducers: 1 + Reduce Operator Tree: + Extract + Limit + File Output Operator + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe + name: dest2 + 86 val_86 27 val_27 98 val_98 Index: ql/src/test/results/clientpositive/groupby1_limit.q.out =================================================================== --- ql/src/test/results/clientpositive/groupby1_limit.q.out (revision 132828) +++ ql/src/test/results/clientpositive/groupby1_limit.q.out (working copy) @@ -4,7 +4,8 @@ STAGE DEPENDENCIES: Stage-1 is a root stage Stage-2 depends on stages: Stage-1 - Stage-0 depends on stages: Stage-2 + Stage-3 depends on stages: Stage-2 + Stage-0 depends on stages: Stage-3 STAGE PLANS: Stage: Stage-1 @@ -40,7 +41,7 @@ Stage: Stage-2 Map Reduce Alias -> Map Operator Tree: - /tmp/hive-zshao/1303599869/24932739.10001 + /tmp/hive-njain/204678853/68624415.10002 Reduce Output Operator key expressions: expr: 0 @@ -70,11 +71,33 @@ Limit File Output Operator table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat - serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe - name: dest1 + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.mapred.SequenceFileOutputFormat + name: binary_table + Stage: Stage-3 + Map Reduce + Alias -> Map Operator Tree: + /tmp/hive-njain/204678853/68624415.10001 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: 0 + type: string + expr: 1 + type: double + # Reducers: 1 + Reduce Operator Tree: + Extract + Limit + File Output Operator + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe + name: dest1 + Stage: Stage-0 Move Operator tables: Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 132828) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -2012,6 +2012,7 @@ // Add the limit operator to get the value fields Operator curr = genLimitPlan(dest, qb, input, limit); + // If it is a outer most query, the exact limit is applied by the fetch task if (isOuterQuery) return curr; @@ -2587,7 +2588,7 @@ curr = genConversionOps(dest, qb, curr); // exact limit can be taken care of by the fetch operator if (limit != null) { - curr = genLimitMapRedPlan(dest, qb, curr, limit.intValue(), true); + curr = genLimitMapRedPlan(dest, qb, curr, limit.intValue(), qb.getIsQuery()); qb.getParseInfo().setOuterQueryLimit(limit.intValue()); } curr = genFileSinkPlan(dest, qb, curr);