diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 27efecebf8..b57944d0f0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -14577,6 +14577,11 @@ private boolean queryTypeCanUseCache() { return false; } + // HIVE-19096 - disable for explain analyze + if (ctx.getExplainAnalyze() != null) { + return false; + } + return true; } diff --git a/ql/src/test/queries/clientpositive/results_cache_2.q b/ql/src/test/queries/clientpositive/results_cache_2.q index 96a90925f6..cbead74ae9 100644 --- a/ql/src/test/queries/clientpositive/results_cache_2.q +++ b/ql/src/test/queries/clientpositive/results_cache_2.q @@ -39,3 +39,11 @@ explain select c1, count(*) from (select current_timestamp c1, value from src where key < 10) q group by c1; + +-- Test 4: cache disabled for explain analyze +set test.comment=EXPLAIN ANALYZE should not use the cache. This query just previously used the cache in Test 2; +set test.comment; +explain analyze +select c1, count(*) +from (select sign(value) c1, value from src where key < 10) q +group by c1; diff --git a/ql/src/test/results/clientpositive/results_cache_2.q.out b/ql/src/test/results/clientpositive/results_cache_2.q.out index 40dd71d772..57a55f7778 100644 --- a/ql/src/test/results/clientpositive/results_cache_2.q.out +++ b/ql/src/test/results/clientpositive/results_cache_2.q.out @@ -174,3 +174,77 @@ STAGE PLANS: Processor Tree: ListSink +test.comment=EXPLAIN ANALYZE should not use the cache. This query just previously used the cache in Test 2 +PREHOOK: query: select c1, count(*) +from (select sign(value) c1, value from src where key < 10) q +group by c1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select c1, count(*) +from (select sign(value) c1, value from src where key < 10) q +group by c1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +PREHOOK: query: explain analyze +select c1, count(*) +from (select sign(value) c1, value from src where key < 10) q +group by c1 +PREHOOK: type: QUERY +POSTHOOK: query: explain analyze +select c1, count(*) +from (select sign(value) c1, value from src where key < 10) q +group by c1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500/500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (UDFToDouble(key) < 10.0D) (type: boolean) + Statistics: Num rows: 166/10 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: sign(value) (type: double) + outputColumnNames: _col0 + Statistics: Num rows: 166/10 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Group By Operator + aggregations: count() + keys: _col0 (type: double) + mode: hash + outputColumnNames: _col0, _col1 + Statistics: Num rows: 166/1 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: double) + sort order: + + Map-reduce partition columns: _col0 (type: double) + Statistics: Num rows: 166/1 Data size: 1763 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + keys: KEY._col0 (type: double) + mode: mergepartial + outputColumnNames: _col0, _col1 + Statistics: Num rows: 83/1 Data size: 881 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 83/1 Data size: 881 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink +