Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 986771179 -> 8425eeb01


AMBARI-20091 : hive20 view : executing analyze table explicitly with analyze 
column (nitirajrathore)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8425eeb0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8425eeb0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8425eeb0

Branch: refs/heads/branch-2.5
Commit: 8425eeb01427c43a4e25ab3403320ad6251b3e4b
Parents: 9867711
Author: Nitiraj Singh Rathore <nitiraj.rath...@gmail.com>
Authored: Thu Mar 2 09:55:41 2017 +0530
Committer: Nitiraj Singh Rathore <nitiraj.rath...@gmail.com>
Committed: Thu Mar 2 09:56:20 2017 +0530

----------------------------------------------------------------------
 .../generators/AnalyzeTableQueryGenerator.java  | 45 +++++++++++---------
 .../AnalyzeTableQueryGeneratorSpecTest.groovy   |  8 ++--
 2 files changed, 29 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8425eeb0/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGenerator.java
----------------------------------------------------------------------
diff --git 
a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGenerator.java
 
b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGenerator.java
index dbe9d43..f69ed9f 100644
--- 
a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGenerator.java
+++ 
b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGenerator.java
@@ -39,37 +39,40 @@ public class AnalyzeTableQueryGenerator implements 
QueryGenerator {
     this.shouldAnalyzeColumns = shouldAnalyzeColumns;
   }
 
+
   @Override
   public Optional<String> getQuery() throws ServiceException {
+    String query = getTableStatsQuery() + ";";
+    if(shouldAnalyzeColumns){
+      query += "\n" + getTableStatsQuery() + " FOR COLUMNS ;";
+    }
+
+    return Optional.of(query);
+  }
+
+  private String getTableStatsQuery() {
     StringBuilder query = new StringBuilder("ANALYZE TABLE " );
     
query.append("`").append(tableMeta.getDatabase()).append("`").append(".").append("`").append(tableMeta.getTable()).append("`");
 
     if( null != tableMeta.getPartitionInfo() && 
!isNullOrEmpty(tableMeta.getPartitionInfo().getColumns())){
       query.append(" PARTITION (")
-           .append(Joiner.on(",")
-              
.join(FluentIterable.from(tableMeta.getPartitionInfo().getColumns())
-                  .transform(
-                  new Function<ColumnInfo, Object>() {
-                    @Nullable
-                    @Override
-                    public Object apply(@Nullable ColumnInfo columnInfo) {
-                      return columnInfo.getName();
-                    }
-                  })
-              )
-           )
-           .append(")");
+        .append(Joiner.on(",")
+          .join(FluentIterable.from(tableMeta.getPartitionInfo().getColumns())
+            .transform(
+              new Function<ColumnInfo, Object>() {
+                @Nullable
+                @Override
+                public Object apply(@Nullable ColumnInfo columnInfo) {
+                  return "`" + columnInfo.getName() + "`";
+                }
+              })
+          )
+        )
+        .append(")");
     }
 
 
     query.append(" COMPUTE STATISTICS ");
-
-    if(shouldAnalyzeColumns){
-      query.append(" FOR COLUMNS ");
-    }
-
-    query.append(";");
-
-    return Optional.of(query.toString());
+    return query.toString();
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/8425eeb0/contrib/views/hive20/src/test/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGeneratorSpecTest.groovy
----------------------------------------------------------------------
diff --git 
a/contrib/views/hive20/src/test/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGeneratorSpecTest.groovy
 
b/contrib/views/hive20/src/test/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGeneratorSpecTest.groovy
index 7bc5850..4387e01 100644
--- 
a/contrib/views/hive20/src/test/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGeneratorSpecTest.groovy
+++ 
b/contrib/views/hive20/src/test/java/org/apache/ambari/view/hive20/internal/query/generators/AnalyzeTableQueryGeneratorSpecTest.groovy
@@ -63,7 +63,8 @@ class AnalyzeTableQueryGeneratorSpecTest extends 
Specification {
     String query = databaseDeleteQuery.get();
 
     then:
-    query == "ANALYZE TABLE `d1`.`t2` PARTITION (col_name4,col_name3) COMPUTE 
STATISTICS  FOR COLUMNS ;"
+    query == "ANALYZE TABLE `d1`.`t2` PARTITION (`col_name4`,`col_name3`) 
COMPUTE STATISTICS ;\n" +
+            "ANALYZE TABLE `d1`.`t2` PARTITION (`col_name4`,`col_name3`) 
COMPUTE STATISTICS  FOR COLUMNS ;"
   }
   def "analyze with partition"() {
     setup:
@@ -105,7 +106,7 @@ class AnalyzeTableQueryGeneratorSpecTest extends 
Specification {
     String query = databaseDeleteQuery.get();
 
     then:
-    query == "ANALYZE TABLE `d1`.`t2` PARTITION (col_name4,col_name3) COMPUTE 
STATISTICS ;"
+    query == "ANALYZE TABLE `d1`.`t2` PARTITION (`col_name4`,`col_name3`) 
COMPUTE STATISTICS ;"
   }
 
   def "analyze without partition"() {
@@ -147,7 +148,8 @@ class AnalyzeTableQueryGeneratorSpecTest extends 
Specification {
     String query = databaseDeleteQuery.get();
 
     then:
-    query == "ANALYZE TABLE `d1`.`t2` COMPUTE STATISTICS  FOR COLUMNS ;"
+    query == "ANALYZE TABLE `d1`.`t2` COMPUTE STATISTICS ;\n" +
+            "ANALYZE TABLE `d1`.`t2` COMPUTE STATISTICS  FOR COLUMNS ;"
   }
 
   def "analyze for table only"() {

Reply via email to