Repository: hive
Updated Branches:
  refs/heads/branch-2.3 00c0ee7bc -> 3b1d4fdfd


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/3b1d4fdf
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3b1d4fdf
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3b1d4fdf

Branch: refs/heads/branch-2.3
Commit: 3b1d4fdfdfecbf162b60ec0e49a07595a8a51e79
Parents: 00c0ee7
Author: Daniel Dai <[email protected]>
Authored: Thu Oct 25 11:09:00 2018 -0700
Committer: Daniel Dai <[email protected]>
Committed: Thu Oct 25 11:09:00 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/3b1d4fdf/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/3b1d4fdf/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();

Reply via email to