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