Repository: hive Updated Branches: refs/heads/branch-2.3 6f4c35c9e -> 910842f84
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/910842f8 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/910842f8 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/910842f8 Branch: refs/heads/branch-2.3 Commit: 910842f848c6e764869391e619fa098de16d40d8 Parents: 6f4c35c Author: Aihua Xu <aihu...@apache.org> Authored: Wed Jul 5 17:38:36 2017 -0700 Committer: Sergio Pena <sergio.p...@cloudera.com> Committed: Mon Aug 28 12:31:33 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/910842f8/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/910842f8/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/910842f8/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/910842f8/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/910842f8/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; + } }