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 ####