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"() {