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 dad516cda2..7f2517b1b8 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 void testHookContexts() 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.executeQuery("show databases"); @@ -234,5 +235,40 @@ public void testHookContexts() throws Throwable { 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(); } } 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 1cc38a891e..e28dc47511 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 void setConf(Configuration conf) { public void update(BaseSemanticAnalyzer sem) { this.inputs = sem.getInputs(); this.outputs = sem.getOutputs(); + this.commandType = sem.getQueryState().getHiveOperation(); } @Override