You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by sp...@apache.org on 2017/08/28 17:30:55 UTC

hive git commit: HIVE-17048: Pass HiveOperation info to HiveSemanticAnalyzerHook through HiveSemanticAnalyzerHookContext (Aihua Xu, reviewed by Mohit Sabharwal)

Repository: hive
Updated Branches:
  refs/heads/branch-2 588148da1 -> 291a259c6


HIVE-17048: Pass HiveOperation info to HiveSemanticAnalyzerHook through HiveSemanticAnalyzerHookContext (Aihua Xu, reviewed by Mohit Sabharwal)


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

Branch: refs/heads/branch-2
Commit: 291a259c6c245b0d50fbab34f377cea8547f0e8e
Parents: 588148d
Author: Aihua Xu <ai...@apache.org>
Authored: Wed Jul 5 17:38:36 2017 -0700
Committer: Sergio Pena <se...@cloudera.com>
Committed: Mon Aug 28 12:26:06 2017 -0500

----------------------------------------------------------------------
 .../hive/minikdc/TestHs2HooksWithMiniKdc.java   | 28 +++++++++++---------
 .../apache/hadoop/hive/hooks/TestHs2Hooks.java  | 27 ++++++++++++-------
 .../java/org/apache/hadoop/hive/ql/Driver.java  |  1 +
 .../parse/HiveSemanticAnalyzerHookContext.java  |  5 ++++
 .../HiveSemanticAnalyzerHookContextImpl.java    | 12 +++++++++
 5 files changed, 50 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/291a259c/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestHs2HooksWithMiniKdc.java
----------------------------------------------------------------------
diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestHs2HooksWithMiniKdc.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestHs2HooksWithMiniKdc.java
index 4fabe47..1cd0ee8 100644
--- a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestHs2HooksWithMiniKdc.java
+++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestHs2HooksWithMiniKdc.java
@@ -24,7 +24,7 @@ import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@ -114,16 +114,16 @@ public class TestHs2HooksWithMiniKdc {
       throw error;
     }
 
-    Assert.assertNotNull(PostExecHook.ipAddress, "ipaddress is null");
-    Assert.assertNotNull(PostExecHook.userName, "userName is null");
-    Assert.assertNotNull(PostExecHook.operation , "operation is null");
+    Assert.assertNotNull("ipaddress is null", PostExecHook.ipAddress);
+    Assert.assertNotNull("userName is null", PostExecHook.userName);
+    Assert.assertNotNull("operation is null", PostExecHook.operation);
     Assert.assertEquals(MiniHiveKdc.HIVE_TEST_USER_1, PostExecHook.userName);
     Assert.assertTrue(PostExecHook.ipAddress, PostExecHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("SHOWTABLES", PostExecHook.operation);
 
-    Assert.assertNotNull(PreExecHook.ipAddress, "ipaddress is null");
-    Assert.assertNotNull(PreExecHook.userName, "userName is null");
-    Assert.assertNotNull(PreExecHook.operation , "operation is null");
+    Assert.assertNotNull("ipaddress is null", PreExecHook.ipAddress);
+    Assert.assertNotNull("userName is null", PreExecHook.userName);
+    Assert.assertNotNull("operation is null", PreExecHook.operation);
     Assert.assertEquals(MiniHiveKdc.HIVE_TEST_USER_1, PreExecHook.userName);
     Assert.assertTrue(PreExecHook.ipAddress, PreExecHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("SHOWTABLES", PreExecHook.operation);
@@ -137,12 +137,14 @@ public class TestHs2HooksWithMiniKdc {
       throw error;
     }
 
-    Assert.assertNotNull(SemanticAnalysisHook.ipAddress,
-        "semantic hook context ipaddress is null");
-    Assert.assertNotNull(SemanticAnalysisHook.userName,
-        "semantic hook context userName is null");
-    Assert.assertNotNull(SemanticAnalysisHook.command ,
-        "semantic hook context command is null");
+    Assert.assertNotNull("semantic hook context ipaddress is null",
+        SemanticAnalysisHook.ipAddress);
+    Assert.assertNotNull("semantic hook context userName is null",
+        SemanticAnalysisHook.userName);
+    Assert.assertNotNull("semantic hook context command is null",
+        SemanticAnalysisHook.command);
+    Assert.assertNotNull("semantic hook context commandType is null",
+        SemanticAnalysisHook.commandType);
     Assert.assertTrue(SemanticAnalysisHook.ipAddress,
         SemanticAnalysisHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("show tables", SemanticAnalysisHook.command);

http://git-wip-us.apache.org/repos/asf/hive/blob/291a259c/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 6f3e779..dad516c 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
@@ -25,7 +25,7 @@ import java.sql.Statement;
 import java.util.List;
 import java.util.Properties;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@ -36,6 +36,7 @@ import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHook;
 import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.HiveOperation;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hive.jdbc.HiveConnection;
 import org.apache.hive.service.server.HiveServer2;
@@ -98,6 +99,7 @@ public class TestHs2Hooks {
   public static class SemanticAnalysisHook implements HiveSemanticAnalyzerHook {
     public static String userName;
     public static String command;
+    public static HiveOperation commandType;
     public static String ipAddress;
     public static Throwable preAnalyzeError;
     public static Throwable postAnalyzeError;
@@ -109,6 +111,7 @@ public class TestHs2Hooks {
         userName = context.getUserName();
         ipAddress = context.getIpAddress();
         command = context.getCommand();
+        commandType = context.getHiveOperation();
       } catch (Throwable t) {
         LOG.error("Error in semantic analysis hook preAnalyze: " + t, t);
         preAnalyzeError = t;
@@ -123,6 +126,7 @@ public class TestHs2Hooks {
         userName = context.getUserName();
         ipAddress = context.getIpAddress();
         command = context.getCommand();
+        commandType = context.getHiveOperation();
       } catch (Throwable t) {
         LOG.error("Error in semantic analysis hook postAnalyze: " + t, t);
         postAnalyzeError = t;
@@ -170,6 +174,7 @@ public class TestHs2Hooks {
     SemanticAnalysisHook.userName = null;
     SemanticAnalysisHook.ipAddress = null;
     SemanticAnalysisHook.command = null;
+    SemanticAnalysisHook.commandType = null;
     SemanticAnalysisHook.preAnalyzeError = null;
     SemanticAnalysisHook.postAnalyzeError = null;
   }
@@ -203,9 +208,9 @@ public class TestHs2Hooks {
     Assert.assertEquals("SHOWTABLES", PostExecHook.operation);
 
     Assert.assertEquals(System.getProperty("user.name"), PreExecHook.userName);
-    Assert.assertNotNull(PreExecHook.ipAddress, "ipaddress is null");
-    Assert.assertNotNull(PreExecHook.userName, "userName is null");
-    Assert.assertNotNull(PreExecHook.operation , "operation is null");
+    Assert.assertNotNull("ipaddress is null", PreExecHook.ipAddress);
+    Assert.assertNotNull("userName is null", PreExecHook.userName);
+    Assert.assertNotNull("operation is null", PreExecHook.operation);
     Assert.assertTrue(PreExecHook.ipAddress, PreExecHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("SHOWTABLES", PreExecHook.operation);
 
@@ -218,12 +223,14 @@ public class TestHs2Hooks {
       throw error;
     }
 
-    Assert.assertNotNull(SemanticAnalysisHook.ipAddress,
-        "semantic hook context ipaddress is null");
-    Assert.assertNotNull(SemanticAnalysisHook.userName,
-        "semantic hook context userName is null");
-    Assert.assertNotNull(SemanticAnalysisHook.command ,
-        "semantic hook context command is null");
+    Assert.assertNotNull("semantic hook context ipaddress is null",
+        SemanticAnalysisHook.ipAddress);
+    Assert.assertNotNull("semantic hook context userName is null",
+        SemanticAnalysisHook.userName);
+    Assert.assertNotNull("semantic hook context command is null",
+        SemanticAnalysisHook.command);
+    Assert.assertNotNull("semantic hook context commandType is null",
+        SemanticAnalysisHook.commandType);
     Assert.assertTrue(SemanticAnalysisHook.ipAddress,
         SemanticAnalysisHook.ipAddress.contains("127.0.0.1"));
     Assert.assertEquals("show tables", SemanticAnalysisHook.command);

http://git-wip-us.apache.org/repos/asf/hive/blob/291a259c/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
index d981119..0e84b6c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -499,6 +499,7 @@ public class Driver implements CommandProcessor {
         hookCtx.setUserName(userName);
         hookCtx.setIpAddress(SessionState.get().getUserIpAddress());
         hookCtx.setCommand(command);
+        hookCtx.setHiveOperation(queryState.getHiveOperation());
         for (HiveSemanticAnalyzerHook hook : saHooks) {
           tree = hook.preAnalyze(hookCtx, tree);
         }

http://git-wip-us.apache.org/repos/asf/hive/blob/291a259c/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContext.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContext.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContext.java
index b78ce90..166375c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContext.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveSemanticAnalyzerHookContext.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.hive.ql.hooks.ReadEntity;
 import org.apache.hadoop.hive.ql.hooks.WriteEntity;
 import org.apache.hadoop.hive.ql.metadata.Hive;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.HiveOperation;
 
 /**
  * Context information provided by Hive to implementations of
@@ -65,4 +66,8 @@ public interface HiveSemanticAnalyzerHookContext extends Configurable{
   public String getCommand();
 
   public void setCommand(String command);
+
+  public HiveOperation getHiveOperation();
+
+  public void setHiveOperation(HiveOperation commandType);
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/291a259c/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 4ce705b..1cc38a8 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
@@ -26,6 +26,7 @@ import org.apache.hadoop.hive.ql.hooks.ReadEntity;
 import org.apache.hadoop.hive.ql.hooks.WriteEntity;
 import org.apache.hadoop.hive.ql.metadata.Hive;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.HiveOperation;
 
 public class HiveSemanticAnalyzerHookContextImpl implements HiveSemanticAnalyzerHookContext {
 
@@ -35,6 +36,7 @@ public class HiveSemanticAnalyzerHookContextImpl implements HiveSemanticAnalyzer
   private String userName;
   private String ipAddress;
   private String command;
+  private HiveOperation commandType;
 
   @Override
   public Hive getHive() throws HiveException {
@@ -95,4 +97,14 @@ public class HiveSemanticAnalyzerHookContextImpl implements HiveSemanticAnalyzer
   public void setCommand(String command) {
     this.command = command;
   }
+
+  @Override
+  public HiveOperation getHiveOperation() {
+    return commandType;
+  }
+
+  @Override
+  public void setHiveOperation(HiveOperation commandType) {
+    this.commandType = commandType;
+  }
 }