You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by mg...@apache.org on 2019/09/19 12:41:12 UTC

[hive] branch master updated: HIVE-22203 Break up DDLSemanticAnalyzer - extract Process related analyzers (Miklos Gergely reviewed by Jesus Camacho Rodriguez)

This is an automated email from the ASF dual-hosted git repository.

mgergely pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b4deef  HIVE-22203 Break up DDLSemanticAnalyzer - extract Process related analyzers (Miklos Gergely reviewed by Jesus Camacho Rodriguez)
5b4deef is described below

commit 5b4deefc7a06dfc87bf6c37f2e5ed222f7bdb30d
Author: miklosgergely <mg...@cloudera.com>
AuthorDate: Thu Sep 12 10:44:05 2019 +0200

    HIVE-22203 Break up DDLSemanticAnalyzer - extract Process related analyzers (Miklos Gergely reviewed by Jesus Camacho Rodriguez)
---
 .../org/apache/hadoop/hive/ql/ddl/DDLUtils.java    | 21 +++++++
 .../process/abort/AbortTransactionsAnalyzer.java   | 53 ++++++++++++++++
 .../process/{ => abort}/AbortTransactionsDesc.java |  2 +-
 .../{ => abort}/AbortTransactionsOperation.java    |  2 +-
 .../package-info.java}                             | 22 +------
 .../ql/ddl/process/kill/KillQueriesAnalyzer.java   | 57 +++++++++++++++++
 .../ql/ddl/process/{ => kill}/KillQueriesDesc.java |  2 +-
 .../process/{ => kill}/KillQueriesOperation.java   |  2 +-
 .../package-info.java}                             | 22 +------
 .../show/compactions/ShowCompactionsAnalyzer.java  | 50 +++++++++++++++
 .../compactions}/ShowCompactionsDesc.java          |  2 +-
 .../compactions}/ShowCompactionsOperation.java     |  2 +-
 .../compactions/package-info.java}                 | 22 +------
 .../transactions/ShowTransactionsAnalyzer.java     | 50 +++++++++++++++
 .../transactions}/ShowTransactionsDesc.java        |  2 +-
 .../transactions}/ShowTransactionsOperation.java   |  2 +-
 .../transactions/package-info.java}                | 22 +------
 .../hadoop/hive/ql/parse/DDLSemanticAnalyzer.java  | 71 ----------------------
 .../hive/ql/parse/SemanticAnalyzerFactory.java     |  4 --
 19 files changed, 247 insertions(+), 163 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLUtils.java
index c81c574..3dc6bf5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLUtils.java
@@ -33,13 +33,17 @@ import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.hooks.WriteEntity;
+import org.apache.hadoop.hive.ql.hooks.Entity.Type;
 import org.apache.hadoop.hive.ql.metadata.Hive;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.metadata.Partition;
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ReplicationSpec;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.serde2.Deserializer;
 import org.apache.hive.common.util.HiveStringUtils;
 import org.apache.hive.common.util.ReflectionUtil;
@@ -198,4 +202,21 @@ public final class DDLUtils {
       builder.append(value);
     }
   }
