You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by px...@apache.org on 2016/11/08 22:57:19 UTC

hive git commit: HIVE-15023: SimpleFetchOptimizer needs to optimize limit=0 (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master 3f0c146e1 -> 4aae400b5


HIVE-15023: SimpleFetchOptimizer needs to optimize limit=0 (Pengcheng Xiong, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4aae400b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4aae400b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4aae400b

Branch: refs/heads/master
Commit: 4aae400b507bf67e159697a87073a06268cce7b8
Parents: 3f0c146
Author: Pengcheng Xiong <px...@apache.org>
Authored: Tue Nov 8 14:57:09 2016 -0800
Committer: Pengcheng Xiong <px...@apache.org>
Committed: Tue Nov 8 14:57:09 2016 -0800

----------------------------------------------------------------------
 .../hive/ql/optimizer/SimpleFetchOptimizer.java |  4 ++
 ql/src/test/queries/clientpositive/limit0.q     |  4 ++
 .../clientpositive/annotate_stats_limit.q.out   | 12 +-----
 ql/src/test/results/clientpositive/limit0.q.out | 44 ++++++++++++++++++++
 .../clientpositive/llap/limit_pushdown.q.out    |  9 +---
 .../clientpositive/llap/limit_pushdown3.q.out   |  9 +---
 .../llap/offset_limit_ppd_optimizer.q.out       |  9 +---
 .../tez/vectorization_limit.q.out               |  9 +---
 .../clientpositive/vectorization_limit.q.out    | 12 +-----
 9 files changed, 58 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
index a68ceb4..4239c90 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
@@ -136,6 +136,10 @@ public class SimpleFetchOptimizer extends Transform {
 
     boolean aggressive = "more".equals(mode);
     final int limit = pctx.getQueryProperties().getOuterQueryLimit();
+    // limit = 0 means that we do not need any task.
+    if (limit == 0) {
+      return null;
+    }
     FetchData fetch = checkTree(aggressive, pctx, alias, source);
     if (fetch != null && checkThreshold(fetch, limit, pctx)) {
       FetchWork fetchWork = fetch.convertToWork();

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/queries/clientpositive/limit0.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/limit0.q b/ql/src/test/queries/clientpositive/limit0.q
index b4f48a3..5d3fa9c 100644
--- a/ql/src/test/queries/clientpositive/limit0.q
+++ b/ql/src/test/queries/clientpositive/limit0.q
@@ -1,7 +1,11 @@
+explain select key from src limit 0;
+explain select key from src where key = '238' limit 0;
 explain select * from src where key = '238' limit 0;
 explain select src.key, count(src.value) from src group by src.key limit 0;
 explain select * from ( select key from src limit 3) sq1 limit 0;
 
+select key from src limit 0;
+select key from src where key = '238' limit 0;
 select * from src where key = '238' limit 0;
 select src.key, count(src.value) from src group by src.key limit 0;
 select * from ( select key from src limit 3) sq1 limit 0;  

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/annotate_stats_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/annotate_stats_limit.q.out b/ql/src/test/results/clientpositive/annotate_stats_limit.q.out
index 2610eb1..04c097b 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_limit.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_limit.q.out
@@ -151,15 +151,5 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: loc_orc
-          Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
-          Select Operator
-            expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: int)
-            outputColumnNames: _col0, _col1, _col2, _col3
-            Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
-            Limit
-              Number of rows: 0
-              Statistics: Num rows: 1 Data size: 102 Basic stats: COMPLETE Column stats: COMPLETE
-              ListSink
+        ListSink
 

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/limit0.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/limit0.q.out b/ql/src/test/results/clientpositive/limit0.q.out
index 3f08bdd..2a33b4d 100644
--- a/ql/src/test/results/clientpositive/limit0.q.out
+++ b/ql/src/test/results/clientpositive/limit0.q.out
@@ -1,3 +1,31 @@
+PREHOOK: query: explain select key from src limit 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from src limit 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: 0
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select key from src where key = '238' limit 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from src where key = '238' limit 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: 0
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: explain select * from src where key = '238' limit 0
 PREHOOK: type: QUERY
 POSTHOOK: query: explain select * from src where key = '238' limit 0
@@ -40,6 +68,22 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: select key from src limit 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select key from src limit 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+PREHOOK: query: select key from src where key = '238' limit 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select key from src where key = '238' limit 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
 PREHOOK: query: select * from src where key = '238' limit 0
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/llap/limit_pushdown.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/limit_pushdown.q.out b/ql/src/test/results/clientpositive/llap/limit_pushdown.q.out
index 507791e..3fe4837 100644
--- a/ql/src/test/results/clientpositive/llap/limit_pushdown.q.out
+++ b/ql/src/test/results/clientpositive/llap/limit_pushdown.q.out
@@ -778,14 +778,7 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: src
-          Select Operator
-            expressions: key (type: string), value (type: string)
-            outputColumnNames: _col0, _col1
-            Limit
-              Number of rows: 0
-              ListSink
+        ListSink
 
 PREHOOK: query: select key,value from src order by key limit 0
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out b/ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out
index 9297b0e..229f35a 100644
--- a/ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out
+++ b/ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out
@@ -853,14 +853,7 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: src
-          Select Operator
-            expressions: key (type: string), value (type: string)
-            outputColumnNames: _col0, _col1
-            Limit
-              Number of rows: 0
-              ListSink
+        ListSink
 
 PREHOOK: query: select key,value from src order by key limit 0
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out b/ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out
index 36c2604..f56318d 100644
--- a/ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out
+++ b/ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out
@@ -778,14 +778,7 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: src
-          Select Operator
-            expressions: key (type: string), value (type: string)
-            outputColumnNames: _col0, _col1
-            Limit
-              Number of rows: 0
-              ListSink
+        ListSink
 
 PREHOOK: query: select key,value from src order by key limit 0,0
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
index 87d4c70..71e470b 100644
--- a/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
+++ b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
@@ -434,14 +434,7 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: alltypesorc
-          Select Operator
-            expressions: ctinyint (type: tinyint), cdouble (type: double)
-            outputColumnNames: _col0, _col1
-            Limit
-              Number of rows: 0
-              ListSink
+        ListSink
 
 PREHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/4aae400b/ql/src/test/results/clientpositive/vectorization_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vectorization_limit.q.out b/ql/src/test/results/clientpositive/vectorization_limit.q.out
index cebbcdf..eb2a692 100644
--- a/ql/src/test/results/clientpositive/vectorization_limit.q.out
+++ b/ql/src/test/results/clientpositive/vectorization_limit.q.out
@@ -417,17 +417,7 @@ STAGE PLANS:
     Fetch Operator
       limit: 0
       Processor Tree:
-        TableScan
-          alias: alltypesorc
-          Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: NONE
-          Select Operator
-            expressions: ctinyint (type: tinyint), cdouble (type: double)
-            outputColumnNames: _col0, _col1
-            Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: NONE
-            Limit
-              Number of rows: 0
-              Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE
-              ListSink
+        ListSink
 
 PREHOOK: query: select ctinyint,cdouble from alltypesorc order by ctinyint limit 0
 PREHOOK: type: QUERY