Repository: hive Updated Branches: refs/heads/branch-2 55fcff151 -> 0083145ef
HIVE-18778: Needs to capture input/output entities in explain (Daniel Dai, reviewed by Thejas Nair) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0083145e Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0083145e Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0083145e Branch: refs/heads/branch-2 Commit: 0083145ef6eb85b81ce30ff723a157804748763d Parents: 55fcff1 Author: Daniel Dai <[email protected]> Authored: Thu Oct 25 11:08:10 2018 -0700 Committer: Daniel Dai <[email protected]> Committed: Thu Oct 25 11:08:10 2018 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java | 7 ++++--- .../apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/0083145e/ql/src/java/org/apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java index 4569ed5..895ce89 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/EnforceReadOnlyTables.java @@ -53,11 +53,12 @@ public class EnforceReadOnlyTables implements ExecuteWithHookContext { Set<ReadEntity> inputs = hookContext.getInputs(); Set<WriteEntity> outputs = hookContext.getOutputs(); UserGroupInformation ugi = hookContext.getUgi(); - this.run(ss,inputs,outputs,ugi); + boolean isExplain = hookContext.getQueryPlan().isExplain(); + this.run(ss,inputs,outputs,ugi, isExplain); } public void run(SessionState sess, Set<ReadEntity> inputs, - Set<WriteEntity> outputs, UserGroupInformation ugi) + Set<WriteEntity> outputs, UserGroupInformation ugi, boolean isExplain) throws Exception { // Don't enforce during test driver setup or shutdown. @@ -70,7 +71,7 @@ public class EnforceReadOnlyTables implements ExecuteWithHookContext { (w.getTyp() == WriteEntity.Type.PARTITION)) { Table t = w.getTable(); if (DEFAULT_DATABASE_NAME.equalsIgnoreCase(t.getDbName()) - && READ_ONLY_TABLES.contains(t.getTableName())) { + && READ_ONLY_TABLES.contains(t.getTableName()) && !isExplain) { throw new RuntimeException ("Cannot overwrite read-only table: " + t.getTableName()); } } http://git-wip-us.apache.org/repos/asf/hive/blob/0083145e/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java index f62cf9a..4af04c3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ExplainSemanticAnalyzer.java @@ -164,6 +164,10 @@ public class ExplainSemanticAnalyzer extends BaseSemanticAnalyzer { BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(queryState, input); sem.analyze(input, ctx); sem.validate(); + if (!HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEST, false)) { + inputs = sem.getInputs(); + outputs = sem.getOutputs(); + } ctx.setResFile(ctx.getLocalTmpPath()); List<Task<? extends Serializable>> tasks = sem.getAllRootTasks();
