You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2018/04/06 19:43:33 UTC
hive git commit: HIVE-19112: Support Analyze table for partitioned
tables without partition spec (Vineet Garg, reviewed by Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master 6df4d6f04 -> 4931805c1
HIVE-19112: Support Analyze table for partitioned tables without partition spec (Vineet Garg, 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/4931805c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4931805c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4931805c
Branch: refs/heads/master
Commit: 4931805c172a7099f42226183025d480e7768fa0
Parents: 6df4d6f
Author: Vineet Garg <vg...@apache.org>
Authored: Fri Apr 6 12:43:10 2018 -0700
Committer: Vineet Garg <vg...@apache.org>
Committed: Fri Apr 6 12:43:10 2018 -0700
----------------------------------------------------------------------
.../hive/ql/parse/BaseSemanticAnalyzer.java | 23 +++++++++++++-------
ql/src/test/queries/clientnegative/analyze.q | 1 -
.../queries/clientpositive/analyze_tbl_part.q | 3 +++
.../test/results/clientnegative/analyze.q.out | 1 -
.../clientpositive/analyze_tbl_part.q.out | 18 +++++++++++++++
5 files changed, 36 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/4931805c/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
index 3e8e1b3..5301b2a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
@@ -1453,6 +1453,19 @@ public abstract class BaseSemanticAnalyzer {
}
}
+ private boolean createDynPartSpec(ASTNode ast) {
+ if(ast.getToken().getType() != HiveParser.TOK_CREATETABLE &&
+ ast.getToken().getType() != HiveParser.TOK_CREATE_MATERIALIZED_VIEW &&
+ ast.getToken().getType() != HiveParser.TOK_ALTER_MATERIALIZED_VIEW &&
+ tableHandle.getPartitionKeys().size() > 0
+ && (ast.getParent() != null && (ast.getParent().getType() == HiveParser.TOK_INSERT_INTO
+ || ast.getParent().getType() == HiveParser.TOK_INSERT)
+ || ast.getParent().getType() == HiveParser.TOK_DESTINATION
+ || ast.getParent().getType() == HiveParser.TOK_ANALYZE)) {
+ return true;
+ }
+ return false;
+ }
public TableSpec(Hive db, HiveConf conf, ASTNode ast, boolean allowDynamicPartitionsSpec,
boolean allowPartialPartitionsSpec) throws SemanticException {
assert (ast.getToken().getType() == HiveParser.TOK_TAB
@@ -1574,15 +1587,9 @@ public abstract class BaseSemanticAnalyzer {
}
specType = SpecType.STATIC_PARTITION;
}
- } else if(ast.getToken().getType() != HiveParser.TOK_CREATETABLE &&
- ast.getToken().getType() != HiveParser.TOK_CREATE_MATERIALIZED_VIEW &&
- ast.getToken().getType() != HiveParser.TOK_ALTER_MATERIALIZED_VIEW &&
- tableHandle.getPartitionKeys().size() > 0 && allowDynamicPartitionsSpec
- && (ast.getParent() != null && (ast.getParent().getType() == HiveParser.TOK_INSERT_INTO
- || ast.getParent().getType() == HiveParser.TOK_INSERT)
- || ast.getParent().getType() == HiveParser.TOK_DESTINATION)) {
+ } else if(createDynPartSpec(ast) && allowDynamicPartitionsSpec) {
// if user hasn't specify partition spec generate it from table's partition spec
- // do this only if it is INSERT/INSERT INTO/INSERT OVERWRITE
+ // do this only if it is INSERT/INSERT INTO/INSERT OVERWRITE/ANALYZE
List<FieldSchema> parts = tableHandle.getPartitionKeys();
partSpec = new LinkedHashMap<String, String>(parts.size());
for (FieldSchema fs : parts) {
http://git-wip-us.apache.org/repos/asf/hive/blob/4931805c/ql/src/test/queries/clientnegative/analyze.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientnegative/analyze.q b/ql/src/test/queries/clientnegative/analyze.q
deleted file mode 100644
index 874f5bf..0000000
--- a/ql/src/test/queries/clientnegative/analyze.q
+++ /dev/null
@@ -1 +0,0 @@
-analyze table srcpart compute statistics;
http://git-wip-us.apache.org/repos/asf/hive/blob/4931805c/ql/src/test/queries/clientpositive/analyze_tbl_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/analyze_tbl_part.q b/ql/src/test/queries/clientpositive/analyze_tbl_part.q
index 54e816a..e8010bd 100644
--- a/ql/src/test/queries/clientpositive/analyze_tbl_part.q
+++ b/ql/src/test/queries/clientpositive/analyze_tbl_part.q
@@ -28,3 +28,6 @@ select * from src1;
ANALYZE TABLE src_stat_string_part partition (partitionName="p\'1") COMPUTE STATISTICS for columns key, value;
ANALYZE TABLE src_stat_string_part partition (partitionName="p\"1") COMPUTE STATISTICS for columns key, value;
+
+-- analyze table without specifying partition spec
+ANALYZE TABLE src_stat_string_part COMPUTE STATISTICS for columns key, value;
http://git-wip-us.apache.org/repos/asf/hive/blob/4931805c/ql/src/test/results/clientnegative/analyze.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/analyze.q.out b/ql/src/test/results/clientnegative/analyze.q.out
deleted file mode 100644
index 94079c9..0000000
--- a/ql/src/test/results/clientnegative/analyze.q.out
+++ /dev/null
@@ -1 +0,0 @@
-FAILED: SemanticException [Error 10115]: Table is partitioned and partition specification is needed
http://git-wip-us.apache.org/repos/asf/hive/blob/4931805c/ql/src/test/results/clientpositive/analyze_tbl_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/analyze_tbl_part.q.out b/ql/src/test/results/clientpositive/analyze_tbl_part.q.out
index 5899ab2..c2380ee 100644
--- a/ql/src/test/results/clientpositive/analyze_tbl_part.q.out
+++ b/ql/src/test/results/clientpositive/analyze_tbl_part.q.out
@@ -180,3 +180,21 @@ POSTHOOK: Input: default@src_stat_string_part@partitionname=p%221
POSTHOOK: Output: default@src_stat_string_part
POSTHOOK: Output: default@src_stat_string_part@partitionname=p%221
#### A masked pattern was here ####
+PREHOOK: query: ANALYZE TABLE src_stat_string_part COMPUTE STATISTICS for columns key, value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src_stat_string_part
+PREHOOK: Input: default@src_stat_string_part@partitionname=p%221
+PREHOOK: Input: default@src_stat_string_part@partitionname=p%271
+PREHOOK: Output: default@src_stat_string_part
+PREHOOK: Output: default@src_stat_string_part@partitionname=p%221
+PREHOOK: Output: default@src_stat_string_part@partitionname=p%271
+#### A masked pattern was here ####
+POSTHOOK: query: ANALYZE TABLE src_stat_string_part COMPUTE STATISTICS for columns key, value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src_stat_string_part
+POSTHOOK: Input: default@src_stat_string_part@partitionname=p%221
+POSTHOOK: Input: default@src_stat_string_part@partitionname=p%271
+POSTHOOK: Output: default@src_stat_string_part
+POSTHOOK: Output: default@src_stat_string_part@partitionname=p%221
+POSTHOOK: Output: default@src_stat_string_part@partitionname=p%271
+#### A masked pattern was here ####