diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java index 06b7c93af3..64f9c70f05 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java @@ -112,6 +112,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx opProcCtx, // The MR task is just a simple TableScanOperator BasicStatsWork statsWork = new BasicStatsWork(table.getTableSpec()); + statsWork.setIsExplicitAnalyze(true); statsWork.setNoScanAnalyzeCommand(noScan); StatsWork columnStatsWork = new StatsWork(table, statsWork, parseCtx.getConf()); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java index 5961059be2..03cceace40 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java @@ -115,6 +115,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procContext, // The Tez task is just a simple TableScanOperator BasicStatsWork basicStatsWork = new BasicStatsWork(table.getTableSpec()); + basicStatsWork.setIsExplicitAnalyze(true); basicStatsWork.setNoScanAnalyzeCommand(parseContext.getQueryProperties().isNoScanAnalyzeCommand()); StatsWork columnStatsWork = new StatsWork(table, basicStatsWork, parseContext.getConf()); columnStatsWork.collectStatsFromAggregator(tableScan.getConf()); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java index c268ddc879..df1d9cb6d8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java @@ -392,6 +392,7 @@ private String extractTableFullName(StatsTask tsk) throws SemanticException { return TaskFactory.get(columnStatsWork); } else { BasicStatsWork statsWork = new BasicStatsWork(tableScan.getConf().getTableMetadata().getTableSpec()); + statsWork.setIsExplicitAnalyze(true); StatsWork columnStatsWork = new StatsWork(table, statsWork, parseContext.getConf()); columnStatsWork.collectStatsFromAggregator(tableScan.getConf()); columnStatsWork.setSourceTask(currentTask); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java index e81d6f35f6..28d4de7f7b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java @@ -123,6 +123,7 @@ public Object process(Node nd, Stack stack, // The Spark task is just a simple TableScanOperator BasicStatsWork basicStatsWork = new BasicStatsWork(table.getTableSpec()); + basicStatsWork.setIsExplicitAnalyze(true); basicStatsWork.setNoScanAnalyzeCommand(parseContext.getQueryProperties().isNoScanAnalyzeCommand()); StatsWork columnStatsWork = new StatsWork(table, basicStatsWork, parseContext.getConf()); columnStatsWork.collectStatsFromAggregator(tableScan.getConf()); diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/BasicStatsWork.java ql/src/java/org/apache/hadoop/hive/ql/plan/BasicStatsWork.java index 55d05a1dd9..40def601e6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/BasicStatsWork.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/BasicStatsWork.java @@ -33,6 +33,7 @@ public class BasicStatsWork implements Serializable { private static final long serialVersionUID = 1L; + private boolean isExplicitAnalyze; private TableSpec tableSpecs; // source table spec -- for TableScanOperator private LoadTableDesc loadTableDesc; // same as MoveWork.loadTableDesc -- for FileSinkOperator private LoadFileDesc loadFileDesc; // same as MoveWork.loadFileDesc -- for FileSinkOperator @@ -164,7 +165,7 @@ public void setFollowedByColStats1(boolean isFollowedByColStats) { public boolean isExplicitAnalyze() { // ANALYZE TABLE - return (getTableSpecs() != null); + return isExplicitAnalyze; } public boolean isTargetRewritten() { // ANALYZE TABLE @@ -202,4 +203,8 @@ public String getTableName() { } } + public void setIsExplicitAnalyze(boolean b) { + this.isExplicitAnalyze = b; + } + }