Repository: hive
Updated Branches:
  refs/heads/branch-2.2 fbbffda3a -> 43d8647fd


HIVE-17831: HiveSemanticAnalyzerHookContext does not update the HiveOperation 
after sem.analyze() is called (Aihua Xu, reviewed by Sergio Pena)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/43d8647f
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/43d8647f
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/43d8647f

Branch: refs/heads/branch-2.2
Commit: 43d8647fd0dbe350638478a7f9e8415cead813d2
Parents: fbbffda
Author: Aihua Xu <aihu...@apache.org>
Authored: Wed Oct 18 17:01:20 2017 -0700
Committer: Aihua Xu <aihu...@apache.org>
Committed: Fri Oct 20 09:55:02 2017 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hive/hooks/TestHs2Hooks.java  | 36 ++++++++++++++++++++
 .../HiveSemanticAnalyzerHookContextImpl.java    |  1 +
 2 files changed, 37 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/43d8647f/itests/hive-unit/src/test/java/org/apache/hadoop/hive/hooks/TestHs2Hooks.java
----------------------------------------------------------------------
diff --git 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/hooks/TestHs2Hooks.java 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/hooks/TestHs2Hooks.java
index dad516c..7f2517b 100644
--- 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/hooks/TestHs2Hooks.java
+++ 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/hooks/TestHs2Hooks.java
@@ -187,6 +187,7 @@ public class TestHs2Hooks {
     Properties connProp = new Properties();
     connProp.setProperty("user", System.getProperty("user.name"));
     connProp.setProperty("password", "");
+
     HiveConnection connection = new 
HiveConnection("jdbc:hive2://localhost:10000/default", connProp);
     Statement stmt = connection.createStatement();
     stmt.executeQuery("show databases");
@@ -234,5 +235,40 @@ public class TestHs2Hooks {
     Assert.assertTrue(SemanticAnalysisHook.ipAddress,
         SemanticAnalysisHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("show tables", SemanticAnalysisHook.command);
+
+    stmt.close();
+    connection.close();
+  }
+
+  @Test
+  public void testPostAnalysisHookContexts() throws Throwable {
+    Properties connProp = new Properties();
+    connProp.setProperty("user", System.getProperty("user.name"));
+    connProp.setProperty("password", "");
+
+    HiveConnection connection = new 
HiveConnection("jdbc:hive2://localhost:10000/default", connProp);
+    Statement stmt = connection.createStatement();
+    stmt.execute("create table testPostAnalysisHookContexts as select '3'");
+    Throwable error = PostExecHook.error;
+    if (error != null) {
+      throw error;
+    }
+    error = PreExecHook.error;
+    if (error != null) {
+      throw error;
+    }
+
+    Assert.assertEquals(HiveOperation.CREATETABLE_AS_SELECT, 
SemanticAnalysisHook.commandType);
+
+    error = SemanticAnalysisHook.preAnalyzeError;
+    if (error != null) {
+      throw error;
+    }
+    error = SemanticAnalysisHook.postAnalyzeError;
+    if (error != null) {
+      throw error;
+    }
+    stmt.close();
+    connection.close();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/43d8647f/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContextImpl.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContextImpl.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContextImpl.java
index 1cc38a8..e28dc47 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContextImpl.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContextImpl.java
@@ -58,6 +58,7 @@ public class HiveSemanticAnalyzerHookContextImpl implements 
HiveSemanticAnalyzer
   public void update(BaseSemanticAnalyzer sem) {
     this.inputs = sem.getInputs();
     this.outputs = sem.getOutputs();
+    this.commandType = sem.getQueryState().getHiveOperation();
   }
 
   @Override

Reply via email to