+
+  public static void addServiceOutput(HiveConf conf, Set<WriteEntity> outputs) throws SemanticException {
+    String hs2Hostname = getHS2Host(conf);
+    if (hs2Hostname != null) {
+      outputs.add(new WriteEntity(hs2Hostname, Type.SERVICE_NAME));
+    }
+  }
+
+  private static String getHS2Host(HiveConf conf) throws SemanticException {
+    if (SessionState.get().isHiveServerQuery()) {
+      return SessionState.get().getHiveServer2Host();
+    } else if (conf.getBoolVar(ConfVars.HIVE_TEST_AUTHORIZATION_SQLSTD_HS2_MODE)) {
+      return "dummyHostnameForTest";
+    }
+
+    throw new SemanticException("Kill query is only supported in HiveServer2 (not hive cli)");
+  }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsAnalyzer.java
new file mode 100644
index 0000000..21116a8
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsAnalyzer.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.ddl.process.abort;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.antlr.runtime.tree.Tree;
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.lib.Node;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+
+/**
+ * Analyzer for abort transactions commands.
+ */
+@DDLType(type=HiveParser.TOK_ABORT_TRANSACTIONS)
+public class AbortTransactionsAnalyzer extends BaseSemanticAnalyzer {
+  public AbortTransactionsAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  public void analyzeInternal(ASTNode root) throws SemanticException {
+    List<Long> transactionIds = new ArrayList<Long>();
+    for (Node child : root.getChildren()) {
+      transactionIds.add(Long.parseLong(((Tree)child).getText()));
+    }
+    AbortTransactionsDesc desc = new AbortTransactionsDesc(transactionIds);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsDesc.java
index 12584b9..20180da 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsDesc.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.abort;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsOperation.java
similarity index 96%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsOperation.java
index e881516..8a02ba3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/AbortTransactionsOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.abort;
 
 import org.apache.hadoop.hive.ql.ddl.DDLOperation;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/package-info.java
similarity index 56%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/package-info.java
index e881516..dc78d2c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/abort/package-info.java
@@ -16,23 +16,5 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
-
-import org.apache.hadoop.hive.ql.ddl.DDLOperation;
-import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * Operation process of aborting transactions.
- */
-public class AbortTransactionsOperation extends DDLOperation<AbortTransactionsDesc> {
-  public AbortTransactionsOperation(DDLOperationContext context, AbortTransactionsDesc desc) {
-    super(context, desc);
-  }
-
-  @Override
-  public int execute() throws HiveException {
-    context.getDb().abortTransactions(desc.getTransactionIds());
-    return 0;
-  }
-}
+/** Abort Transactions DDL operation. */
+package org.apache.hadoop.hive.ql.ddl.process.abort;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesAnalyzer.java
new file mode 100644
index 0000000..71b1e04
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesAnalyzer.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.ddl.process.kill;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.antlr.runtime.tree.Tree;
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLUtils;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.lib.Node;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+
+/**
+ * Analyzer for kill query commands.
+ */
+@DDLType(type=HiveParser.TOK_KILL_QUERY)
+public class KillQueriesAnalyzer extends BaseSemanticAnalyzer {
+  public KillQueriesAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  public void analyzeInternal(ASTNode root) throws SemanticException {
+    List<String> queryIds = new ArrayList<String>();
+    for (Node child : root.getChildren()) {
+      queryIds.add(stripQuotes(((Tree)child).getText()));
+    }
+
+    KillQueriesDesc desc = new KillQueriesDesc(queryIds);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
+
+    DDLUtils.addServiceOutput(conf, outputs);
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesDesc.java
index 5c6c840..a39e585 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesDesc.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.kill;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesOperation.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesOperation.java
index 54d0e29..afde1a4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/KillQueriesOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/KillQueriesOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.kill;
 
 import org.apache.hadoop.hive.ql.ddl.DDLOperation;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/package-info.java
similarity index 56%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/package-info.java
index e881516..3b4d443 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/kill/package-info.java
@@ -16,23 +16,5 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
-
-import org.apache.hadoop.hive.ql.ddl.DDLOperation;
-import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * Operation process of aborting transactions.
- */
-public class AbortTransactionsOperation extends DDLOperation<AbortTransactionsDesc> {
-  public AbortTransactionsOperation(DDLOperationContext context, AbortTransactionsDesc desc) {
-    super(context, desc);
-  }
-
-  @Override
-  public int execute() throws HiveException {
-    context.getDb().abortTransactions(desc.getTransactionIds());
-    return 0;
-  }
-}
+/** Kill Queries DDL operation. */
+package org.apache.hadoop.hive.ql.ddl.process.kill;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsAnalyzer.java
new file mode 100644
index 0000000..99b9f5d
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsAnalyzer.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.ddl.process.show.compactions;
+
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.exec.Task;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+
+/**
+ * Analyzer for show compactions commands.
+ */
+@DDLType(type=HiveParser.TOK_SHOW_COMPACTIONS)
+public class ShowCompactionsAnalyzer extends BaseSemanticAnalyzer {
+  public ShowCompactionsAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  public void analyzeInternal(ASTNode root) throws SemanticException {
+    ctx.setResFile(ctx.getLocalTmpPath());
+    ShowCompactionsDesc desc = new ShowCompactionsDesc(ctx.getResFile());
+    Task<DDLWork> task = TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc));
+    rootTasks.add(task);
+
+    task.setFetchSource(true);
+    setFetchTask(createFetchTask(ShowCompactionsDesc.SCHEMA));
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsDesc.java
index c8a4430..9348efc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsDesc.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.show.compactions;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.ql.ddl.DDLDesc;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsOperation.java
index b04404d..517d882 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowCompactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/ShowCompactionsOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.show.compactions;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/package-info.java
similarity index 56%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/package-info.java
index e881516..0255f77 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/compactions/package-info.java
@@ -16,23 +16,5 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
-
-import org.apache.hadoop.hive.ql.ddl.DDLOperation;
-import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * Operation process of aborting transactions.
- */
-public class AbortTransactionsOperation extends DDLOperation<AbortTransactionsDesc> {
-  public AbortTransactionsOperation(DDLOperationContext context, AbortTransactionsDesc desc) {
-    super(context, desc);
-  }
-
-  @Override
-  public int execute() throws HiveException {
-    context.getDb().abortTransactions(desc.getTransactionIds());
-    return 0;
-  }
-}
+/** Show Compactions DDL operation. */
+package org.apache.hadoop.hive.ql.ddl.process.show.compactions;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsAnalyzer.java
new file mode 100644
index 0000000..5bb2595
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsAnalyzer.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.ddl.process.show.transactions;
+
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.exec.Task;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+
+/**
+ * Analyzer for show transactions commands.
+ */
+@DDLType(type=HiveParser.TOK_SHOW_TRANSACTIONS)
+public class ShowTransactionsAnalyzer extends BaseSemanticAnalyzer {
+  public ShowTransactionsAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  public void analyzeInternal(ASTNode root) throws SemanticException {
+    ctx.setResFile(ctx.getLocalTmpPath());
+    ShowTransactionsDesc desc = new ShowTransactionsDesc(ctx.getResFile());
+    Task<DDLWork> task = TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc));
+    rootTasks.add(task);
+
+    task.setFetchSource(true);
+    setFetchTask(createFetchTask(ShowTransactionsDesc.SCHEMA));
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsDesc.java
index 486e3cf..7081ec0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsDesc.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.show.transactions;
 
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.ql.ddl.DDLDesc;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsOperation.java
index 6f28855..a2468d1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/ShowTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/ShowTransactionsOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
+package org.apache.hadoop.hive.ql.ddl.process.show.transactions;
 
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
 import org.apache.hadoop.hive.ql.ddl.DDLUtils;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/package-info.java
similarity index 56%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/package-info.java
index e881516..27151e8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/AbortTransactionsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/process/show/transactions/package-info.java
@@ -16,23 +16,5 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.process;
-
-import org.apache.hadoop.hive.ql.ddl.DDLOperation;
-import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * Operation process of aborting transactions.
- */
-public class AbortTransactionsOperation extends DDLOperation<AbortTransactionsDesc> {
-  public AbortTransactionsOperation(DDLOperationContext context, AbortTransactionsDesc desc) {
-    super(context, desc);
-  }
-
-  @Override
-  public int execute() throws HiveException {
-    context.getDb().abortTransactions(desc.getTransactionIds());
-    return 0;
-  }
-}
+/** Show Transactions DDL operation. */
+package org.apache.hadoop.hive.ql.ddl.process.show.transactions;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
index 2b8a2ba..023369f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
@@ -72,10 +72,6 @@ import org.apache.hadoop.hive.ql.ddl.misc.CacheMetadataDesc;
 import org.apache.hadoop.hive.ql.ddl.misc.MsckDesc;
 import org.apache.hadoop.hive.ql.ddl.misc.ShowConfDesc;
 import org.apache.hadoop.hive.ql.ddl.privilege.PrincipalDesc;
-import org.apache.hadoop.hive.ql.ddl.process.AbortTransactionsDesc;
-import org.apache.hadoop.hive.ql.ddl.process.KillQueriesDesc;
-import org.apache.hadoop.hive.ql.ddl.process.ShowCompactionsDesc;
-import org.apache.hadoop.hive.ql.ddl.process.ShowTransactionsDesc;
 import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
 import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
 import org.apache.hadoop.hive.ql.ddl.table.column.AlterTableAddColumnsDesc;
@@ -413,20 +409,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
       ctx.setResFile(ctx.getLocalTmpPath());
       analyzeShowDbLocks(ast);
       break;
-    case HiveParser.TOK_SHOW_COMPACTIONS:
-      ctx.setResFile(ctx.getLocalTmpPath());
-      analyzeShowCompactions(ast);
-      break;
-    case HiveParser.TOK_SHOW_TRANSACTIONS:
-      ctx.setResFile(ctx.getLocalTmpPath());
-      analyzeShowTxns(ast);
-      break;
-    case HiveParser.TOK_ABORT_TRANSACTIONS:
-      analyzeAbortTxns(ast);
-      break;
-    case HiveParser.TOK_KILL_QUERY:
-      analyzeKillQuery(ast);
-      break;
     case HiveParser.TOK_SHOWCONF:
       ctx.setResFile(ctx.getLocalTmpPath());
       analyzeShowConf(ast);
@@ -2584,59 +2566,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
     ctx.setNeedLockMgr(true);
   }
 
-  /**
-   * Add a task to execute "SHOW COMPACTIONS"
-   * @param ast The parsed command tree.
-   * @throws SemanticException Parsing failed.
-   */
-  private void analyzeShowCompactions(ASTNode ast) throws SemanticException {
-    ShowCompactionsDesc desc = new ShowCompactionsDesc(ctx.getResFile());
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-    setFetchTask(createFetchTask(ShowCompactionsDesc.SCHEMA));
-  }
-
-  /**
-   * Add a task to execute "SHOW COMPACTIONS"
-   * @param ast The parsed command tree.
-   * @throws SemanticException Parsing failed.
-   */
-  private void analyzeShowTxns(ASTNode ast) throws SemanticException {
-    ShowTransactionsDesc desc = new ShowTransactionsDesc(ctx.getResFile());
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-    setFetchTask(createFetchTask(ShowTransactionsDesc.SCHEMA));
-  }
-
-  /**
-   * Add a task to execute "ABORT TRANSACTIONS"
-   * @param ast The parsed command tree
-   * @throws SemanticException Parsing failed
-   */
-  private void analyzeAbortTxns(ASTNode ast) throws SemanticException {
-    List<Long> txnids = new ArrayList<Long>();
-    int numChildren = ast.getChildCount();
-    for (int i = 0; i < numChildren; i++) {
-      txnids.add(Long.parseLong(ast.getChild(i).getText()));
-    }
-    AbortTransactionsDesc desc = new AbortTransactionsDesc(txnids);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-  }
-
-   /**
-   * Add a task to execute "Kill query"
-   * @param ast The parsed command tree
-   * @throws SemanticException Parsing failed
-   */
-  private void analyzeKillQuery(ASTNode ast) throws SemanticException {
-    List<String> queryIds = new ArrayList<String>();
-    int numChildren = ast.getChildCount();
-    for (int i = 0; i < numChildren; i++) {
-      queryIds.add(stripQuotes(ast.getChild(i).getText()));
-    }
-    addServiceOutput();
-    KillQueriesDesc desc = new KillQueriesDesc(queryIds);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-  }
-
   private void addServiceOutput() throws SemanticException {
     String hs2Hostname = getHS2Host();
     if (hs2Hostname != null) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
index f20e49c..4f95c51 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
@@ -134,9 +134,6 @@ public final class SemanticAnalyzerFactory {
       case HiveParser.TOK_SHOWPARTITIONS:
       case HiveParser.TOK_SHOWLOCKS:
       case HiveParser.TOK_SHOWDBLOCKS:
-      case HiveParser.TOK_SHOW_COMPACTIONS:
-      case HiveParser.TOK_SHOW_TRANSACTIONS:
-      case HiveParser.TOK_ABORT_TRANSACTIONS:
       case HiveParser.TOK_SHOWCONF:
       case HiveParser.TOK_SHOWVIEWS:
       case HiveParser.TOK_SHOWMATERIALIZEDVIEWS:
@@ -144,7 +141,6 @@ public final class SemanticAnalyzerFactory {
       case HiveParser.TOK_UNLOCKTABLE:
       case HiveParser.TOK_TRUNCATETABLE:
       case HiveParser.TOK_CACHE_METADATA:
-      case HiveParser.TOK_KILL_QUERY:
       case HiveParser.TOK_CREATE_RP:
       case HiveParser.TOK_SHOW_RP:
       case HiveParser.TOK_ALTER_RP: