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 2020/02/18 23:09:41 UTC

[hive] branch master updated: HIVE-22895 Break up DDLSemanticAnalyzer - extract Table storage related analyzers (Miklos Gergely, reviewed by Zoltan Haindrich)

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 fbf4a90  HIVE-22895 Break up DDLSemanticAnalyzer - extract Table storage related analyzers (Miklos Gergely, reviewed by Zoltan Haindrich)
fbf4a90 is described below

commit fbf4a90e0e5a71aa7c0919194371c57495a5914c
Author: miklosgergely <mg...@cloudera.com>
AuthorDate: Thu Feb 13 21:37:59 2020 +0100

    HIVE-22895 Break up DDLSemanticAnalyzer - extract Table storage related analyzers (Miklos Gergely, reviewed by Zoltan Haindrich)
---
 .../cli/SemanticAnalysis/HCatSemanticAnalyzer.java |   2 +-
 .../hive/ql/ddl/DDLSemanticAnalyzerFactory.java    |  18 +-
 .../location/AlterDatabaseSetLocationAnalyzer.java |   2 +-
 .../alter/owner/AlterDatabaseSetOwnerAnalyzer.java |   2 +-
 .../AlterDatabaseSetPropertiesAnalyzer.java        |   2 +-
 .../database/create/CreateDatabaseAnalyzer.java    |   2 +-
 .../ql/ddl/database/desc/DescDatabaseAnalyzer.java |   2 +-
 .../ql/ddl/database/drop/DropDatabaseAnalyzer.java |   2 +-
 .../ql/ddl/database/lock/LockDatabaseAnalyzer.java |   2 +-
 .../ddl/database/show/ShowDatabasesAnalyzer.java   |   2 +-
 .../showcreate/ShowCreateDatabaseAnalyzer.java     |   2 +-
 .../database/unlock/UnlockDatabaseAnalyzer.java    |   2 +-
 .../ddl/database/use/SwitchDatabaseAnalyzer.java   |   2 +-
 .../function/create/CreateFunctionAnalyzer.java    |   2 +-
 .../ql/ddl/function/desc/DescFunctionAnalyzer.java |   2 +-
 .../ql/ddl/function/drop/DropFunctionAnalyzer.java |   2 +-
 .../function/macro/create/CreateMacroAnalyzer.java |   2 +-
 .../ddl/function/macro/drop/DropMacroAnalyzer.java |   2 +-
 .../function/reload/ReloadFunctionsAnalyzer.java   |   2 +-
 .../ddl/function/show/ShowFunctionsAnalyzer.java   |   2 +-
 .../hive/ql/ddl/misc/conf/ShowConfAnalyzer.java    |   2 +-
 .../ddl/misc/metadata/CacheMetadataAnalyzer.java   |   2 +-
 .../hadoop/hive/ql/ddl/misc/msck/MsckAnalyzer.java |   2 +-
 .../hive/ql/ddl/privilege/grant/GrantAnalyzer.java |   2 +-
 .../ql/ddl/privilege/revoke/RevokeAnalyzer.java    |   2 +-
 .../privilege/role/create/CreateRoleAnalyzer.java  |   2 +-
 .../ddl/privilege/role/drop/DropRoleAnalyzer.java  |   2 +-
 .../privilege/role/grant/GrantRoleAnalyzer.java    |   2 +-
 .../privilege/role/revoke/RevokeRoleAnalyzer.java  |   2 +-
 .../ql/ddl/privilege/role/set/SetRoleAnalyzer.java |   2 +-
 .../role/show/ShowCurrentRoleAnalyzer.java         |   2 +-
 .../ddl/privilege/role/show/ShowRolesAnalyzer.java |   2 +-
 .../privilege/show/grant/ShowGrantAnalyzer.java    |   2 +-
 .../show/principals/ShowPrincipalsAnalyzer.java    |   2 +-
 .../show/rolegrant/ShowRoleGrantAnalyzer.java      |   2 +-
 .../process/abort/AbortTransactionsAnalyzer.java   |   2 +-
 .../ql/ddl/process/kill/KillQueriesAnalyzer.java   |   2 +-
 .../show/compactions/ShowCompactionsAnalyzer.java  |   2 +-
 .../transactions/ShowTransactionsAnalyzer.java     |   2 +-
 .../ql/ddl/table/AbstractAlterTableAnalyzer.java   |  12 +-
 .../ql/ddl/table/AlterTableAnalyzerCategory.java   |   2 +-
 .../column/add/AlterTableAddColumnsAnalyzer.java   |   2 +-
 .../change/AlterTableChangeColumnAnalyzer.java     |   2 +-
 .../replace/AlterTableReplaceColumnsAnalyzer.java  |   2 +-
 .../ddl/table/column/show/ShowColumnsAnalyzer.java |   2 +-
 .../update/AlterTableUpdateColumnsAnalyzer.java    |   2 +-
 .../add/AlterTableAddConstraintAnalyzer.java       |   2 +-
 .../drop/AlterTableDropConstraintAnalyzer.java     |   2 +-
 .../table/create/show/ShowCreateTableAnalyzer.java |   2 +-
 .../hive/ql/ddl/table/drop/DropTableAnalyzer.java  |   2 +-
 .../ql/ddl/table/info/desc/DescTableAnalyzer.java  |   2 +-
 .../properties/ShowTablePropertiesAnalyzer.java    |   2 +-
 .../info/show/status/ShowTableStatusAnalyzer.java  |   2 +-
 .../table/info/show/tables/ShowTablesAnalyzer.java |   2 +-
 .../hive/ql/ddl/table/lock/LockTableAnalyzer.java  |   2 +-
 .../ql/ddl/table/lock/UnlockTableAnalyzer.java     |   2 +-
 .../ddl/table/lock/show/ShowDbLocksAnalyzer.java   |   2 +-
 .../ql/ddl/table/lock/show/ShowLocksAnalyzer.java  |   2 +-
 .../add/AlterTableAddPartitionAnalyzer.java        |   2 +-
 .../add/AlterViewAddPartitionAnalyzer.java         |   2 +-
 .../alter/AlterTableAlterPartitionAnalyzer.java    |   2 +-
 .../drop/AlterTableDropPartitionAnalyzer.java      |   2 +-
 .../drop/AlterViewDropPartitionAnalyzer.java       |   2 +-
 .../AlterTableExchangePartitionAnalyzer.java       |   2 +-
 .../rename/AlterTableRenamePartitionAnalyzer.java  |   2 +-
 .../partition/show/ShowPartitionAnalyzer.java      |   2 +-
 .../archive/AbstractAlterTableArchiveAnalyzer.java |  86 +++
 .../archive/AlterTableArchiveAnalyzer.java}        |  25 +-
 .../{ => archive}/AlterTableArchiveDesc.java       |   2 +-
 .../{ => archive}/AlterTableArchiveOperation.java  |   6 +-
 .../{ => archive}/AlterTableArchiveUtils.java      |   2 +-
 .../archive/AlterTableUnarchiveAnalyzer.java}      |  25 +-
 .../{ => archive}/AlterTableUnarchiveDesc.java     |   2 +-
 .../AlterTableUnarchiveOperation.java              |   4 +-
 .../cluster/AlterTableClusterSortAnalyzer.java}    |  52 +-
 .../{ => cluster}/AlterTableClusteredByDesc.java   |   2 +-
 .../AlterTableClusteredByOperation.java            |   2 +-
 .../cluster/AlterTableIntoBucketsAnalyzer.java}    |  34 +-
 .../{ => cluster}/AlterTableIntoBucketsDesc.java   |   2 +-
 .../AlterTableIntoBucketsOperation.java            |   2 +-
 .../{ => cluster}/AlterTableNotClusteredDesc.java  |   2 +-
 .../AlterTableNotClusteredOperation.java           |   2 +-
 .../{ => cluster}/AlterTableNotSortedDesc.java     |   2 +-
 .../AlterTableNotSortedOperation.java              |   2 +-
 .../compact/AlterTableCompactAnalyzer.java}        |  44 +-
 .../{ => compact}/AlterTableCompactDesc.java       |   2 +-
 .../{ => compact}/AlterTableCompactOperation.java  |   2 +-
 .../concatenate/AlterTableConcatenateAnalyzer.java | 225 ++++++++
 .../AlterTableConcatenateDesc.java                 |   2 +-
 .../AlterTableConcatenateOperation.java            |   2 +-
 .../serde/AlterTableSetSerdeAnalyzer.java}         |  20 +-
 .../{ => serde}/AlterTableSetSerdeDesc.java        |   2 +-
 .../{ => serde}/AlterTableSetSerdeOperation.java   |   2 +-
 .../serde/AlterTableSetSerdePropsAnalyzer.java}    |  25 +-
 .../{ => serde}/AlterTableSetSerdePropsDesc.java   |   2 +-
 .../AlterTableSetSerdePropsOperation.java          |   2 +-
 .../AlterTableSetFileFormatAnalyzer.java}          |  29 +-
 .../fileformat}/AlterTableSetFileFormatDesc.java   |   2 +-
 .../AlterTableSetFileFormatOperation.java          |   2 +-
 .../location/AlterTableSetLocationAnalyzer.java}   |  53 +-
 .../location}/AlterTableSetLocationDesc.java       |   2 +-
 .../location}/AlterTableSetLocationOperation.java  |   2 +-
 .../{ => skewed}/AlterTableNotSkewedDesc.java      |   2 +-
 .../{ => skewed}/AlterTableNotSkewedOperation.java |   2 +-
 .../AlterTableSetSkewedLocationAnalyzer.java       | 126 +++++
 .../AlterTableSetSkewedLocationDesc.java           |   2 +-
 .../AlterTableSetSkewedLocationOperation.java      |   2 +-
 .../storage/skewed/AlterTableSkewedByAnalyzer.java | 104 ++++
 .../{ => skewed}/AlterTableSkewedByDesc.java       |   2 +-
 .../{ => skewed}/AlterTableSkewedByOperation.java  |   2 +-
 .../ddl/table/storage/skewed/SkewedTableUtils.java | 111 ++++
 .../ql/ddl/view/AlterViewAnalyzerCategory.java     |   2 +-
 .../hive/ql/ddl/view/drop/DropViewAnalyzer.java    |   2 +-
 .../AlterMaterializedViewRebuildAnalyzer.java      |   2 +-
 .../AlterMaterializedViewRewriteAnalyzer.java      |   2 +-
 .../drop/DropMaterializedViewAnalyzer.java         |   2 +-
 .../show/ShowMaterializedViewsAnalyzer.java        |   2 +-
 .../hive/ql/ddl/view/show/ShowViewsAnalyzer.java   |   2 +-
 .../mapping/alter/AlterWMMappingAnalyzer.java      |   2 +-
 .../mapping/create/CreateWMMappingAnalyzer.java    |   2 +-
 .../mapping/drop/DropWMMappingAnalyzer.java        |   2 +-
 .../pool/alter/AlterWMPoolAnalyzer.java            |   2 +-
 .../pool/create/CreateWMPoolAnalyzer.java          |   2 +-
 .../pool/drop/DropWMPoolAnalyzer.java              |   2 +-
 .../disable/AlterResourcePlanDisableAnalyzer.java  |   2 +-
 .../enable/AlterResourcePlanEnableAnalyzer.java    |   2 +-
 .../rename/AlterResourcePlanRenameAnalyzer.java    |   2 +-
 .../replace/AlterResourcePlanReplaceAnalyzer.java  |   2 +-
 .../alter/set/AlterResourcePlanSetAnalyzer.java    |   2 +-
 .../unset/AlterResourcePlanUnsetAnalyzer.java      |   2 +-
 .../AlterResourcePlanValidateAnalyzer.java         |   2 +-
 .../create/CreateResourcePlanAnalyzer.java         |   2 +-
 .../drop/DropResourcePlanAnalyzer.java             |   2 +-
 .../show/ShowResourcePlanAnalyzer.java             |   2 +-
 .../trigger/alter/AlterWMTriggerAnalyzer.java      |   2 +-
 .../trigger/create/CreateWMTriggerAnalyzer.java    |   2 +-
 .../trigger/drop/DropWMTriggerAnalyzer.java        |   2 +-
 .../pool/add/AlterPoolAddTriggerAnalyzer.java      |   2 +-
 .../pool/drop/AlterPoolDropTriggerAnalyzer.java    |   2 +-
 .../hadoop/hive/ql/parse/BaseSemanticAnalyzer.java | 109 ----
 .../hadoop/hive/ql/parse/DDLSemanticAnalyzer.java  | 574 ---------------------
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java     |   5 +-
 .../apache/hadoop/hive/ql/parse/TestQBCompact.java |   2 +-
 .../queries/clientnegative/compact_illegal_type.q  |   9 +
 .../clientnegative/compact_illegal_type.q.out      |   9 +
 .../results/clientnegative/merge_negative_4.q.out  |   2 +-
 146 files changed, 992 insertions(+), 959 deletions(-)

diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java
index 8277d34..cd54e28 100644
--- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java
+++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/cli/SemanticAnalysis/HCatSemanticAnalyzer.java
@@ -30,7 +30,7 @@ import org.apache.hadoop.hive.ql.ddl.table.info.show.status.ShowTableStatusDesc;
 import org.apache.hadoop.hive.ql.ddl.table.info.show.tables.ShowTablesDesc;
 import org.apache.hadoop.hive.ql.ddl.table.partition.drop.AlterTableDropPartitionDesc;
 import org.apache.hadoop.hive.ql.ddl.table.partition.show.ShowPartitionsDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetLocationDesc;
+import org.apache.hadoop.hive.ql.ddl.table.storage.set.location.AlterTableSetLocationDesc;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.metadata.Hive;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLSemanticAnalyzerFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLSemanticAnalyzerFactory.java
index 119b555..06f60ab 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLSemanticAnalyzerFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/DDLSemanticAnalyzerFactory.java
@@ -49,7 +49,7 @@ public final class DDLSemanticAnalyzerFactory {
    */
   @Retention(RetentionPolicy.RUNTIME)
   public @interface DDLType {
-    int type();
+    int[] types() default {};
   }
 
   /**
@@ -76,7 +76,13 @@ public final class DDLSemanticAnalyzerFactory {
       }
 
       DDLType ddlType = analyzerClass.getAnnotation(DDLType.class);
-      TYPE_TO_ANALYZER.put(ddlType.type(), analyzerClass);
+      for (int type : ddlType.types()) {
+        if (TYPE_TO_ANALYZER.containsKey(type)) {
+          throw new IllegalStateException(
+              "Type " + type + " is declared more than once in different DDLType annotations.");
+        }
+        TYPE_TO_ANALYZER.put(type, analyzerClass);
+      }
     }
 
     Set<Class<? extends DDLSemanticAnalyzerCategory>> analyzerCategoryClasses =
@@ -87,7 +93,13 @@ public final class DDLSemanticAnalyzerFactory {
       }
 
       DDLType ddlType = analyzerCategoryClass.getAnnotation(DDLType.class);
-      TYPE_TO_ANALYZERCATEGORY.put(ddlType.type(), analyzerCategoryClass);
+      for (int type : ddlType.types()) {
+        if (TYPE_TO_ANALYZERCATEGORY.containsKey(type)) {
+          throw new IllegalStateException(
+              "Type " + type + " is declared more than once in different DDLType annotations for categories.");
+        }
+        TYPE_TO_ANALYZERCATEGORY.put(type, analyzerCategoryClass);
+      }
     }
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/location/AlterDatabaseSetLocationAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/location/AlterDatabaseSetLocationAnalyzer.java
index e22fd92..6ea68f0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/location/AlterDatabaseSetLocationAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/location/AlterDatabaseSetLocationAnalyzer.java
@@ -28,7 +28,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database set location commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERDATABASE_LOCATION)
+@DDLType(types = HiveParser.TOK_ALTERDATABASE_LOCATION)
 public class AlterDatabaseSetLocationAnalyzer extends AbstractAlterDatabaseAnalyzer {
   public AlterDatabaseSetLocationAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/owner/AlterDatabaseSetOwnerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/owner/AlterDatabaseSetOwnerAnalyzer.java
index 4e9f079..6102876 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/owner/AlterDatabaseSetOwnerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/owner/AlterDatabaseSetOwnerAnalyzer.java
@@ -30,7 +30,7 @@ import org.apache.hadoop.hive.ql.parse.authorization.AuthorizationParseUtils;
 /**
  * Analyzer for database set owner commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERDATABASE_OWNER)
+@DDLType(types = HiveParser.TOK_ALTERDATABASE_OWNER)
 public class AlterDatabaseSetOwnerAnalyzer extends AbstractAlterDatabaseAnalyzer {
   public AlterDatabaseSetOwnerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/poperties/AlterDatabaseSetPropertiesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/poperties/AlterDatabaseSetPropertiesAnalyzer.java
index e232935..79e0729 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/poperties/AlterDatabaseSetPropertiesAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/alter/poperties/AlterDatabaseSetPropertiesAnalyzer.java
@@ -30,7 +30,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database set properties commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERDATABASE_PROPERTIES)
+@DDLType(types = HiveParser.TOK_ALTERDATABASE_PROPERTIES)
 public class AlterDatabaseSetPropertiesAnalyzer extends AbstractAlterDatabaseAnalyzer {
   public AlterDatabaseSetPropertiesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java
index eb37193..431689e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/create/CreateDatabaseAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database creation commands.
  */
-@DDLType(type=HiveParser.TOK_CREATEDATABASE)
+@DDLType(types = HiveParser.TOK_CREATEDATABASE)
 public class CreateDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public CreateDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java
index 50ff015..b460811 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/desc/DescDatabaseAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database description commands.
  */
-@DDLType(type=HiveParser.TOK_DESCDATABASE)
+@DDLType(types = HiveParser.TOK_DESCDATABASE)
 public class DescDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public DescDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseAnalyzer.java
index 5823b1d..4bb984f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseAnalyzer.java
@@ -38,7 +38,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database dropping commands.
  */
-@DDLType(type=HiveParser.TOK_DROPDATABASE)
+@DDLType(types = HiveParser.TOK_DROPDATABASE)
 public class DropDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public DropDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/lock/LockDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/lock/LockDatabaseAnalyzer.java
index 498e3ab..fda2282 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/lock/LockDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/lock/LockDatabaseAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database locking commands.
  */
-@DDLType(type=HiveParser.TOK_LOCKDB)
+@DDLType(types = HiveParser.TOK_LOCKDB)
 public class LockDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public LockDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/show/ShowDatabasesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/show/ShowDatabasesAnalyzer.java
index 425205f..c8cf621 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/show/ShowDatabasesAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/show/ShowDatabasesAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show databases commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWDATABASES)
+@DDLType(types = HiveParser.TOK_SHOWDATABASES)
 public class ShowDatabasesAnalyzer extends BaseSemanticAnalyzer {
   public ShowDatabasesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/showcreate/ShowCreateDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/showcreate/ShowCreateDatabaseAnalyzer.java
index e8f028d..4345503 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/showcreate/ShowCreateDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/showcreate/ShowCreateDatabaseAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show create database commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_CREATEDATABASE)
+@DDLType(types = HiveParser.TOK_SHOW_CREATEDATABASE)
 public class ShowCreateDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public ShowCreateDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/unlock/UnlockDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/unlock/UnlockDatabaseAnalyzer.java
index e9f3d9b..64c80bf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/unlock/UnlockDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/unlock/UnlockDatabaseAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database unlocking commands.
  */
-@DDLType(type=HiveParser.TOK_UNLOCKDB)
+@DDLType(types = HiveParser.TOK_UNLOCKDB)
 public class UnlockDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public UnlockDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/use/SwitchDatabaseAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/use/SwitchDatabaseAnalyzer.java
index 134b671..97d8661 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/use/SwitchDatabaseAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/use/SwitchDatabaseAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for database switching commands.
  */
-@DDLType(type=HiveParser.TOK_SWITCHDATABASE)
+@DDLType(types = HiveParser.TOK_SWITCHDATABASE)
 public class SwitchDatabaseAnalyzer extends BaseSemanticAnalyzer {
   public SwitchDatabaseAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/create/CreateFunctionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/create/CreateFunctionAnalyzer.java
index 40dc4dc..3dbb427 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/create/CreateFunctionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/create/CreateFunctionAnalyzer.java
@@ -42,7 +42,7 @@ import com.google.common.collect.ImmutableMap;
 /**
  * Analyzer for function creation commands.
  */
-@DDLType(type=HiveParser.TOK_CREATEFUNCTION)
+@DDLType(types = HiveParser.TOK_CREATEFUNCTION)
 public class CreateFunctionAnalyzer extends AbstractFunctionAnalyzer {
   private static final Logger SESSION_STATE_LOG = LoggerFactory.getLogger("SessionState");
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/desc/DescFunctionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/desc/DescFunctionAnalyzer.java
index 50454f4..657d4ad 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/desc/DescFunctionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/desc/DescFunctionAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for function describing commands.
  */
-@DDLType(type=HiveParser.TOK_DESCFUNCTION)
+@DDLType(types = HiveParser.TOK_DESCFUNCTION)
 public class DescFunctionAnalyzer extends AbstractFunctionAnalyzer {
   public DescFunctionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/drop/DropFunctionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/drop/DropFunctionAnalyzer.java
index 7ab172a..23e76d8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/drop/DropFunctionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/drop/DropFunctionAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for function dropping commands.
  */
-@DDLType(type=HiveParser.TOK_DROPFUNCTION)
+@DDLType(types = HiveParser.TOK_DROPFUNCTION)
 public class DropFunctionAnalyzer extends AbstractFunctionAnalyzer {
   public DropFunctionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/create/CreateMacroAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/create/CreateMacroAnalyzer.java
index a2177e0..005eba7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/create/CreateMacroAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/create/CreateMacroAnalyzer.java
@@ -54,7 +54,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 /**
  * Analyzer for macro creation commands.
  */
-@DDLType(type=HiveParser.TOK_CREATEMACRO)
+@DDLType(types = HiveParser.TOK_CREATEMACRO)
 public class CreateMacroAnalyzer extends BaseSemanticAnalyzer {
   public CreateMacroAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/drop/DropMacroAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/drop/DropMacroAnalyzer.java
index 15ce475..e47b290 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/drop/DropMacroAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/macro/drop/DropMacroAnalyzer.java
@@ -38,7 +38,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for macro dropping commands.
  */
-@DDLType(type=HiveParser.TOK_DROPMACRO)
+@DDLType(types = HiveParser.TOK_DROPMACRO)
 public class DropMacroAnalyzer extends BaseSemanticAnalyzer {
   public DropMacroAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/reload/ReloadFunctionsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/reload/ReloadFunctionsAnalyzer.java
index 06c6622..0aaa33a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/reload/ReloadFunctionsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/reload/ReloadFunctionsAnalyzer.java
@@ -30,7 +30,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for reloading functions commands.
  */
-@DDLType(type=HiveParser.TOK_RELOADFUNCTIONS)
+@DDLType(types = HiveParser.TOK_RELOADFUNCTIONS)
 public class ReloadFunctionsAnalyzer extends BaseSemanticAnalyzer {
   public ReloadFunctionsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/show/ShowFunctionsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/show/ShowFunctionsAnalyzer.java
index 3926585..3f4f181 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/show/ShowFunctionsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/function/show/ShowFunctionsAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for showing functions commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWFUNCTIONS)
+@DDLType(types = HiveParser.TOK_SHOWFUNCTIONS)
 public class ShowFunctionsAnalyzer extends BaseSemanticAnalyzer {
   public ShowFunctionsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/conf/ShowConfAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/conf/ShowConfAnalyzer.java
index a7c88a5..ccbc724 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/conf/ShowConfAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/conf/ShowConfAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show conf commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWCONF)
+@DDLType(types = HiveParser.TOK_SHOWCONF)
 public class ShowConfAnalyzer extends AbstractFunctionAnalyzer {
   public ShowConfAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/metadata/CacheMetadataAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/metadata/CacheMetadataAnalyzer.java
index c040b40..2443c89 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/metadata/CacheMetadataAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/metadata/CacheMetadataAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for cache metadata commands.
  */
-@DDLType(type=HiveParser.TOK_CACHE_METADATA)
+@DDLType(types = HiveParser.TOK_CACHE_METADATA)
 public class CacheMetadataAnalyzer extends AbstractFunctionAnalyzer {
   public CacheMetadataAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/msck/MsckAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/msck/MsckAnalyzer.java
index 3d8fb58..c1177db 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/msck/MsckAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/misc/msck/MsckAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for metastore check commands.
  */
-@DDLType(type=HiveParser.TOK_MSCK)
+@DDLType(types = HiveParser.TOK_MSCK)
 public class MsckAnalyzer extends AbstractFunctionAnalyzer {
   public MsckAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/grant/GrantAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/grant/GrantAnalyzer.java
index c16609b..ecffda8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/grant/GrantAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/grant/GrantAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for granting commands.
  */
-@DDLType(type=HiveParser.TOK_GRANT)
+@DDLType(types = HiveParser.TOK_GRANT)
 public class GrantAnalyzer extends AbstractPrivilegeAnalyzer {
   public GrantAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/revoke/RevokeAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/revoke/RevokeAnalyzer.java
index 8fe1611..945938c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/revoke/RevokeAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/revoke/RevokeAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for revoke commands.
  */
-@DDLType(type=HiveParser.TOK_REVOKE)
+@DDLType(types = HiveParser.TOK_REVOKE)
 public class RevokeAnalyzer extends AbstractPrivilegeAnalyzer {
   public RevokeAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/create/CreateRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/create/CreateRoleAnalyzer.java
index d4975d1..64e4ba2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/create/CreateRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/create/CreateRoleAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for role creation commands.
  */
-@DDLType(type=HiveParser.TOK_CREATEROLE)
+@DDLType(types = HiveParser.TOK_CREATEROLE)
 public class CreateRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public CreateRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/drop/DropRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/drop/DropRoleAnalyzer.java
index 0b2a848..f6f765e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/drop/DropRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/drop/DropRoleAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for role dropping commands.
  */
-@DDLType(type=HiveParser.TOK_DROPROLE)
+@DDLType(types = HiveParser.TOK_DROPROLE)
 public class DropRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public DropRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/grant/GrantRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/grant/GrantRoleAnalyzer.java
index d845c43..02aa298 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/grant/GrantRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/grant/GrantRoleAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for granting to role commands.
  */
-@DDLType(type=HiveParser.TOK_GRANT_ROLE)
+@DDLType(types = HiveParser.TOK_GRANT_ROLE)
 public class GrantRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public GrantRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/revoke/RevokeRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/revoke/RevokeRoleAnalyzer.java
index 21f71cb..ed7180b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/revoke/RevokeRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/revoke/RevokeRoleAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for revoking from role commands.
  */
-@DDLType(type=HiveParser.TOK_REVOKE_ROLE)
+@DDLType(types = HiveParser.TOK_REVOKE_ROLE)
 public class RevokeRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public RevokeRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/set/SetRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/set/SetRoleAnalyzer.java
index 39d887c..53d433b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/set/SetRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/set/SetRoleAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for setting a role commands.
  */
-@DDLType(type=HiveParser.TOK_SET_ROLE)
+@DDLType(types = HiveParser.TOK_SET_ROLE)
 public class SetRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public SetRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowCurrentRoleAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowCurrentRoleAnalyzer.java
index f4f8437..959bfe0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowCurrentRoleAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowCurrentRoleAnalyzer.java
@@ -34,7 +34,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for showing the current role command.
  */
-@DDLType(type=HiveParser.TOK_SHOW_CURRENT_ROLE)
+@DDLType(types = HiveParser.TOK_SHOW_CURRENT_ROLE)
 public class ShowCurrentRoleAnalyzer extends AbstractPrivilegeAnalyzer {
   public ShowCurrentRoleAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowRolesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowRolesAnalyzer.java
index 20860fd..a974462 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowRolesAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/role/show/ShowRolesAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for showing roles commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_ROLES)
+@DDLType(types = HiveParser.TOK_SHOW_ROLES)
 public class ShowRolesAnalyzer extends AbstractPrivilegeAnalyzer {
   public ShowRolesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/grant/ShowGrantAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/grant/ShowGrantAnalyzer.java
index 8b0f51c..1666e77 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/grant/ShowGrantAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/grant/ShowGrantAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for showing grant commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_GRANT)
+@DDLType(types = HiveParser.TOK_SHOW_GRANT)
 public class ShowGrantAnalyzer extends AbstractPrivilegeAnalyzer {
   public ShowGrantAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/principals/ShowPrincipalsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/principals/ShowPrincipalsAnalyzer.java
index 7cdeef1..6db2049 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/principals/ShowPrincipalsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/principals/ShowPrincipalsAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for showing principals commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_ROLE_PRINCIPALS)
+@DDLType(types = HiveParser.TOK_SHOW_ROLE_PRINCIPALS)
 public class ShowPrincipalsAnalyzer extends AbstractPrivilegeAnalyzer {
   public ShowPrincipalsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/rolegrant/ShowRoleGrantAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/rolegrant/ShowRoleGrantAnalyzer.java
index 2e093e7..45ea4ce 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/rolegrant/ShowRoleGrantAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/privilege/show/rolegrant/ShowRoleGrantAnalyzer.java
@@ -32,7 +32,7 @@ import com.google.common.annotations.VisibleForTesting;
 /**
  * Analyzer for showing role grant commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_ROLE_GRANT)
+@DDLType(types = HiveParser.TOK_SHOW_ROLE_GRANT)
 public class ShowRoleGrantAnalyzer extends AbstractPrivilegeAnalyzer {
   public ShowRoleGrantAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
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
index 21116a8..96cc8cd 100644
--- 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
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for abort transactions commands.
  */
-@DDLType(type=HiveParser.TOK_ABORT_TRANSACTIONS)
+@DDLType(types = HiveParser.TOK_ABORT_TRANSACTIONS)
 public class AbortTransactionsAnalyzer extends BaseSemanticAnalyzer {
   public AbortTransactionsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
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
index 71b1e04..116584f 100644
--- 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
@@ -36,7 +36,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for kill query commands.
  */
-@DDLType(type=HiveParser.TOK_KILL_QUERY)
+@DDLType(types = HiveParser.TOK_KILL_QUERY)
 public class KillQueriesAnalyzer extends BaseSemanticAnalyzer {
   public KillQueriesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
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
index 99b9f5d..d4175f3 100644
--- 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
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show compactions commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_COMPACTIONS)
+@DDLType(types = HiveParser.TOK_SHOW_COMPACTIONS)
 public class ShowCompactionsAnalyzer extends BaseSemanticAnalyzer {
   public ShowCompactionsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
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
index 5bb2595..627fa47 100644
--- 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
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show transactions commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_TRANSACTIONS)
+@DDLType(types = HiveParser.TOK_SHOW_TRANSACTIONS)
 public class ShowTransactionsAnalyzer extends BaseSemanticAnalyzer {
   public ShowTransactionsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AbstractAlterTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AbstractAlterTableAnalyzer.java
index 81800fe..0acd501 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AbstractAlterTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AbstractAlterTableAnalyzer.java
@@ -150,13 +150,13 @@ public abstract class AbstractAlterTableAnalyzer extends BaseSemanticAnalyzer {
   }
 
   // For the time while all the alter table operations are getting migrated there is a duplication of this method here
-  private WriteType determineAlterTableWriteType(Table tab, AbstractAlterTableDesc desc, AlterTableType op) {
+  private WriteType determineAlterTableWriteType(Table table, AbstractAlterTableDesc desc, AlterTableType op) {
     boolean convertingToAcid = false;
     if (desc != null && desc.getProps() != null &&
         Boolean.parseBoolean(desc.getProps().get(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL))) {
       convertingToAcid = true;
     }
-    if (!AcidUtils.isTransactionalTable(tab) && convertingToAcid) {
+    if (!AcidUtils.isTransactionalTable(table) && convertingToAcid) {
       // non-acid to transactional conversion (property itself) must be mutexed to prevent concurrent writes.
       // See HIVE-16688 for use cases.
       return WriteType.DDL_EXCLUSIVE;
@@ -164,9 +164,9 @@ public abstract class AbstractAlterTableAnalyzer extends BaseSemanticAnalyzer {
     return WriteEntity.determineAlterTableWriteType(op);
   }
 
-  protected void validateAlterTableType(Table tbl, AlterTableType op, boolean expectView)
+  protected void validateAlterTableType(Table table, AlterTableType op, boolean expectView)
       throws SemanticException {
-    if (tbl.isView()) {
+    if (table.isView()) {
       if (!expectView) {
         throw new SemanticException(ErrorMsg.ALTER_COMMAND_FOR_VIEWS.getMsg());
       }
@@ -188,9 +188,9 @@ public abstract class AbstractAlterTableAnalyzer extends BaseSemanticAnalyzer {
         throw new SemanticException(ErrorMsg.ALTER_COMMAND_FOR_TABLES.getMsg());
       }
     }
-    if (tbl.isNonNative() && !AlterTableType.NON_NATIVE_TABLE_ALLOWED.contains(op)) {
+    if (table.isNonNative() && !AlterTableType.NON_NATIVE_TABLE_ALLOWED.contains(op)) {
       throw new SemanticException(ErrorMsg.ALTER_TABLE_NON_NATIVE.format(
-          AlterTableType.NON_NATIVE_TABLE_ALLOWED.toString(), tbl.getTableName()));
+          AlterTableType.NON_NATIVE_TABLE_ALLOWED.toString(), table.getTableName()));
     }
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AlterTableAnalyzerCategory.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AlterTableAnalyzerCategory.java
index 34a6b3c..737958d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AlterTableAnalyzerCategory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/AlterTableAnalyzerCategory.java
@@ -27,7 +27,7 @@ import org.apache.hadoop.hive.ql.parse.HiveParser;
  * Alter Table category helper. It derives the actual type of the command from the root element, by selecting the type
  * of the second child, as the Alter Table commands have this structure: tableName command partitionSpec?
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE)
+@DDLType(types = HiveParser.TOK_ALTERTABLE)
 public class AlterTableAnalyzerCategory implements DDLSemanticAnalyzerCategory {
   @Override
   public int getType(ASTNode root) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java
index 937486d..4b49013 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for add columns commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_ADDCOLS)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_ADDCOLS)
 public class AlterTableAddColumnsAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableAddColumnsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/change/AlterTableChangeColumnAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/change/AlterTableChangeColumnAnalyzer.java
index af4039a..5b9730b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/change/AlterTableChangeColumnAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/change/AlterTableChangeColumnAnalyzer.java
@@ -50,7 +50,7 @@ import com.google.common.collect.ImmutableList;
 /**
  * Analyzer for change columns commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_RENAMECOL)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_RENAMECOL)
 public class AlterTableChangeColumnAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableChangeColumnAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
index eaebf11..933b80e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for replace columns commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_REPLACECOLS)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_REPLACECOLS)
 public class AlterTableReplaceColumnsAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableReplaceColumnsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/show/ShowColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/show/ShowColumnsAnalyzer.java
index 082114a..4c77ed4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/show/ShowColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/show/ShowColumnsAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show columns commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWCOLUMNS)
+@DDLType(types = HiveParser.TOK_SHOWCOLUMNS)
 public class ShowColumnsAnalyzer extends BaseSemanticAnalyzer {
   public ShowColumnsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
index db4e522..f47579f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for update columns commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS)
 public class AlterTableUpdateColumnsAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableUpdateColumnsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/add/AlterTableAddConstraintAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/add/AlterTableAddConstraintAnalyzer.java
index 2ff44af..533c1b2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/add/AlterTableAddConstraintAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/add/AlterTableAddConstraintAnalyzer.java
@@ -42,7 +42,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for add constraint commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_ADDCONSTRAINT)
 public class AlterTableAddConstraintAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableAddConstraintAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java
index 472d459..d6be049 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop constraint commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT)
 public class AlterTableDropConstraintAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableDropConstraintAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableAnalyzer.java
index 99b6ea6..c7479da 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/show/ShowCreateTableAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for showing table creation commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_CREATETABLE)
+@DDLType(types = HiveParser.TOK_SHOW_CREATETABLE)
 public class ShowCreateTableAnalyzer extends BaseSemanticAnalyzer {
   public ShowCreateTableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/drop/DropTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/drop/DropTableAnalyzer.java
index bf06d3a..9ad3b6d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/drop/DropTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/drop/DropTableAnalyzer.java
@@ -36,7 +36,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for table dropping commands.
  */
-@DDLType(type=HiveParser.TOK_DROPTABLE)
+@DDLType(types = HiveParser.TOK_DROPTABLE)
 public class DropTableAnalyzer extends BaseSemanticAnalyzer {
   public DropTableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableAnalyzer.java
index cc11d72..0a1a99a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableAnalyzer.java
@@ -56,7 +56,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
  *   id           --> root node for columnName
  * formatted
  */
-@DDLType(type=HiveParser.TOK_DESCTABLE)
+@DDLType(types = HiveParser.TOK_DESCTABLE)
 public class DescTableAnalyzer extends BaseSemanticAnalyzer {
   public DescTableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/properties/ShowTablePropertiesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/properties/ShowTablePropertiesAnalyzer.java
index c399364..aa19398 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/properties/ShowTablePropertiesAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/properties/ShowTablePropertiesAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show table properties commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_TBLPROPERTIES)
+@DDLType(types = HiveParser.TOK_SHOW_TBLPROPERTIES)
 public class ShowTablePropertiesAnalyzer extends BaseSemanticAnalyzer {
   public ShowTablePropertiesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/status/ShowTableStatusAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/status/ShowTableStatusAnalyzer.java
index 77a799c..54e54b3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/status/ShowTableStatusAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/status/ShowTableStatusAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.session.SessionState;
 /**
  * Analyzer for show table status commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_TABLESTATUS)
+@DDLType(types = HiveParser.TOK_SHOW_TABLESTATUS)
 public class ShowTableStatusAnalyzer extends BaseSemanticAnalyzer {
   public ShowTableStatusAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/tables/ShowTablesAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/tables/ShowTablesAnalyzer.java
index dd2b6e6..826cb29 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/tables/ShowTablesAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/show/tables/ShowTablesAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.session.SessionState;
 /**
  * Analyzer for show tables commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWTABLES)
+@DDLType(types = HiveParser.TOK_SHOWTABLES)
 public class ShowTablesAnalyzer extends BaseSemanticAnalyzer {
   public ShowTablesAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/LockTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/LockTableAnalyzer.java
index 8282966..ecab718 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/LockTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/LockTableAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for lock table commands.
  */
-@DDLType(type=HiveParser.TOK_LOCKTABLE)
+@DDLType(types = HiveParser.TOK_LOCKTABLE)
 public class LockTableAnalyzer extends BaseSemanticAnalyzer {
   public LockTableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/UnlockTableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/UnlockTableAnalyzer.java
index 18a838b..e3b15ca 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/UnlockTableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/UnlockTableAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for unlock table commands.
  */
-@DDLType(type=HiveParser.TOK_UNLOCKTABLE)
+@DDLType(types = HiveParser.TOK_UNLOCKTABLE)
 public class UnlockTableAnalyzer extends BaseSemanticAnalyzer {
   public UnlockTableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowDbLocksAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowDbLocksAnalyzer.java
index c6b7f42..f0ba4c9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowDbLocksAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowDbLocksAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show DB locks commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWDBLOCKS)
+@DDLType(types = HiveParser.TOK_SHOWDBLOCKS)
 public class ShowDbLocksAnalyzer extends BaseSemanticAnalyzer {
   public ShowDbLocksAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowLocksAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowLocksAnalyzer.java
index 709ce47..bcadec7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowLocksAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/lock/show/ShowLocksAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show locks commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWLOCKS)
+@DDLType(types = HiveParser.TOK_SHOWLOCKS)
 public class ShowLocksAnalyzer extends BaseSemanticAnalyzer {
   public ShowLocksAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionAnalyzer.java
index 184dced..a3ee65f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterTableAddPartitionAnalyzer.java
@@ -41,7 +41,7 @@ import org.apache.hadoop.hive.ql.plan.MoveWork;
 /**
  * Analyzer for add partition commands for tables.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_ADDPARTS)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_ADDPARTS)
 public class AlterTableAddPartitionAnalyzer extends AbstractAddPartitionAnalyzer {
   public AlterTableAddPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
index 2e69325..c1d2887 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/add/AlterViewAddPartitionAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for add partition commands for views.
  */
-@DDLType(type=HiveParser.TOK_ALTERVIEW_ADDPARTS)
+@DDLType(types = HiveParser.TOK_ALTERVIEW_ADDPARTS)
 public class AlterViewAddPartitionAnalyzer extends AbstractAddPartitionAnalyzer {
   public AlterViewAddPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/alter/AlterTableAlterPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/alter/AlterTableAlterPartitionAnalyzer.java
index dfdb765..9019c69 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/alter/AlterTableAlterPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/alter/AlterTableAlterPartitionAnalyzer.java
@@ -39,7 +39,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter partition commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_PARTCOLTYPE)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_PARTCOLTYPE)
 public  class AlterTableAlterPartitionAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableAlterPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterTableDropPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterTableDropPartitionAnalyzer.java
index 5d415f6..cbb622e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterTableDropPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterTableDropPartitionAnalyzer.java
@@ -26,7 +26,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop partition commands for tables.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_DROPPARTS)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_DROPPARTS)
 public class AlterTableDropPartitionAnalyzer extends AbstractDropPartitionAnalyzer {
   public AlterTableDropPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterViewDropPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterViewDropPartitionAnalyzer.java
index 4278d98..ff77da0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterViewDropPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/drop/AlterViewDropPartitionAnalyzer.java
@@ -26,7 +26,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop partition commands for views.
  */
-@DDLType(type=HiveParser.TOK_ALTERVIEW_DROPPARTS)
+@DDLType(types = HiveParser.TOK_ALTERVIEW_DROPPARTS)
 public class AlterViewDropPartitionAnalyzer extends AbstractDropPartitionAnalyzer {
   public AlterViewDropPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/exchange/AlterTableExchangePartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/exchange/AlterTableExchangePartitionAnalyzer.java
index 702ef0b..5069d67 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/exchange/AlterTableExchangePartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/exchange/AlterTableExchangePartitionAnalyzer.java
@@ -44,7 +44,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for exchange partition commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_EXCHANGEPARTITION)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_EXCHANGEPARTITION)
 public  class AlterTableExchangePartitionAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableExchangePartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java
index 14424d3..bc607a5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java
@@ -41,7 +41,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for rename partition commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_RENAMEPART)
+@DDLType(types = HiveParser.TOK_ALTERTABLE_RENAMEPART)
 public  class AlterTableRenamePartitionAnalyzer extends AbstractAlterTableAnalyzer {
   public AlterTableRenamePartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/show/ShowPartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/show/ShowPartitionAnalyzer.java
index 2466577..2f659e6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/show/ShowPartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/show/ShowPartitionAnalyzer.java
@@ -37,7 +37,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show partition commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWPARTITIONS)
+@DDLType(types = HiveParser.TOK_SHOWPARTITIONS)
 public  class ShowPartitionAnalyzer extends BaseSemanticAnalyzer {
   public ShowPartitionAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AbstractAlterTableArchiveAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AbstractAlterTableArchiveAnalyzer.java
new file mode 100644
index 0000000..7fb414f
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AbstractAlterTableArchiveAnalyzer.java
@@ -0,0 +1,86 @@
+/*
+ * 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.table.storage.archive;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.ErrorMsg;
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLDesc;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+import org.apache.hadoop.hive.ql.ddl.table.partition.PartitionUtils;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.hooks.ReadEntity;
+import org.apache.hadoop.hive.ql.hooks.WriteEntity;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+
+/**
+ * Abstract ancestor of analyzer for archive / unarchive commands for tables.
+ */
+public abstract class AbstractAlterTableArchiveAnalyzer extends AbstractAlterTableAnalyzer {
+  public AbstractAlterTableArchiveAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  // partSpec coming from the input is not applicable here as archiver gets it's partitions from a different part of
+  // the AST tree
+  protected void analyzeCommand(TableName tableName, Map<String, String> partSpec, ASTNode command)
+      throws SemanticException {
+    if (!conf.getBoolVar(HiveConf.ConfVars.HIVEARCHIVEENABLED)) {
+      throw new SemanticException(ErrorMsg.ARCHIVE_METHODS_DISABLED.getMsg());
+    }
+
+    Table table = getTable(tableName);
+    validateAlterTableType(table, AlterTableType.ARCHIVE, false);
+
+    List<Map<String, String>> partitionSpecs = getPartitionSpecs(table, command);
+    if (partitionSpecs.size() > 1) {
+      throw new SemanticException(getMultiPartsErrorMessage().getMsg());
+    }
+    if (partitionSpecs.size() == 0) {
+      throw new SemanticException(ErrorMsg.ARCHIVE_ON_TABLE.getMsg());
+    }
+
+    Map<String, String> partitionSpec = partitionSpecs.get(0);
+    try {
+      isValidPrefixSpec(table, partitionSpec);
+    } catch (HiveException e) {
+      throw new SemanticException(e.getMessage(), e);
+    }
+
+    inputs.add(new ReadEntity(table));
+    PartitionUtils.addTablePartsOutputs(db, outputs, table, partitionSpecs, true, WriteEntity.WriteType.DDL_NO_LOCK);
+
+    DDLDesc archiveDesc = createDesc(tableName, partitionSpec);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), archiveDesc)));
+  }
+
+  protected abstract ErrorMsg getMultiPartsErrorMessage();
+
+  protected abstract DDLDesc createDesc(TableName tableName, Map<String, String> partitionSpec);
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveAnalyzer.java
similarity index 61%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveAnalyzer.java
index 065f020..52d6a8f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveAnalyzer.java
@@ -16,27 +16,34 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.workloadmanagement.mapping.create;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
+import java.util.Map;
+
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.QueryState;
 import org.apache.hadoop.hive.ql.ddl.DDLDesc;
 import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
-import org.apache.hadoop.hive.ql.ddl.workloadmanagement.mapping.AbstractVMMappingAnalyzer;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for create mapping commands.
+ * Analyzer for archive commands for tables.
  */
-@DDLType(type=HiveParser.TOK_CREATE_MAPPING)
-public class CreateWMMappingAnalyzer extends AbstractVMMappingAnalyzer {
-  public CreateWMMappingAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = HiveParser.TOK_ALTERTABLE_ARCHIVE)
+public class AlterTableArchiveAnalyzer extends AbstractAlterTableArchiveAnalyzer {
+  public AlterTableArchiveAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
-  protected DDLDesc getDesc(String resourcePlanName, String entityType, String entityName, String poolPath,
-      Integer ordering) {
-    return new CreateWMMappingDesc(resourcePlanName, entityType, entityName, poolPath, ordering);
+  public ErrorMsg getMultiPartsErrorMessage() {
+    return ErrorMsg.ARCHIVE_ON_MULI_PARTS;
+  }
+
+  @Override
+  protected DDLDesc createDesc(TableName tableName, Map<String, String> partitionSpec) {
+    return new AlterTableArchiveDesc(tableName.getNotEmptyDbTable(), partitionSpec);
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveDesc.java
index 9dd6c8e..9eea236 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveOperation.java
index 248fe0f..ffa7a67 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
 import org.apache.hadoop.hive.metastore.ReplChangeManager;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
@@ -25,6 +25,8 @@ import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.io.HdfsUtils;
 import org.apache.hadoop.hive.ql.exec.ArchiveUtils.PartSpecInfo;
 
+import static org.apache.hadoop.hive.ql.ddl.table.storage.archive.AlterTableArchiveUtils.ARCHIVE_NAME;
+
 import java.io.IOException;
 import java.net.URI;
 import java.util.List;
@@ -45,8 +47,6 @@ import org.apache.hadoop.util.ToolRunner;
 
 import com.google.common.collect.ImmutableList;
 
-import static org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableArchiveUtils.ARCHIVE_NAME;
-
 /**
  * Operation process of archiving a table.
  */
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveUtils.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveUtils.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveUtils.java
index c285405..84743a7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableArchiveUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableArchiveUtils.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveAnalyzer.java
similarity index 60%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveAnalyzer.java
index 065f020..3ee3016 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveAnalyzer.java
@@ -16,27 +16,34 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.workloadmanagement.mapping.create;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
+import java.util.Map;
+
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.QueryState;
 import org.apache.hadoop.hive.ql.ddl.DDLDesc;
 import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
-import org.apache.hadoop.hive.ql.ddl.workloadmanagement.mapping.AbstractVMMappingAnalyzer;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for create mapping commands.
+ * Analyzer for unarchive commands for tables.
  */
-@DDLType(type=HiveParser.TOK_CREATE_MAPPING)
-public class CreateWMMappingAnalyzer extends AbstractVMMappingAnalyzer {
-  public CreateWMMappingAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = HiveParser.TOK_ALTERTABLE_UNARCHIVE)
+public class AlterTableUnarchiveAnalyzer extends AbstractAlterTableArchiveAnalyzer {
+  public AlterTableUnarchiveAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
-  protected DDLDesc getDesc(String resourcePlanName, String entityType, String entityName, String poolPath,
-      Integer ordering) {
-    return new CreateWMMappingDesc(resourcePlanName, entityType, entityName, poolPath, ordering);
+  public ErrorMsg getMultiPartsErrorMessage() {
+    return ErrorMsg.UNARCHIVE_ON_MULI_PARTS;
+  }
+
+  @Override
+  protected DDLDesc createDesc(TableName tableName, Map<String, String> partitionSpec) {
+    return new AlterTableUnarchiveDesc(tableName.getNotEmptyDbTable(), partitionSpec);
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveDesc.java
index 06889ae..8db4eb7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveOperation.java
index 39416ed..8f0a477 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableUnarchiveOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/archive/AlterTableUnarchiveOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.archive;
 
 import org.apache.hadoop.hive.metastore.ReplChangeManager;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
@@ -31,7 +31,7 @@ import org.apache.hadoop.util.ToolRunner;
 
 import com.google.common.collect.ImmutableList;
 
-import static org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableArchiveUtils.ARCHIVE_NAME;
+import static org.apache.hadoop.hive.ql.ddl.table.storage.archive.AlterTableArchiveUtils.ARCHIVE_NAME;
 
 import java.io.IOException;
 import java.net.URI;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusterSortAnalyzer.java
similarity index 50%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusterSortAnalyzer.java
index eaebf11..f1d89e4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusterSortAnalyzer.java
@@ -16,46 +16,64 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.column.replace;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.hadoop.hive.common.TableName;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.Order;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
-import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for replace columns commands.
+ * Analyzer for table cluster sort commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_REPLACECOLS)
-public class AlterTableReplaceColumnsAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableReplaceColumnsAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = HiveParser.TOK_ALTERTABLE_CLUSTER_SORT)
+public class AlterTableClusterSortAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableClusterSortAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    List<FieldSchema> newCols = getColumns((ASTNode) command.getChild(0));
-    boolean isCascade = false;
-    if (null != command.getFirstChildWithType(HiveParser.TOK_CASCADE)) {
-      isCascade = true;
-    }
+    AbstractAlterTableDesc desc;
+    switch (command.getChild(0).getType()) {
+    case HiveParser.TOK_NOT_CLUSTERED:
+      desc = new AlterTableNotClusteredDesc(tableName, partitionSpec);
+      break;
+    case HiveParser.TOK_NOT_SORTED:
+      desc = new AlterTableNotSortedDesc(tableName, partitionSpec);
+      break;
+    case HiveParser.TOK_ALTERTABLE_BUCKETS:
+      ASTNode buckets = (ASTNode) command.getChild(0);
+      List<String> bucketCols = getColumnNames((ASTNode) buckets.getChild(0));
+      List<Order> sortCols = new ArrayList<Order>();
+      int numBuckets = -1;
+      if (buckets.getChildCount() == 2) {
+        numBuckets = Integer.parseInt(buckets.getChild(1).getText());
+      } else {
+        sortCols = getColumnNamesOrder((ASTNode) buckets.getChild(1));
+        numBuckets = Integer.parseInt(buckets.getChild(2).getText());
+      }
+      if (numBuckets <= 0) {
+        throw new SemanticException(ErrorMsg.INVALID_BUCKET_NUMBER.getMsg());
+      }
 
-    AlterTableReplaceColumnsDesc desc = new AlterTableReplaceColumnsDesc(tableName, partitionSpec, isCascade, newCols);
-    Table table = getTable(tableName, true);
-    if (AcidUtils.isTransactionalTable(table)) {
-      setAcidDdlDesc(desc);
+      desc = new AlterTableClusteredByDesc(tableName, partitionSpec, numBuckets, bucketCols, sortCols);
+      break;
+    default:
+      throw new SemanticException("Invalid operation " + command.getChild(0).getType());
     }
 
     addInputsOutputsAlterTable(tableName, partitionSpec, desc, desc.getType(), false);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByDesc.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByDesc.java
index a9a4724..1922890 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.List;
 import java.util.Map;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByOperation.java
index c232e66..07e7edd 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableClusteredByOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableClusteredByOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.List;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsAnalyzer.java
similarity index 62%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsAnalyzer.java
index 937486d..bc79b64 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/add/AlterTableAddColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsAnalyzer.java
@@ -16,49 +16,47 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.column.add;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
-import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.hadoop.hive.common.TableName;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
+import org.apache.hadoop.hive.ql.hooks.ReadEntity;
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for add columns commands.
+ * Analyzer for set bucket number commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_ADDCOLS)
-public class AlterTableAddColumnsAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableAddColumnsAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_BUCKETS, HiveParser.TOK_ALTERPARTITION_BUCKETS})
+public class AlterTableIntoBucketsAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableIntoBucketsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    List<FieldSchema> newCols = getColumns((ASTNode) command.getChild(0));
-    boolean isCascade = false;
-    if (null != command.getFirstChildWithType(HiveParser.TOK_CASCADE)) {
-      isCascade = true;
-    }
-
-    AlterTableAddColumnsDesc desc = new AlterTableAddColumnsDesc(tableName, partitionSpec, isCascade, newCols);
     Table table = getTable(tableName, true);
-    if (AcidUtils.isTransactionalTable(table)) {
-      setAcidDdlDesc(desc);
+    if (CollectionUtils.isEmpty(table.getBucketCols())) {
+      throw new SemanticException(ErrorMsg.ALTER_BUCKETNUM_NONBUCKETIZED_TBL.getMsg());
     }
 
-    addInputsOutputsAlterTable(tableName, partitionSpec, desc, desc.getType(), false);
+    validateAlterTableType(table, AlterTableType.INTO_BUCKETS, false);
+    inputs.add(new ReadEntity(table));
+
+    int numberOfBuckets = Integer.parseInt(command.getChild(0).getText());
+    AlterTableIntoBucketsDesc desc = new AlterTableIntoBucketsDesc(tableName, partitionSpec, numberOfBuckets);
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsDesc.java
index c8d1a59..7be0be1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsOperation.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsOperation.java
index f7d224b..f379512 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableIntoBucketsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableIntoBucketsOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
 import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableOperation;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredDesc.java
index 37005f6..69f97b3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredOperation.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredOperation.java
index 9b4fb32..479d1be 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotClusteredOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotClusteredOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.ArrayList;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedDesc.java
index 30614f2..3ff370a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedOperation.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedOperation.java
index 3d3996d..076bb0b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSortedOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/cluster/AlterTableNotSortedOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.cluster;
 
 import java.util.ArrayList;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactAnalyzer.java
similarity index 57%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactAnalyzer.java
index eaebf11..b287cdb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/replace/AlterTableReplaceColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactAnalyzer.java
@@ -16,49 +16,57 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.column.replace;
+package org.apache.hadoop.hive.ql.ddl.table.storage.compact;
 
-import java.util.List;
 import java.util.Map;
 
 import org.apache.hadoop.hive.common.TableName;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.CompactionType;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 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.ddl.table.AbstractAlterTableAnalyzer;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
-import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for replace columns commands.
+ * Analyzer for compact commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_REPLACECOLS)
-public class AlterTableReplaceColumnsAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableReplaceColumnsAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = HiveParser.TOK_ALTERTABLE_COMPACT)
+public class AlterTableCompactAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableCompactAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    List<FieldSchema> newCols = getColumns((ASTNode) command.getChild(0));
-    boolean isCascade = false;
-    if (null != command.getFirstChildWithType(HiveParser.TOK_CASCADE)) {
-      isCascade = true;
+    String type = unescapeSQLString(command.getChild(0).getText()).toLowerCase();
+    try {
+      CompactionType.valueOf(type.toUpperCase());
+    } catch (IllegalArgumentException e) {
+      throw new SemanticException(ErrorMsg.INVALID_COMPACTION_TYPE.getMsg());
     }
 
-    AlterTableReplaceColumnsDesc desc = new AlterTableReplaceColumnsDesc(tableName, partitionSpec, isCascade, newCols);
-    Table table = getTable(tableName, true);
-    if (AcidUtils.isTransactionalTable(table)) {
-      setAcidDdlDesc(desc);
+    Map<String, String> mapProp = null;
+    boolean isBlocking = false;
+    for (int i = 0; i < command.getChildCount(); i++) {
+      switch (command.getChild(i).getType()) {
+      case HiveParser.TOK_TABLEPROPERTIES:
+        mapProp = getProps((ASTNode) (command.getChild(i)).getChild(0));
+        break;
+      case HiveParser.TOK_BLOCKING:
+        isBlocking = true;
+        break;
+      default:
+        break;
+      }
     }
 
-    addInputsOutputsAlterTable(tableName, partitionSpec, desc, desc.getType(), false);
+    AlterTableCompactDesc desc = new AlterTableCompactDesc(tableName, partitionSpec, type, isBlocking, mapProp);
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactDesc.java
index 3a512ba..90e2cd3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.compact;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
index 8e576fa..5684df0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableCompactOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.compact;
 
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
new file mode 100644
index 0000000..dc60a3f
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateAnalyzer.java
@@ -0,0 +1,225 @@
+/*
+ * 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.table.storage.concatenate;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.metastore.TableType;
+import org.apache.hadoop.hive.ql.ErrorMsg;
+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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+import org.apache.hadoop.hive.ql.ddl.table.partition.PartitionUtils;
+import org.apache.hadoop.hive.ql.ddl.table.storage.compact.AlterTableCompactDesc;
+import org.apache.hadoop.hive.ql.exec.ArchiveUtils;
+import org.apache.hadoop.hive.ql.exec.Task;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.exec.Utilities;
+import org.apache.hadoop.hive.ql.io.AcidUtils;
+import org.apache.hadoop.hive.ql.io.RCFileInputFormat;
+import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat;
+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.ASTNode;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.BasicStatsWork;
+import org.apache.hadoop.hive.ql.plan.ListBucketingCtx;
+import org.apache.hadoop.hive.ql.plan.LoadTableDesc;
+import org.apache.hadoop.hive.ql.plan.MoveWork;
+import org.apache.hadoop.hive.ql.plan.StatsWork;
+import org.apache.hadoop.hive.ql.plan.TableDesc;
+import org.apache.hadoop.mapred.InputFormat;
+
+/**
+ * Analyzer for compact commands.
+ */
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_MERGEFILES, HiveParser.TOK_ALTERPARTITION_MERGEFILES})
+public class AlterTableConcatenateAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableConcatenateAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
+      throws SemanticException {
+    Table table = getTable(tableName);
+
+    if (AcidUtils.isTransactionalTable(table)) {
+      compactAcidTable(tableName, partitionSpec);
+    } else {
+      // non-native and non-managed tables are not supported as MoveTask requires filenames to be in specific format,
+      // violating which can cause data loss
+      if (table.isNonNative()) {
+        throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NON_NATIVE.getMsg());
+      }
+      if (table.getTableType() != TableType.MANAGED_TABLE) {
+        throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NOT_MANAGED.getMsg());
+      }
+
+      if (table.isPartitioned()) {
+        concatenatePartitionedTable(tableName, table, partitionSpec);
+      } else {
+        concatenateUnpartitionedTable(tableName, table, partitionSpec);
+      }
+    }
+  }
+
+  private void compactAcidTable(TableName tableName, Map<String, String> partitionSpec) {
+    boolean isBlocking = !HiveConf.getBoolVar(conf, ConfVars.TRANSACTIONAL_CONCATENATE_NOBLOCK, false);
+
+    AlterTableCompactDesc desc = new AlterTableCompactDesc(tableName, partitionSpec, "MAJOR", isBlocking, null);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
+  }
+
+  @SuppressWarnings("rawtypes")
+  private void concatenatePartitionedTable(TableName tableName, Table table, Map<String, String> partitionSpec)
+      throws SemanticException {
+    if (partitionSpec == null) {
+      throw new SemanticException("source table " + tableName + " is partitioned but no partition desc found.");
+    }
+
+    Partition part = PartitionUtils.getPartition(db, table, partitionSpec, false);
+    if (part == null) {
+      throw new SemanticException("source table " + tableName + " is partitioned but partition not found.");
+    }
+    if (ArchiveUtils.isArchived(part)) {
+      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_PARTITION_ARCHIVED.getMsg());
+    }
+
+    Path tablePath = table.getPath();
+    Path partitionPath = part.getDataLocation();
+
+    Path oldLocation = partitionPath;
+    // if the table is in a different dfs than the partition, replace the partition's dfs with the table's dfs.
+    Path newLocation =
+        new Path(tablePath.toUri().getScheme(), tablePath.toUri().getAuthority(), partitionPath.toUri().getPath());
+
+    ListBucketingCtx lbCtx = constructListBucketingCtx(part.getSkewedColNames(), part.getSkewedColValues(),
+        part.getSkewedColValueLocationMaps(), part.isStoredAsSubDirectories());
+    List<String> bucketCols = part.getBucketCols();
+
+    Class<? extends InputFormat> inputFormatClass = null;
+    try {
+      inputFormatClass = part.getInputFormatClass();
+    } catch (HiveException e) {
+      throw new SemanticException(e);
+    }
+
+    createConcatenateTasks(tableName, table, partitionSpec, oldLocation, newLocation, lbCtx, bucketCols,
+        inputFormatClass);
+  }
+
+  @SuppressWarnings("rawtypes")
+  private void concatenateUnpartitionedTable(TableName tableName, Table table, Map<String, String> partitionSpec)
+      throws SemanticException {
+    Path oldLocation = table.getPath();
+    Path newLocation = table.getPath();
+
+    ListBucketingCtx lbCtx = constructListBucketingCtx(table.getSkewedColNames(), table.getSkewedColValues(),
+        table.getSkewedColValueLocationMaps(), table.isStoredAsSubDirectories());
+
+    List<String> bucketCols = table.getBucketCols();
+    Class<? extends InputFormat> inputFormatClass = table.getInputFormatClass();
+
+    createConcatenateTasks(tableName, table, partitionSpec, oldLocation, newLocation, lbCtx, bucketCols,
+        inputFormatClass);
+  }
+
+  @SuppressWarnings("rawtypes")
+  private void createConcatenateTasks(TableName tableName, Table table, Map<String, String> partitionSpec,
+      Path oldLocation, Path newLocation, ListBucketingCtx lbCtx, List<String> bucketCols,
+      Class<? extends InputFormat> inputFormatClass) throws SemanticException {
+    if (!(inputFormatClass.equals(RCFileInputFormat.class) || inputFormatClass.equals(OrcInputFormat.class))) {
+      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_FILE_FORMAT.getMsg());
+    }
+    if (bucketCols != null && bucketCols.size() > 0) {
+      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_BUCKETED.getMsg());
+    }
+
+    addInputsOutputsAlterTable(tableName, partitionSpec, null, AlterTableType.MERGEFILES, false);
+
+    TableDesc tableDesc = Utilities.getTableDesc(table);
+    Path queryTmpDir = ctx.getExternalTmpPath(newLocation);
+
+    Task<?> mergeTask =
+        createMergeTask(tableName, table, partitionSpec, oldLocation, lbCtx, inputFormatClass, queryTmpDir);
+
+    addMoveTask(tableName, table, partitionSpec, oldLocation, newLocation, lbCtx, tableDesc, queryTmpDir, mergeTask);
+
+    rootTasks.add(mergeTask);
+  }
+
+  @SuppressWarnings("rawtypes")
+  private Task<?> createMergeTask(TableName tableName, Table table, Map<String, String> partitionSpec, Path oldLocation,
+      ListBucketingCtx lbCtx, Class<? extends InputFormat> inputFormatClass, Path queryTmpDir) {
+    AlterTableConcatenateDesc desc = new AlterTableConcatenateDesc(tableName, partitionSpec, lbCtx, oldLocation,
+        queryTmpDir, inputFormatClass, Utilities.getTableDesc(table));
+    DDLWork ddlWork = new DDLWork(getInputs(), getOutputs(), desc);
+    ddlWork.setNeedLock(true);
+    return TaskFactory.get(ddlWork);
+  }
+
+  private void addMoveTask(TableName tableName, Table table, Map<String, String> partitionSpec, Path oldLocation,
+      Path newLocation, ListBucketingCtx lbCtx, TableDesc tableDesc, Path queryTmpDir, Task<?> mergeTask)
+      throws SemanticException {
+    // No need to handle MM tables - unsupported path.
+    LoadTableDesc loadTableDesc = new LoadTableDesc(queryTmpDir, tableDesc,
+        partitionSpec == null ? new HashMap<>() : partitionSpec);
+    loadTableDesc.setLbCtx(lbCtx);
+    loadTableDesc.setInheritTableSpecs(true);
+    Task<MoveWork> moveTask = TaskFactory.get(new MoveWork(null, null, loadTableDesc, null, false));
+    mergeTask.addDependentTask(moveTask);
+
+    addStatTask(tableName, table, partitionSpec, oldLocation, newLocation, loadTableDesc, moveTask);
+  }
+
+  private void addStatTask(TableName tableName, Table table, Map<String, String> partitionSpec, Path oldLocation,
+      Path newLocation, LoadTableDesc loadTableDesc, Task<MoveWork> moveTask) throws SemanticException {
+    if (conf.getBoolVar(HiveConf.ConfVars.HIVESTATSAUTOGATHER)) {
+      BasicStatsWork basicStatsWork;
+      if (oldLocation.equals(newLocation)) {
+        // If we're merging to the same location, we can avoid some metastore calls
+        try {
+          TableSpec tableSpec = new TableSpec(db, tableName, partitionSpec);
+          basicStatsWork = new BasicStatsWork(tableSpec);
+        } catch (HiveException e){
+          throw new SemanticException(e);
+        }
+      } else {
+        basicStatsWork = new BasicStatsWork(loadTableDesc);
+      }
+      basicStatsWork.setNoStatsAggregator(true);
+      basicStatsWork.setClearAggregatorStats(true);
+      StatsWork statsWork = new StatsWork(table, basicStatsWork, conf);
+
+      Task<?> statTask = TaskFactory.get(statsWork);
+      moveTask.addDependentTask(statTask);
+    }
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateDesc.java
index 5f5bbe4..476abad 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.concatenate;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateOperation.java
index ea21e02..261f147 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableConcatenateOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/concatenate/AlterTableConcatenateOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.concatenate;
 
 import java.util.LinkedHashMap;
 import java.util.List;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeAnalyzer.java
similarity index 65%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeAnalyzer.java
index 472d459..e06bd80 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/drop/AlterTableDropConstraintAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeAnalyzer.java
@@ -16,35 +16,39 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.constraint.drop;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import java.util.Map;
 
 import org.apache.hadoop.hive.common.TableName;
 import org.apache.hadoop.hive.ql.QueryState;
 import org.apache.hadoop.hive.ql.ddl.DDLWork;
-import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableAnalyzer;
 import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for drop constraint commands.
+ * Analyzer for set serde commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_DROPCONSTRAINT)
-public class AlterTableDropConstraintAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableDropConstraintAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_SERIALIZER, HiveParser.TOK_ALTERPARTITION_SERIALIZER})
+public class AlterTableSetSerdeAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSetSerdeAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    String constraintName = unescapeIdentifier(command.getChild(0).getText());
+    String serdeName = unescapeSQLString(command.getChild(0).getText());
+    Map<String, String> props = (command.getChildCount() > 1) ?
+        getProps((ASTNode) (command.getChild(1)).getChild(0)) : null;
 
-    AlterTableDropConstraintDesc desc = new AlterTableDropConstraintDesc(tableName, null, constraintName);
+    AlterTableSetSerdeDesc desc = new AlterTableSetSerdeDesc(tableName, partitionSpec, props, serdeName);
+    addInputsOutputsAlterTable(tableName, partitionSpec, desc, AlterTableType.SET_SERDE, false);
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeDesc.java
index 6038cd7..61a706d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeOperation.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeOperation.java
index a447b31..47875e7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdeOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdeOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.hadoop.hive.metastore.HiveMetaStoreUtils;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsAnalyzer.java
similarity index 69%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsAnalyzer.java
index db4e522..2be5dc6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsAnalyzer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.column.update;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import java.util.Map;
 
@@ -25,33 +25,28 @@ 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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
-import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for update columns commands.
+ * Analyzer for set serde properties commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS)
-public class AlterTableUpdateColumnsAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableUpdateColumnsAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_SERDEPROPERTIES, HiveParser.TOK_ALTERPARTITION_SERDEPROPERTIES})
+public class AlterTableSetSerdePropsAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSetSerdePropsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    boolean isCascade = (null != command.getFirstChildWithType(HiveParser.TOK_CASCADE));
+    Map<String, String> props = getProps((ASTNode) (command.getChild(0)).getChild(0));
 
-    AlterTableUpdateColumnsDesc desc = new AlterTableUpdateColumnsDesc(tableName, partitionSpec, isCascade);
-    Table table = getTable(tableName);
-    if (AcidUtils.isTransactionalTable(table)) {
-      setAcidDdlDesc(desc);
-    }
-
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc), conf));
+    AlterTableSetSerdePropsDesc desc = new AlterTableSetSerdePropsDesc(tableName, partitionSpec, props);
+    addInputsOutputsAlterTable(tableName, partitionSpec, desc, AlterTableType.SET_SERDE_PROPS, false);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsDesc.java
index fdbdcf5..c0c21af 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsOperation.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsOperation.java
index 58654cc..9e655f0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSerdePropsOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/serde/AlterTableSetSerdePropsOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.serde;
 
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.ql.ddl.DDLOperationContext;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatAnalyzer.java
similarity index 62%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatAnalyzer.java
index db4e522..f75da22 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/column/update/AlterTableUpdateColumnsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatAnalyzer.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.column.update;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.fileformat;
 
 import java.util.Map;
 
@@ -25,33 +25,34 @@ 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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
-import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
 import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.parse.StorageFormat;
 
 /**
- * Analyzer for update columns commands.
+ * Analyzer for set file format commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_UPDATECOLUMNS)
-public class AlterTableUpdateColumnsAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableUpdateColumnsAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_FILEFORMAT, HiveParser.TOK_ALTERPARTITION_FILEFORMAT})
+public class AlterTableSetFileFormatAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSetFileFormatAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    boolean isCascade = (null != command.getFirstChildWithType(HiveParser.TOK_CASCADE));
-
-    AlterTableUpdateColumnsDesc desc = new AlterTableUpdateColumnsDesc(tableName, partitionSpec, isCascade);
-    Table table = getTable(tableName);
-    if (AcidUtils.isTransactionalTable(table)) {
-      setAcidDdlDesc(desc);
+    StorageFormat format = new StorageFormat(conf);
+    ASTNode child = (ASTNode) command.getChild(0);
+    if (!format.fillStorageFormat(child)) {
+      throw new AssertionError("Unknown token " + child.getText());
     }
 
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc), conf));
+    AlterTableSetFileFormatDesc desc = new AlterTableSetFileFormatDesc(tableName, partitionSpec,
+        format.getInputFormat(), format.getOutputFormat(), format.getSerde());
+    addInputsOutputsAlterTable(tableName, partitionSpec, desc, AlterTableType.SET_FILE_FORMAT, false);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatDesc.java
index 78ac94b..0804f50 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.fileformat;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatOperation.java
index 5b7c5ac..aec4181 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetFileFormatOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/fileformat/AlterTableSetFileFormatOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.fileformat;
 
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.ql.ErrorMsg;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationAnalyzer.java
similarity index 56%
copy from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java
copy to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationAnalyzer.java
index 14424d3..ac5dc02 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/partition/rename/AlterTableRenamePartitionAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationAnalyzer.java
@@ -16,22 +16,21 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.partition.rename;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.location;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.io.FileNotFoundException;
+import java.net.URI;
 import java.util.Map;
 
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.common.TableName;
 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.ddl.table.AbstractAlterTableAnalyzer;
 import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
-import org.apache.hadoop.hive.ql.ddl.table.partition.PartitionUtils;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.hooks.ReadEntity;
-import org.apache.hadoop.hive.ql.hooks.WriteEntity;
 import org.apache.hadoop.hive.ql.io.AcidUtils;
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.parse.ASTNode;
@@ -39,40 +38,36 @@ import org.apache.hadoop.hive.ql.parse.HiveParser;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 /**
- * Analyzer for rename partition commands.
+ * Analyzer for set location commands.
  */
-@DDLType(type=HiveParser.TOK_ALTERTABLE_RENAMEPART)
-public  class AlterTableRenamePartitionAnalyzer extends AbstractAlterTableAnalyzer {
-  public AlterTableRenamePartitionAnalyzer(QueryState queryState) throws SemanticException {
+@DDLType(types = {HiveParser.TOK_ALTERTABLE_LOCATION, HiveParser.TOK_ALTERPARTITION_LOCATION})
+public class AlterTableSetLocationAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSetLocationAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
   }
 
   @Override
   protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
       throws SemanticException {
-    Table table = getTable(tableName, true);
-    validateAlterTableType(table, AlterTableType.RENAMEPARTITION, false);
-
-    Map<String, String> newPartitionSpec = getValidatedPartSpec(table, (ASTNode)command.getChild(0), conf, false);
-    if (newPartitionSpec == null) {
-      throw new SemanticException("RENAME PARTITION Missing Destination" + command);
+    String newLocation = unescapeSQLString(command.getChild(0).getText());
+    try {
+      // To make sure host/port pair is valid, the status of the location does not matter
+      FileSystem.get(new URI(newLocation), conf).getFileStatus(new Path(newLocation));
+    } catch (FileNotFoundException e) {
+      // Only check host/port pair is valid, whether the file exist or not does not matter
+    } catch (Exception e) {
+      throw new SemanticException("Cannot connect to namenode, please check if host/port pair for " + newLocation +
+          " is valid", e);
     }
-    ReadEntity re = new ReadEntity(table);
-    re.noLockNeeded();
-    inputs.add(re);
-
-    List<Map<String, String>> allPartitionSpecs = new ArrayList<>();
-    allPartitionSpecs.add(partitionSpec);
-    allPartitionSpecs.add(newPartitionSpec);
-    PartitionUtils.addTablePartsOutputs(db, outputs, table, allPartitionSpecs, false,
-        WriteEntity.WriteType.DDL_EXCLUSIVE);
-
-    AlterTableRenamePartitionDesc desc = new AlterTableRenamePartitionDesc(tableName, partitionSpec, newPartitionSpec,
-        null, table);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
 
+    outputs.add(toWriteEntity(newLocation));
+    AlterTableSetLocationDesc desc = new AlterTableSetLocationDesc(tableName, partitionSpec, newLocation);
+    Table table = getTable(tableName);
     if (AcidUtils.isTransactionalTable(table)) {
       setAcidDdlDesc(desc);
     }
+
+    addInputsOutputsAlterTable(tableName, partitionSpec, desc, AlterTableType.ALTERLOCATION, false);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
   }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationDesc.java
index d79a8e4..5577ffb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.location;
 
 import java.util.Map;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationOperation.java
index 509d577..d0e14c7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetLocationOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/set/location/AlterTableSetLocationOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.set.location;
 
 import java.net.URI;
 import java.net.URISyntaxException;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedDesc.java
similarity index 96%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedDesc.java
index 016c18c..883b6ca 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import org.apache.hadoop.hive.common.TableName;
 import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedOperation.java
index cb4632d..193a020 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableNotSkewedOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableNotSkewedOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationAnalyzer.java
new file mode 100644
index 0000000..488f76e
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationAnalyzer.java
@@ -0,0 +1,126 @@
+/*
+ * 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.table.storage.skewed;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.ql.ErrorMsg;
+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.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableDesc;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+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.HiveParser;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.PlanUtils;
+
+import com.google.common.collect.Sets;
+
+/**
+ * Analyzer for set skewed location commands.
+ */
+@DDLType(types = HiveParser.TOK_ALTERTABLE_SKEWED_LOCATION)
+public class AlterTableSetSkewedLocationAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSetSkewedLocationAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
+      throws SemanticException {
+    ArrayList<Node> locationNodes = command.getChildren();
+    if (locationNodes == null) {
+      throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
+    }
+
+    Map<List<String>, String> locations = new HashMap<>();
+    for (Node locationNode : locationNodes) {
+      List<Node> locationListNodes = ((ASTNode) locationNode).getChildren();
+      if (locationListNodes == null) {
+        throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
+      }
+
+      for (Node locationListNode : locationListNodes) {
+        List<Node> locationMapNodes = ((ASTNode) locationListNode).getChildren();
+        if (locationMapNodes == null) {
+          throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
+        }
+
+        for (Node locationMapNode : locationMapNodes) {
+          List<Node> locationMapNodeMaps = ((ASTNode) locationMapNode).getChildren();
+          if ((locationMapNodeMaps == null) || (locationMapNodeMaps.size() != 2)) {
+            throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_MAP.getMsg());
+          }
+
+          List<String> keyList = new LinkedList<String>();
+          ASTNode node = (ASTNode) locationMapNodeMaps.get(0);
+          if (node.getToken().getType() == HiveParser.TOK_TABCOLVALUES) {
+            keyList = SkewedTableUtils.getSkewedValuesFromASTNode(node);
+          } else if (isConstant(node)) {
+            keyList.add(PlanUtils.stripQuotes(node.getText()));
+          } else {
+            throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+          }
+
+          String newLocation =
+              PlanUtils.stripQuotes(unescapeSQLString(((ASTNode) locationMapNodeMaps.get(1)).getText()));
+          validateSkewedLocationString(newLocation);
+          locations.put(keyList, newLocation);
+          outputs.add(toWriteEntity(newLocation));
+        }
+      }
+    }
+
+    AbstractAlterTableDesc desc = new AlterTableSetSkewedLocationDesc(tableName, partitionSpec, locations);
+    addInputsOutputsAlterTable(tableName, partitionSpec, desc, AlterTableType.SET_SKEWED_LOCATION, false);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
+  }
+
+  private static final Set<Integer> CONSTANT_TYPES = Sets.newHashSet(HiveParser.Number, HiveParser.StringLiteral,
+      HiveParser.IntegralLiteral, HiveParser.NumberLiteral, HiveParser.CharSetName, HiveParser.KW_TRUE,
+      HiveParser.KW_FALSE);
+
+  private boolean isConstant(ASTNode node) {
+    return CONSTANT_TYPES.contains(node.getToken().getType());
+  }
+
+  private void validateSkewedLocationString(String location) throws SemanticException {
+    try {
+      URI locationUri = new URI(location);
+      if (!locationUri.isAbsolute() || locationUri.getScheme() == null || locationUri.getScheme().trim().equals("")) {
+        throw new SemanticException(location + " is not absolute or has no scheme information. " +
+            "Please specify a complete absolute uri with scheme information.");
+      }
+    } catch (URISyntaxException e) {
+      throw new SemanticException(e);
+    }
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationDesc.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationDesc.java
index 4cae3b0..24e303d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import java.util.List;
 import java.util.Map;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationOperation.java
index 3d9f9ce..72864b6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSetSkewedLocationOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSetSkewedLocationOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import java.net.URI;
 import java.net.URISyntaxException;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByAnalyzer.java
new file mode 100644
index 0000000..f6f2e55
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByAnalyzer.java
@@ -0,0 +1,104 @@
+/*
+ * 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.table.storage.skewed;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.ql.ErrorMsg;
+import org.apache.hadoop.hive.ql.QueryState;
+import org.apache.hadoop.hive.ql.ddl.DDLWork;
+import org.apache.hadoop.hive.ql.ddl.DDLDesc;
+import org.apache.hadoop.hive.ql.ddl.DDLSemanticAnalyzerFactory.DDLType;
+import org.apache.hadoop.hive.ql.ddl.table.AbstractAlterTableAnalyzer;
+import org.apache.hadoop.hive.ql.ddl.table.AlterTableType;
+import org.apache.hadoop.hive.ql.exec.TaskFactory;
+import org.apache.hadoop.hive.ql.hooks.ReadEntity;
+import org.apache.hadoop.hive.ql.hooks.WriteEntity;
+import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
+import org.apache.hadoop.hive.ql.parse.ParseUtils;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.ValidationUtility;
+
+/**
+ * Analyzer for skewed table commands.
+ */
+@DDLType(types = HiveParser.TOK_ALTERTABLE_SKEWED)
+public class AlterTableSkewedByAnalyzer extends AbstractAlterTableAnalyzer {
+  public AlterTableSkewedByAnalyzer(QueryState queryState) throws SemanticException {
+    super(queryState);
+  }
+
+  @Override
+  protected void analyzeCommand(TableName tableName, Map<String, String> partitionSpec, ASTNode command)
+      throws SemanticException {
+
+    Table table = getTable(tableName);
+    validateAlterTableType(table, AlterTableType.SKEWED_BY, false);
+
+    inputs.add(new ReadEntity(table));
+    outputs.add(new WriteEntity(table, WriteEntity.WriteType.DDL_EXCLUSIVE));
+
+    DDLDesc desc = null;
+    if (command.getChildCount() == 0) {
+      desc = new AlterTableNotSkewedDesc(tableName);
+    } else {
+      switch (((ASTNode) command.getChild(0)).getToken().getType()) {
+      case HiveParser.TOK_TABLESKEWED:
+        desc = handleAlterTableSkewedBy(command, tableName, table);
+        break;
+      case HiveParser.TOK_STOREDASDIRS:
+        desc = handleAlterTableDisableStoredAsDirs(tableName, table);
+        break;
+      default:
+        assert false;
+      }
+    }
+
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
+  }
+
+  private DDLDesc handleAlterTableSkewedBy(ASTNode ast, TableName tableName, Table table) throws SemanticException {
+    ASTNode skewedNode = (ASTNode) ast.getChild(0);
+    List<String> skewedColumnNames = SkewedTableUtils.analyzeSkewedTableDDLColNames(skewedNode);
+    List<List<String>> skewedColumnValues = SkewedTableUtils.analyzeDDLSkewedValues(skewedNode);
+    boolean storedAsDirs = analyzeStoredAdDirs(skewedNode);
+
+    if (table != null) {
+      ValidationUtility.validateSkewedInformation(
+          ParseUtils.validateColumnNameUniqueness(table.getCols()), skewedColumnNames, skewedColumnValues);
+    }
+
+    return new AlterTableSkewedByDesc(tableName, skewedColumnNames, skewedColumnValues, storedAsDirs);
+  }
+
+  private DDLDesc handleAlterTableDisableStoredAsDirs(TableName tableName, Table table) throws SemanticException {
+    List<String> skewedColumnNames = table.getSkewedColNames();
+    List<List<String>> skewedColumnValues = table.getSkewedColValues();
+    if (CollectionUtils.isEmpty(skewedColumnNames) || CollectionUtils.isEmpty(skewedColumnValues)) {
+      throw new SemanticException(ErrorMsg.ALTER_TBL_STOREDASDIR_NOT_SKEWED.getMsg(tableName.getNotEmptyDbTable()));
+    }
+
+    return new AlterTableSkewedByDesc(tableName, skewedColumnNames, skewedColumnValues, false);
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByDesc.java
similarity index 98%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByDesc.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByDesc.java
index 656aaa6..8f080cf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByDesc.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByOperation.java
similarity index 97%
rename from ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByOperation.java
rename to ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByOperation.java
index 1275565..825866c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/AlterTableSkewedByOperation.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/AlterTableSkewedByOperation.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.hadoop.hive.ql.ddl.table.storage;
+package org.apache.hadoop.hive.ql.ddl.table.storage.skewed;
 
 import java.util.List;
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/SkewedTableUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/SkewedTableUtils.java
new file mode 100644
index 0000000..905785b
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/skewed/SkewedTableUtils.java
@@ -0,0 +1,111 @@
+/*
+ * 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.table.storage.skewed;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.hadoop.hive.ql.ErrorMsg;
+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;
+
+/**
+ * Utilities for skewed table related DDL.
+ */
+public final class SkewedTableUtils {
+
+  private SkewedTableUtils() {
+    throw new UnsupportedOperationException("SkewedTableUtils should not be instantiated!");
+  }
+
+  public static List<String> analyzeSkewedTableDDLColNames(ASTNode node) throws SemanticException {
+    ASTNode child = (ASTNode) node.getChild(0);
+    if (child == null) {
+      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
+    } else {
+      if (child.getToken().getType() != HiveParser.TOK_TABCOLNAME) {
+        throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
+      } else {
+        return BaseSemanticAnalyzer.getColumnNames(child);
+      }
+    }
+  }
+
+  public static List<List<String>> analyzeDDLSkewedValues(ASTNode node) throws SemanticException {
+    ASTNode child = (ASTNode) node.getChild(1);
+    if (child == null) {
+      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+    }
+
+    List<List<String>> skewedValues = new ArrayList<>();
+    switch (child.getToken().getType()) {
+    case HiveParser.TOK_TABCOLVALUE:
+      for (String skewedValue : getSkewedValueFromASTNode(child)) {
+        skewedValues.add(Arrays.asList(skewedValue));
+      }
+      break;
+    case HiveParser.TOK_TABCOLVALUE_PAIR:
+      for (Node cvNode : child.getChildren()) {
+        ASTNode acvNode = (ASTNode) cvNode;
+        if (acvNode.getToken().getType() != HiveParser.TOK_TABCOLVALUES) {
+          throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+        } else {
+          skewedValues.add(getSkewedValuesFromASTNode(acvNode));
+        }
+      }
+      break;
+    default:
+      break;
+    }
+
+    return skewedValues;
+  }
+
+  public static List<String> getSkewedValuesFromASTNode(ASTNode node) throws SemanticException {
+    ASTNode child = (ASTNode) node.getChild(0);
+    if (child == null) {
+      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+    } else {
+      if (child.getToken().getType() != HiveParser.TOK_TABCOLVALUE) {
+        throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
+      } else {
+        return new ArrayList<String>(getSkewedValueFromASTNode(child));
+      }
+    }
+  }
+
+  /**
+   * Gets the skewed column list from the statement.
+   *   create table xyz list bucketed (col1) with skew (1,2,5)
+   *   AST Node is for (1,2,5)
+   */
+  private static List<String> getSkewedValueFromASTNode(ASTNode node) {
+    List<String> colList = new ArrayList<String>();
+    int numCh = node.getChildCount();
+    for (int i = 0; i < numCh; i++) {
+      ASTNode child = (ASTNode) node.getChild(i);
+      colList.add(BaseSemanticAnalyzer.stripQuotes(child.getText()).toLowerCase());
+    }
+    return colList;
+  }
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/AlterViewAnalyzerCategory.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/AlterViewAnalyzerCategory.java
index d43dc9e..d91cc50 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/AlterViewAnalyzerCategory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/AlterViewAnalyzerCategory.java
@@ -27,7 +27,7 @@ import org.apache.hadoop.hive.ql.parse.HiveParser;
  * Alter View category helper. It derives the actual type of the command from the root element, by selecting the type
  * of the second child, as the Alter View commands have this structure: viewName command partitionSpec?
  */
-@DDLType(type=HiveParser.TOK_ALTERVIEW)
+@DDLType(types = HiveParser.TOK_ALTERVIEW)
 public class AlterViewAnalyzerCategory implements DDLSemanticAnalyzerCategory {
   @Override
   public int getType(ASTNode root) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/drop/DropViewAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/drop/DropViewAnalyzer.java
index 92a2460..5b6ba23 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/drop/DropViewAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/drop/DropViewAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop view commands.
  */
-@DDLType(type=HiveParser.TOK_DROPVIEW)
+@DDLType(types = HiveParser.TOK_DROPVIEW)
 public class DropViewAnalyzer extends BaseSemanticAnalyzer {
   public DropViewAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
index 4641cd8..4fb5378 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rebuild/AlterMaterializedViewRebuildAnalyzer.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Analyzer for alter materialized view rebuild commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_MATERIALIZED_VIEW_REBUILD)
+@DDLType(types = HiveParser.TOK_ALTER_MATERIALIZED_VIEW_REBUILD)
 public class AlterMaterializedViewRebuildAnalyzer extends CalcitePlanner {
   private static final Logger LOG = LoggerFactory.getLogger(AlterMaterializedViewRebuildAnalyzer.class);
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rewrite/AlterMaterializedViewRewriteAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rewrite/AlterMaterializedViewRewriteAnalyzer.java
index 5a8ccfd..2cc32a0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rewrite/AlterMaterializedViewRewriteAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/alter/rewrite/AlterMaterializedViewRewriteAnalyzer.java
@@ -38,7 +38,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter materialized view rewrite commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_MATERIALIZED_VIEW_REWRITE)
+@DDLType(types = HiveParser.TOK_ALTER_MATERIALIZED_VIEW_REWRITE)
 public class AlterMaterializedViewRewriteAnalyzer extends BaseSemanticAnalyzer {
   public AlterMaterializedViewRewriteAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/drop/DropMaterializedViewAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/drop/DropMaterializedViewAnalyzer.java
index f242ab9..828d85d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/drop/DropMaterializedViewAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/drop/DropMaterializedViewAnalyzer.java
@@ -35,7 +35,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop materialized view commands.
  */
-@DDLType(type=HiveParser.TOK_DROP_MATERIALIZED_VIEW)
+@DDLType(types = HiveParser.TOK_DROP_MATERIALIZED_VIEW)
 public class DropMaterializedViewAnalyzer extends BaseSemanticAnalyzer {
   public DropMaterializedViewAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/show/ShowMaterializedViewsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/show/ShowMaterializedViewsAnalyzer.java
index f2779da..f1f82a1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/show/ShowMaterializedViewsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/materialized/show/ShowMaterializedViewsAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.session.SessionState;
 /**
  * Analyzer for show materialized views commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWMATERIALIZEDVIEWS)
+@DDLType(types = HiveParser.TOK_SHOWMATERIALIZEDVIEWS)
 public class ShowMaterializedViewsAnalyzer extends BaseSemanticAnalyzer {
   public ShowMaterializedViewsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/show/ShowViewsAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/show/ShowViewsAnalyzer.java
index 0467196..e077f89 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/show/ShowViewsAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/view/show/ShowViewsAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.session.SessionState;
 /**
  * Analyzer for show views commands.
  */
-@DDLType(type=HiveParser.TOK_SHOWVIEWS)
+@DDLType(types = HiveParser.TOK_SHOWVIEWS)
 public class ShowViewsAnalyzer extends BaseSemanticAnalyzer {
   public ShowViewsAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/alter/AlterWMMappingAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/alter/AlterWMMappingAnalyzer.java
index 0a2c784..1fef44c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/alter/AlterWMMappingAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/alter/AlterWMMappingAnalyzer.java
@@ -28,7 +28,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter mapping commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_MAPPING)
+@DDLType(types = HiveParser.TOK_ALTER_MAPPING)
 public class AlterWMMappingAnalyzer extends AbstractVMMappingAnalyzer {
   public AlterWMMappingAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
index 065f020..5058bfc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/create/CreateWMMappingAnalyzer.java
@@ -28,7 +28,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for create mapping commands.
  */
-@DDLType(type=HiveParser.TOK_CREATE_MAPPING)
+@DDLType(types = HiveParser.TOK_CREATE_MAPPING)
 public class CreateWMMappingAnalyzer extends AbstractVMMappingAnalyzer {
   public CreateWMMappingAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/drop/DropWMMappingAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/drop/DropWMMappingAnalyzer.java
index 6baf8e1..93e415b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/drop/DropWMMappingAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/mapping/drop/DropWMMappingAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.plan.PlanUtils;
 /**
  * Analyzer for drop mapping commands.
  */
-@DDLType(type=HiveParser.TOK_DROP_MAPPING)
+@DDLType(types = HiveParser.TOK_DROP_MAPPING)
 public class DropWMMappingAnalyzer extends BaseSemanticAnalyzer {
   public DropWMMappingAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/alter/AlterWMPoolAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/alter/AlterWMPoolAnalyzer.java
index 051136a..61a7bc8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/alter/AlterWMPoolAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/alter/AlterWMPoolAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.plan.PlanUtils;
 /**
  * Analyzer for alter pool commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_POOL)
+@DDLType(types = HiveParser.TOK_ALTER_POOL)
 public class AlterWMPoolAnalyzer extends BaseSemanticAnalyzer {
   public AlterWMPoolAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/create/CreateWMPoolAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/create/CreateWMPoolAnalyzer.java
index 0246be0..65b545e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/create/CreateWMPoolAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/create/CreateWMPoolAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.plan.PlanUtils;
 /**
  * Analyzer for create pool commands.
  */
-@DDLType(type=HiveParser.TOK_CREATE_POOL)
+@DDLType(types = HiveParser.TOK_CREATE_POOL)
 public class CreateWMPoolAnalyzer extends BaseSemanticAnalyzer {
   public CreateWMPoolAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/drop/DropWMPoolAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/drop/DropWMPoolAnalyzer.java
index 49cf48f..397a665 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/drop/DropWMPoolAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/pool/drop/DropWMPoolAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop pool commands.
  */
-@DDLType(type=HiveParser.TOK_DROP_POOL)
+@DDLType(types = HiveParser.TOK_DROP_POOL)
 public class DropWMPoolAnalyzer extends BaseSemanticAnalyzer {
   public DropWMPoolAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/disable/AlterResourcePlanDisableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/disable/AlterResourcePlanDisableAnalyzer.java
index b355eee..32eaea2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/disable/AlterResourcePlanDisableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/disable/AlterResourcePlanDisableAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for disable resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_DISABLE)
+@DDLType(types = HiveParser.TOK_ALTER_RP_DISABLE)
 public class AlterResourcePlanDisableAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanDisableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/enable/AlterResourcePlanEnableAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/enable/AlterResourcePlanEnableAnalyzer.java
index 29a46cb..53dd799 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/enable/AlterResourcePlanEnableAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/enable/AlterResourcePlanEnableAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for enable resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_ENABLE)
+@DDLType(types = HiveParser.TOK_ALTER_RP_ENABLE)
 public class AlterResourcePlanEnableAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanEnableAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/rename/AlterResourcePlanRenameAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/rename/AlterResourcePlanRenameAnalyzer.java
index c746325..71b660b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/rename/AlterResourcePlanRenameAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/rename/AlterResourcePlanRenameAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter resource plan rename commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_RENAME)
+@DDLType(types = HiveParser.TOK_ALTER_RP_RENAME)
 public class AlterResourcePlanRenameAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanRenameAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/replace/AlterResourcePlanReplaceAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/replace/AlterResourcePlanReplaceAnalyzer.java
index b39c688..21c9567 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/replace/AlterResourcePlanReplaceAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/replace/AlterResourcePlanReplaceAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for replace resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_REPLACE)
+@DDLType(types = HiveParser.TOK_ALTER_RP_REPLACE)
 public class AlterResourcePlanReplaceAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanReplaceAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/set/AlterResourcePlanSetAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/set/AlterResourcePlanSetAnalyzer.java
index a9025e0..15e5367 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/set/AlterResourcePlanSetAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/set/AlterResourcePlanSetAnalyzer.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter resource plan set commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_SET)
+@DDLType(types = HiveParser.TOK_ALTER_RP_SET)
 public class AlterResourcePlanSetAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanSetAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/unset/AlterResourcePlanUnsetAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/unset/AlterResourcePlanUnsetAnalyzer.java
index 8bb6039..329c54c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/unset/AlterResourcePlanUnsetAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/unset/AlterResourcePlanUnsetAnalyzer.java
@@ -33,7 +33,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter resource plan unset commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_UNSET)
+@DDLType(types = HiveParser.TOK_ALTER_RP_UNSET)
 public class AlterResourcePlanUnsetAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanUnsetAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/validate/AlterResourcePlanValidateAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/validate/AlterResourcePlanValidateAnalyzer.java
index fcabf08..21bbadf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/validate/AlterResourcePlanValidateAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/alter/validate/AlterResourcePlanValidateAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter resource plan validate commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_RP_VALIDATE)
+@DDLType(types = HiveParser.TOK_ALTER_RP_VALIDATE)
 public class AlterResourcePlanValidateAnalyzer extends BaseSemanticAnalyzer {
   public AlterResourcePlanValidateAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/create/CreateResourcePlanAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/create/CreateResourcePlanAnalyzer.java
index a275a19..d81f1c2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/create/CreateResourcePlanAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/create/CreateResourcePlanAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for create resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_CREATE_RP)
+@DDLType(types = HiveParser.TOK_CREATE_RP)
 public class CreateResourcePlanAnalyzer extends BaseSemanticAnalyzer {
   public CreateResourcePlanAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/drop/DropResourcePlanAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/drop/DropResourcePlanAnalyzer.java
index 8af7930..796480a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/drop/DropResourcePlanAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/drop/DropResourcePlanAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_DROP_RP)
+@DDLType(types = HiveParser.TOK_DROP_RP)
 public class DropResourcePlanAnalyzer extends BaseSemanticAnalyzer {
   public DropResourcePlanAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/show/ShowResourcePlanAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/show/ShowResourcePlanAnalyzer.java
index 440e575..697fc00 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/show/ShowResourcePlanAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/resourceplan/show/ShowResourcePlanAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for show resource plan commands.
  */
-@DDLType(type=HiveParser.TOK_SHOW_RP)
+@DDLType(types = HiveParser.TOK_SHOW_RP)
 public class ShowResourcePlanAnalyzer extends BaseSemanticAnalyzer {
   public ShowResourcePlanAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/alter/AlterWMTriggerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/alter/AlterWMTriggerAnalyzer.java
index 80f8db4..2547b81 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/alter/AlterWMTriggerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/alter/AlterWMTriggerAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter trigger commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_TRIGGER)
+@DDLType(types = HiveParser.TOK_ALTER_TRIGGER)
 public class AlterWMTriggerAnalyzer extends BaseSemanticAnalyzer {
   public AlterWMTriggerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/create/CreateWMTriggerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/create/CreateWMTriggerAnalyzer.java
index 4eb0d14..518cb95 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/create/CreateWMTriggerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/create/CreateWMTriggerAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for create trigger commands.
  */
-@DDLType(type=HiveParser.TOK_CREATE_TRIGGER)
+@DDLType(types = HiveParser.TOK_CREATE_TRIGGER)
 public class CreateWMTriggerAnalyzer extends BaseSemanticAnalyzer {
   public CreateWMTriggerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/drop/DropWMTriggerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/drop/DropWMTriggerAnalyzer.java
index 7f7a08e..7962a5f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/drop/DropWMTriggerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/drop/DropWMTriggerAnalyzer.java
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for drop trigger commands.
  */
-@DDLType(type=HiveParser.TOK_DROP_TRIGGER)
+@DDLType(types = HiveParser.TOK_DROP_TRIGGER)
 public class DropWMTriggerAnalyzer extends BaseSemanticAnalyzer {
   public DropWMTriggerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/add/AlterPoolAddTriggerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/add/AlterPoolAddTriggerAnalyzer.java
index c3aa94c..19fdbff 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/add/AlterPoolAddTriggerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/add/AlterPoolAddTriggerAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter pool add trigger commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_POOL_ADD_TRIGGER)
+@DDLType(types = HiveParser.TOK_ALTER_POOL_ADD_TRIGGER)
 public class AlterPoolAddTriggerAnalyzer extends BaseSemanticAnalyzer {
   public AlterPoolAddTriggerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/drop/AlterPoolDropTriggerAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/drop/AlterPoolDropTriggerAnalyzer.java
index cce878f..b9e6445 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/drop/AlterPoolDropTriggerAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/workloadmanagement/trigger/pool/drop/AlterPoolDropTriggerAnalyzer.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 /**
  * Analyzer for alter pool drop trigger commands.
  */
-@DDLType(type=HiveParser.TOK_ALTER_POOL_DROP_TRIGGER)
+@DDLType(types = HiveParser.TOK_ALTER_POOL_DROP_TRIGGER)
 public class AlterPoolDropTriggerAnalyzer extends BaseSemanticAnalyzer {
   public AlterPoolDropTriggerAnalyzer(QueryState queryState) throws SemanticException {
     super(queryState);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
index 444ec3d..46bb37a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.text.ParseException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -83,7 +82,6 @@ import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
 import org.apache.hadoop.hive.ql.optimizer.listbucketingpruner.ListBucketingPrunerUtils;
 import org.apache.hadoop.hive.ql.parse.type.ExprNodeTypeCheck;
 import org.apache.hadoop.hive.ql.parse.type.TypeCheckCtx;
-import org.apache.hadoop.hive.ql.parse.type.TypeCheckProcFactory;
 import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
 import org.apache.hadoop.hive.ql.plan.FetchWork;
@@ -1372,113 +1370,6 @@ public abstract class BaseSemanticAnalyzer {
   }
 
   /**
-   * Given a ASTNode, return list of values.
-   *
-   * use case:
-   *   create table xyz list bucketed (col1) with skew (1,2,5)
-   *   AST Node is for (1,2,5)
-   * @param ast
-   * @return
-   */
-  protected List<String> getSkewedValueFromASTNode(ASTNode ast) {
-    List<String> colList = new ArrayList<String>();
-    int numCh = ast.getChildCount();
-    for (int i = 0; i < numCh; i++) {
-      ASTNode child = (ASTNode) ast.getChild(i);
-      colList.add(stripQuotes(child.getText()).toLowerCase());
-    }
-    return colList;
-  }
-
-  /**
-   * Retrieve skewed values from ASTNode.
-   *
-   * @param node
-   * @return
-   * @throws SemanticException
-   */
-  protected List<String> getSkewedValuesFromASTNode(Node node) throws SemanticException {
-    List<String> result = null;
-    Tree leafVNode = ((ASTNode) node).getChild(0);
-    if (leafVNode == null) {
-      throw new SemanticException(
-          ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
-    } else {
-      ASTNode lVAstNode = (ASTNode) leafVNode;
-      if (lVAstNode.getToken().getType() != HiveParser.TOK_TABCOLVALUE) {
-        throw new SemanticException(
-            ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
-      } else {
-        result = new ArrayList<String>(getSkewedValueFromASTNode(lVAstNode));
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Analyze list bucket column names
-   *
-   * @param skewedColNames
-   * @param child
-   * @return
-   * @throws SemanticException
-   */
-  protected List<String> analyzeSkewedTablDDLColNames(List<String> skewedColNames, ASTNode child)
-      throws SemanticException {
-  Tree nNode = child.getChild(0);
-    if (nNode == null) {
-      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
-    } else {
-      ASTNode nAstNode = (ASTNode) nNode;
-      if (nAstNode.getToken().getType() != HiveParser.TOK_TABCOLNAME) {
-        throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_NAME.getMsg());
-      } else {
-        skewedColNames = getColumnNames(nAstNode);
-      }
-    }
-    return skewedColNames;
-  }
-
-  /**
-   * Handle skewed values in DDL.
-   *
-   * It can be used by both skewed by ... on () and set skewed location ().
-   *
-   * @param skewedValues
-   * @param child
-   * @throws SemanticException
-   */
-  protected void analyzeDDLSkewedValues(List<List<String>> skewedValues, ASTNode child)
-      throws SemanticException {
-  Tree vNode = child.getChild(1);
-    if (vNode == null) {
-      throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
-    }
-    ASTNode vAstNode = (ASTNode) vNode;
-    switch (vAstNode.getToken().getType()) {
-      case HiveParser.TOK_TABCOLVALUE:
-        for (String str : getSkewedValueFromASTNode(vAstNode)) {
-          List<String> sList = new ArrayList<String>(Arrays.asList(str));
-          skewedValues.add(sList);
-        }
-        break;
-      case HiveParser.TOK_TABCOLVALUE_PAIR:
-        List<Node> vLNodes = vAstNode.getChildren();
-        for (Node node : vLNodes) {
-          if ( ((ASTNode) node).getToken().getType() != HiveParser.TOK_TABCOLVALUES) {
-            throw new SemanticException(
-                ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
-          } else {
-            skewedValues.add(getSkewedValuesFromASTNode(node));
-          }
-        }
-        break;
-      default:
-        break;
-    }
-  }
-
-  /**
    * process stored as directories
    *
    * @param child
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 eee81a3..ba019c7 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
@@ -18,38 +18,28 @@
 
 package org.apache.hadoop.hive.ql.parse;
 
-import java.io.FileNotFoundException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
 import org.antlr.runtime.tree.CommonTree;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.common.StatsSetupConst;
 import org.apache.hadoop.hive.common.TableName;
 import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.metastore.TableType;
 import org.apache.hadoop.hive.metastore.Warehouse;
 import org.apache.hadoop.hive.metastore.api.EnvironmentContext;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.MetaException;
-import org.apache.hadoop.hive.metastore.api.Order;
 import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
 import org.apache.hadoop.hive.metastore.utils.MetaStoreUtils;
 import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.QueryState;
-import org.apache.hadoop.hive.ql.ddl.DDLDesc;
 import org.apache.hadoop.hive.ql.ddl.DDLDesc.DDLDescWithWriteId;
 import org.apache.hadoop.hive.ql.ddl.DDLWork;
 import org.apache.hadoop.hive.ql.ddl.privilege.PrincipalDesc;
@@ -62,21 +52,6 @@ import org.apache.hadoop.hive.ql.ddl.table.misc.AlterTableTouchDesc;
 import org.apache.hadoop.hive.ql.ddl.table.misc.AlterTableUnsetPropertiesDesc;
 import org.apache.hadoop.hive.ql.ddl.table.misc.TruncateTableDesc;
 import org.apache.hadoop.hive.ql.ddl.table.partition.PartitionUtils;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableArchiveDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableClusteredByDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableCompactDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableIntoBucketsDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableNotClusteredDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableNotSkewedDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableNotSortedDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableConcatenateDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetFileFormatDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetLocationDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetSerdeDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetSerdePropsDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSetSkewedLocationDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableSkewedByDesc;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableUnarchiveDesc;
 import org.apache.hadoop.hive.ql.exec.ArchiveUtils;
 import org.apache.hadoop.hive.ql.exec.ColumnStatsUpdateTask;
 import org.apache.hadoop.hive.ql.exec.Task;
@@ -87,8 +62,6 @@ import org.apache.hadoop.hive.ql.hooks.WriteEntity;
 import org.apache.hadoop.hive.ql.hooks.WriteEntity.WriteType;
 import org.apache.hadoop.hive.ql.io.AcidUtils;
 import org.apache.hadoop.hive.ql.io.RCFileInputFormat;
-import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat;
-import org.apache.hadoop.hive.ql.lib.Node;
 import org.apache.hadoop.hive.ql.metadata.DefaultConstraint;
 import org.apache.hadoop.hive.ql.metadata.Hive;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
@@ -102,11 +75,8 @@ import org.apache.hadoop.hive.ql.plan.HiveOperation;
 import org.apache.hadoop.hive.ql.plan.ListBucketingCtx;
 import org.apache.hadoop.hive.ql.plan.LoadTableDesc;
 import org.apache.hadoop.hive.ql.plan.MoveWork;
-import org.apache.hadoop.hive.ql.plan.PlanUtils;
 import org.apache.hadoop.hive.ql.plan.StatsWork;
 import org.apache.hadoop.hive.ql.plan.TableDesc;
-import org.apache.hadoop.hive.ql.plan.ValidationUtility;
-import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
@@ -215,10 +185,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
         analyzeAlterTableRename(tName, ast, false);
       } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_TOUCH) {
         analyzeAlterTableTouch(tName, ast);
-      } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_ARCHIVE) {
-        analyzeAlterTableArchive(tName, ast, false);
-      } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_UNARCHIVE) {
-        analyzeAlterTableArchive(tName, ast, true);
       } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_PROPERTIES) {
         analyzeAlterTableProps(tName, null, ast, false, false);
       } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_DROPPROPERTIES) {
@@ -226,32 +192,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
       } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_UPDATESTATS ||
           ast.getType() == HiveParser.TOK_ALTERPARTITION_UPDATESTATS) {
         analyzeAlterTableProps(tName, partSpec, ast, false, false);
-      } else if (ast.getType() == HiveParser.TOK_ALTERTABLE_SKEWED) {
-        analyzeAlterTableSkewedby(tName, ast);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_FILEFORMAT ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_FILEFORMAT) {
-        analyzeAlterTableFileFormat(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_LOCATION ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_LOCATION) {
-        analyzeAlterTableLocation(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_MERGEFILES ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_MERGEFILES) {
-        analyzeAlterTablePartMergeFiles(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_SERIALIZER ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_SERIALIZER) {
-        analyzeAlterTableSerde(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_SERDEPROPERTIES ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_SERDEPROPERTIES) {
-        analyzeAlterTableSerdeProps(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_SKEWED_LOCATION) {
-        analyzeAlterTableSkewedLocation(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_BUCKETS ||
-          ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_BUCKETS) {
-        analyzeAlterTableBucketNum(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_CLUSTER_SORT) {
-        analyzeAlterTableClusterSort(ast, tName, partSpec);
-      } else if (ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_COMPACT) {
-        analyzeAlterTableCompact(ast, tName, partSpec);
       } else if(ast.getToken().getType() == HiveParser.TOK_ALTERTABLE_UPDATECOLSTATS ||
           ast.getToken().getType() == HiveParser.TOK_ALTERPARTITION_UPDATECOLSTATS){
         analyzeAlterTableUpdateStats(ast, tName, partSpec);
@@ -709,40 +649,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
     return ddlDescWithWriteId;
   }
 
-  private void analyzeAlterTableSerdeProps(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-    Map<String, String> mapProp = getProps((ASTNode) (ast.getChild(0)).getChild(0));
-    AlterTableSetSerdePropsDesc alterTblDesc = new AlterTableSetSerdePropsDesc(tableName, partSpec, mapProp);
-
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, AlterTableType.SET_SERDE_PROPS, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  private void analyzeAlterTableSerde(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-    String serdeName = unescapeSQLString(ast.getChild(0).getText());
-    Map<String, String> props = (ast.getChildCount() > 1) ? getProps((ASTNode) (ast.getChild(1)).getChild(0)) : null;
-    AlterTableSetSerdeDesc alterTblDesc = new AlterTableSetSerdeDesc(tableName, partSpec, props, serdeName);
-
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, AlterTableType.SET_SERDE, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  private void analyzeAlterTableFileFormat(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-    StorageFormat format = new StorageFormat(conf);
-    ASTNode child = (ASTNode) ast.getChild(0);
-    if (!format.fillStorageFormat(child)) {
-      throw new AssertionError("Unknown token " + child.getText());
-    }
-
-    AlterTableSetFileFormatDesc alterTblDesc = new AlterTableSetFileFormatDesc(tableName, partSpec,
-        format.getInputFormat(), format.getOutputFormat(), format.getSerde());
-
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, AlterTableType.SET_FILE_FORMAT, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
   // For the time while all the alter table operations are getting migrated there is a duplication of this method here
   private WriteType determineAlterTableWriteType(Table tab, AbstractAlterTableDesc desc, AlterTableType op) {
     boolean convertingToAcid = false;
@@ -836,233 +742,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf));
   }
 
-  private void analyzeAlterTableLocation(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-
-    String newLocation = unescapeSQLString(ast.getChild(0).getText());
-    try {
-      // To make sure host/port pair is valid, the status of the location does not matter
-      FileSystem.get(new URI(newLocation), conf).getFileStatus(new Path(newLocation));
-    } catch (FileNotFoundException e) {
-      // Only check host/port pair is valid, whether the file exist or not does not matter
-    } catch (Exception e) {
-      throw new SemanticException("Cannot connect to namenode, please check if host/port pair for " + newLocation + " is valid", e);
-    }
-
-    addLocationToOutputs(newLocation);
-    AlterTableSetLocationDesc alterTblDesc = new AlterTableSetLocationDesc(tableName, partSpec, newLocation);
-    Table tbl = getTable(tableName);
-    if (AcidUtils.isTransactionalTable(tbl)) {
-      setAcidDdlDesc(alterTblDesc);
-    }
-
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, AlterTableType.ALTERLOCATION, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  private void analyzeAlterTablePartMergeFiles(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-
-    Path oldTblPartLoc = null;
-    Path newTblPartLoc = null;
-    Table tblObj = null;
-    ListBucketingCtx lbCtx = null;
-
-    tblObj = getTable(tableName);
-    if(AcidUtils.isTransactionalTable(tblObj)) {
-      LinkedHashMap<String, String> newPartSpec = null;
-      if (partSpec != null) {
-        newPartSpec = new LinkedHashMap<>(partSpec);
-      }
-
-      boolean isBlocking = !HiveConf.getBoolVar(conf,
-          ConfVars.TRANSACTIONAL_CONCATENATE_NOBLOCK, false);
-      AlterTableCompactDesc desc = new AlterTableCompactDesc(tableName, newPartSpec, "MAJOR", isBlocking, null);
-
-      rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-      return;
-    }
-
-    List<String> bucketCols = null;
-    Class<? extends InputFormat> inputFormatClass = null;
-    boolean isArchived = false;
-    if (tblObj.isPartitioned()) {
-      if (partSpec == null) {
-        throw new SemanticException("source table " + tableName
-            + " is partitioned but no partition desc found.");
-      } else {
-        Partition part = PartitionUtils.getPartition(db, tblObj, partSpec, false);
-        if (part == null) {
-          throw new SemanticException("source table " + tableName
-              + " is partitioned but partition not found.");
-        }
-        bucketCols = part.getBucketCols();
-        try {
-          inputFormatClass = part.getInputFormatClass();
-        } catch (HiveException e) {
-          throw new SemanticException(e);
-        }
-        isArchived = ArchiveUtils.isArchived(part);
-
-        Path tabPath = tblObj.getPath();
-        Path partPath = part.getDataLocation();
-
-        // if the table is in a different dfs than the partition,
-        // replace the partition's dfs with the table's dfs.
-        newTblPartLoc = new Path(tabPath.toUri().getScheme(), tabPath.toUri()
-            .getAuthority(), partPath.toUri().getPath());
-
-        oldTblPartLoc = partPath;
-
-        lbCtx = constructListBucketingCtx(part.getSkewedColNames(), part.getSkewedColValues(),
-            part.getSkewedColValueLocationMaps(), part.isStoredAsSubDirectories());
-      }
-    } else {
-      inputFormatClass = tblObj.getInputFormatClass();
-      bucketCols = tblObj.getBucketCols();
-
-      // input and output are the same
-      oldTblPartLoc = tblObj.getPath();
-      newTblPartLoc = tblObj.getPath();
-
-      lbCtx = constructListBucketingCtx(tblObj.getSkewedColNames(), tblObj.getSkewedColValues(),
-          tblObj.getSkewedColValueLocationMaps(), tblObj.isStoredAsSubDirectories());
-    }
-
-    // throw a HiveException for other than rcfile and orcfile.
-    if (!(inputFormatClass.equals(RCFileInputFormat.class) || inputFormatClass.equals(OrcInputFormat.class))) {
-      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_FILE_FORMAT.getMsg());
-    }
-
-    // throw a HiveException if the table/partition is bucketized
-    if (bucketCols != null && bucketCols.size() > 0) {
-      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_BUCKETED.getMsg());
-    }
-
-    // throw a HiveException if the table/partition is archived
-    if (isArchived) {
-      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_PARTITION_ARCHIVED.getMsg());
-    }
-
-    // non-native and non-managed tables are not supported as MoveTask requires filenames to be in specific format,
-    // violating which can cause data loss
-    if (tblObj.isNonNative()) {
-      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NON_NATIVE.getMsg());
-    }
-
-    if (tblObj.getTableType() != TableType.MANAGED_TABLE) {
-      throw new SemanticException(ErrorMsg.CONCATENATE_UNSUPPORTED_TABLE_NOT_MANAGED.getMsg());
-    }
-
-    addInputsOutputsAlterTable(tableName, partSpec, null, AlterTableType.MERGEFILES, false);
-    TableDesc tblDesc = Utilities.getTableDesc(tblObj);
-    Path queryTmpdir = ctx.getExternalTmpPath(newTblPartLoc);
-    AlterTableConcatenateDesc mergeDesc = new AlterTableConcatenateDesc(tableName, partSpec, lbCtx, oldTblPartLoc,
-        queryTmpdir, inputFormatClass, Utilities.getTableDesc(tblObj));
-    DDLWork ddlWork = new DDLWork(getInputs(), getOutputs(), mergeDesc);
-    ddlWork.setNeedLock(true);
-    Task<?> mergeTask = TaskFactory.get(ddlWork);
-    // No need to handle MM tables - unsupported path.
-    LoadTableDesc ltd = new LoadTableDesc(queryTmpdir, tblDesc,
-        partSpec == null ? new HashMap<>() : partSpec);
-    ltd.setLbCtx(lbCtx);
-    ltd.setInheritTableSpecs(true);
-    Task<MoveWork> moveTsk =
-        TaskFactory.get(new MoveWork(null, null, ltd, null, false));
-    mergeTask.addDependentTask(moveTsk);
-
-    if (conf.getBoolVar(HiveConf.ConfVars.HIVESTATSAUTOGATHER)) {
-      BasicStatsWork basicStatsWork;
-      if (oldTblPartLoc.equals(newTblPartLoc)) {
-        // If we're merging to the same location, we can avoid some metastore calls
-        try{
-          TableSpec tableSpec = new TableSpec(db, tableName, partSpec);
-          basicStatsWork = new BasicStatsWork(tableSpec);
-        } catch (HiveException e){
-          throw new SemanticException(e);
-        }
-      } else {
-        basicStatsWork = new BasicStatsWork(ltd);
-      }
-      basicStatsWork.setNoStatsAggregator(true);
-      basicStatsWork.setClearAggregatorStats(true);
-      StatsWork columnStatsWork = new StatsWork(tblObj, basicStatsWork, conf);
-
-      Task<?> statTask = TaskFactory.get(columnStatsWork);
-      moveTsk.addDependentTask(statTask);
-    }
-
-    rootTasks.add(mergeTask);
-  }
-
-  private void analyzeAlterTableClusterSort(ASTNode ast, TableName tableName, Map<String, String> partSpec)
-      throws SemanticException {
-
-    AbstractAlterTableDesc alterTblDesc;
-    switch (ast.getChild(0).getType()) {
-    case HiveParser.TOK_NOT_CLUSTERED:
-      alterTblDesc = new AlterTableNotClusteredDesc(tableName, partSpec);
-      break;
-    case HiveParser.TOK_NOT_SORTED:
-      alterTblDesc = new AlterTableNotSortedDesc(tableName, partSpec);
-      break;
-    case HiveParser.TOK_ALTERTABLE_BUCKETS:
-      ASTNode buckets = (ASTNode) ast.getChild(0);
-      List<String> bucketCols = getColumnNames((ASTNode) buckets.getChild(0));
-      List<Order> sortCols = new ArrayList<Order>();
-      int numBuckets = -1;
-      if (buckets.getChildCount() == 2) {
-        numBuckets = Integer.parseInt(buckets.getChild(1).getText());
-      } else {
-        sortCols = getColumnNamesOrder((ASTNode) buckets.getChild(1));
-        numBuckets = Integer.parseInt(buckets.getChild(2).getText());
-      }
-      if (numBuckets <= 0) {
-        throw new SemanticException(ErrorMsg.INVALID_BUCKET_NUMBER.getMsg());
-      }
-
-      alterTblDesc = new AlterTableClusteredByDesc(tableName, partSpec, numBuckets, bucketCols, sortCols);
-      break;
-    default:
-      throw new SemanticException("Invalid operation " + ast.getChild(0).getType());
-    }
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, alterTblDesc.getType(), false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  private void analyzeAlterTableCompact(ASTNode ast, TableName tableName,
-      Map<String, String> partSpec) throws SemanticException {
-
-    String type = unescapeSQLString(ast.getChild(0).getText()).toLowerCase();
-
-    if (!type.equals("minor") && !type.equals("major")) {
-      throw new SemanticException(ErrorMsg.INVALID_COMPACTION_TYPE.getMsg());
-    }
-
-    LinkedHashMap<String, String> newPartSpec = null;
-    if (partSpec != null) {
-      newPartSpec = new LinkedHashMap<String, String>(partSpec);
-    }
-
-    Map<String, String> mapProp = null;
-    boolean isBlocking = false;
-
-    for(int i = 0; i < ast.getChildCount(); i++) {
-      switch(ast.getChild(i).getType()) {
-      case HiveParser.TOK_TABLEPROPERTIES:
-        mapProp = getProps((ASTNode) (ast.getChild(i)).getChild(0));
-        break;
-      case HiveParser.TOK_BLOCKING:
-        isBlocking = true;
-        break;
-      default:
-        break;
-      }
-    }
-    AlterTableCompactDesc desc = new AlterTableCompactDesc(tableName, newPartSpec, type, isBlocking, mapProp);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), desc)));
-  }
-
   /**
    * Utility class to resolve QualifiedName
    */
@@ -1105,21 +784,6 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
   }
 
-  private void analyzeAlterTableBucketNum(ASTNode ast, TableName tblName, Map<String, String> partSpec)
-      throws SemanticException {
-    Table tab = getTable(tblName, true);
-    if (CollectionUtils.isEmpty(tab.getBucketCols())) {
-      throw new SemanticException(ErrorMsg.ALTER_BUCKETNUM_NONBUCKETIZED_TBL.getMsg());
-    }
-    validateAlterTableType(tab, AlterTableType.INTO_BUCKETS);
-    inputs.add(new ReadEntity(tab));
-
-    int numberOfBuckets = Integer.parseInt(ast.getChild(0).getText());
-    AlterTableIntoBucketsDesc alterBucketNum = new AlterTableIntoBucketsDesc(tblName, partSpec, numberOfBuckets);
-
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterBucketNum)));
-  }
-
   /**
    * Rewrite the metadata for one or more partitions in a table. Useful when
    * an external process modifies files on HDFS and you want the pre/post
@@ -1151,242 +815,4 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer {
       }
     }
   }
-
-  private void analyzeAlterTableArchive(TableName tName, CommonTree ast, boolean isUnArchive) throws SemanticException {
-
-    if (!conf.getBoolVar(HiveConf.ConfVars.HIVEARCHIVEENABLED)) {
-      throw new SemanticException(ErrorMsg.ARCHIVE_METHODS_DISABLED.getMsg());
-
-    }
-    Table tab = getTable(tName);
-    // partition name to value
-    List<Map<String, String>> partSpecs = getPartitionSpecs(tab, ast);
-
-    PartitionUtils.addTablePartsOutputs(db, outputs, tab, partSpecs, true, WriteEntity.WriteType.DDL_NO_LOCK);
-    validateAlterTableType(tab, AlterTableType.ARCHIVE);
-    inputs.add(new ReadEntity(tab));
-
-    if (partSpecs.size() > 1) {
-      throw new SemanticException(isUnArchive ?
-          ErrorMsg.UNARCHIVE_ON_MULI_PARTS.getMsg() :
-          ErrorMsg.ARCHIVE_ON_MULI_PARTS.getMsg());
-    }
-    if (partSpecs.size() == 0) {
-      throw new SemanticException(ErrorMsg.ARCHIVE_ON_TABLE.getMsg());
-    }
-
-    Map<String, String> partSpec = partSpecs.get(0);
-    try {
-      isValidPrefixSpec(tab, partSpec);
-    } catch (HiveException e) {
-      throw new SemanticException(e.getMessage(), e);
-    }
-    DDLDesc archiveDesc = null;
-    if (isUnArchive) {
-      archiveDesc = new AlterTableUnarchiveDesc(tName.getDbTable(), partSpec);
-    } else {
-      archiveDesc = new AlterTableArchiveDesc(tName.getDbTable(), partSpec);
-    }
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), archiveDesc)));
-  }
-
-  /**
-   * Analyze alter table's skewed table
-   *
-   * @param ast
-   *          node
-   * @throws SemanticException
-   */
-  private void analyzeAlterTableSkewedby(TableName tName, ASTNode ast) throws SemanticException {
-    /**
-     * Throw an error if the user tries to use the DDL with
-     * hive.internal.ddl.list.bucketing.enable set to false.
-     */
-    SessionState.get().getConf();
-
-    Table tab = getTable(tName);
-
-    inputs.add(new ReadEntity(tab));
-    outputs.add(new WriteEntity(tab, WriteEntity.WriteType.DDL_EXCLUSIVE));
-
-    validateAlterTableType(tab, AlterTableType.SKEWED_BY);
-
-    if (ast.getChildCount() == 0) {
-      /* Convert a skewed table to non-skewed table. */
-      AlterTableNotSkewedDesc alterTblDesc = new AlterTableNotSkewedDesc(tName);
-      rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-    } else {
-      switch (((ASTNode) ast.getChild(0)).getToken().getType()) {
-      case HiveParser.TOK_TABLESKEWED:
-        handleAlterTableSkewedBy(ast, tName, tab);
-        break;
-      case HiveParser.TOK_STOREDASDIRS:
-        handleAlterTableDisableStoredAsDirs(tName, tab);
-        break;
-      default:
-        assert false;
-      }
-    }
-  }
-
-  /**
-   * Handle alter table <name> not stored as directories
-   *
-   * @param tableName
-   * @param tab
-   * @throws SemanticException
-   */
-  private void handleAlterTableDisableStoredAsDirs(TableName tableName, Table tab)
-      throws SemanticException {
-    List<String> skewedColNames = tab.getSkewedColNames();
-    List<List<String>> skewedColValues = tab.getSkewedColValues();
-    if (CollectionUtils.isEmpty(skewedColNames) || CollectionUtils.isEmpty(skewedColValues)) {
-      throw new SemanticException(ErrorMsg.ALTER_TBL_STOREDASDIR_NOT_SKEWED.getMsg(tableName.getNotEmptyDbTable()));
-    }
-
-    AlterTableSkewedByDesc alterTblDesc = new AlterTableSkewedByDesc(tableName, skewedColNames, skewedColValues, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  /**
-   * Process "alter table <name> skewed by .. on .. stored as directories
-   * @param ast
-   * @param tableName
-   * @param tab
-   * @throws SemanticException
-   */
-  private void handleAlterTableSkewedBy(ASTNode ast, TableName tableName, Table tab) throws SemanticException {
-    List<String> skewedColNames = new ArrayList<String>();
-    List<List<String>> skewedValues = new ArrayList<List<String>>();
-    /* skewed column names. */
-    ASTNode skewedNode = (ASTNode) ast.getChild(0);
-    skewedColNames = analyzeSkewedTablDDLColNames(skewedColNames, skewedNode);
-    /* skewed value. */
-    analyzeDDLSkewedValues(skewedValues, skewedNode);
-    // stored as directories
-    boolean storedAsDirs = analyzeStoredAdDirs(skewedNode);
-
-    if (tab != null) {
-      /* Validate skewed information. */
-      ValidationUtility.validateSkewedInformation(
-          ParseUtils.validateColumnNameUniqueness(tab.getCols()), skewedColNames, skewedValues);
-    }
-
-    AlterTableSkewedByDesc alterTblDesc = new AlterTableSkewedByDesc(tableName, skewedColNames, skewedValues,
-        storedAsDirs);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  /**
-   * Analyze alter table's skewed location
-   *
-   * @param ast
-   * @param tableName
-   * @param partSpec
-   * @throws SemanticException
-   */
-  private void analyzeAlterTableSkewedLocation(ASTNode ast, TableName tableName,
-      Map<String, String> partSpec) throws SemanticException {
-    /**
-     * Throw an error if the user tries to use the DDL with
-     * hive.internal.ddl.list.bucketing.enable set to false.
-     */
-    SessionState.get().getConf();
-    /**
-     * Retrieve mappings from parser
-     */
-    Map<List<String>, String> locations = new HashMap<List<String>, String>();
-    ArrayList<Node> locNodes = ast.getChildren();
-    if (null == locNodes) {
-      throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
-    } else {
-      for (Node locNode : locNodes) {
-        // TOK_SKEWED_LOCATIONS
-        ASTNode locAstNode = (ASTNode) locNode;
-        ArrayList<Node> locListNodes = locAstNode.getChildren();
-        if (null == locListNodes) {
-          throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
-        } else {
-          for (Node locListNode : locListNodes) {
-            // TOK_SKEWED_LOCATION_LIST
-            ASTNode locListAstNode = (ASTNode) locListNode;
-            ArrayList<Node> locMapNodes = locListAstNode.getChildren();
-            if (null == locMapNodes) {
-              throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_LOC.getMsg());
-            } else {
-              for (Node locMapNode : locMapNodes) {
-                // TOK_SKEWED_LOCATION_MAP
-                ASTNode locMapAstNode = (ASTNode) locMapNode;
-                ArrayList<Node> locMapAstNodeMaps = locMapAstNode.getChildren();
-                if ((null == locMapAstNodeMaps) || (locMapAstNodeMaps.size() != 2)) {
-                  throw new SemanticException(ErrorMsg.ALTER_TBL_SKEWED_LOC_NO_MAP.getMsg());
-                } else {
-                  List<String> keyList = new LinkedList<String>();
-                  ASTNode node = (ASTNode) locMapAstNodeMaps.get(0);
-                  if (node.getToken().getType() == HiveParser.TOK_TABCOLVALUES) {
-                    keyList = getSkewedValuesFromASTNode(node);
-                  } else if (isConstant(node)) {
-                    keyList.add(PlanUtils
-                        .stripQuotes(node.getText()));
-                  } else {
-                    throw new SemanticException(ErrorMsg.SKEWED_TABLE_NO_COLUMN_VALUE.getMsg());
-                  }
-                  String newLocation = PlanUtils
-                      .stripQuotes(unescapeSQLString(((ASTNode) locMapAstNodeMaps.get(1))
-                          .getText()));
-                  validateSkewedLocationString(newLocation);
-                  locations.put(keyList, newLocation);
-                  addLocationToOutputs(newLocation);
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-    AlterTableSetSkewedLocationDesc alterTblDesc = new AlterTableSetSkewedLocationDesc(tableName, partSpec, locations);
-    addInputsOutputsAlterTable(tableName, partSpec, alterTblDesc, AlterTableType.SET_SKEWED_LOCATION, false);
-    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc)));
-  }
-
-  private void addLocationToOutputs(String newLocation) throws SemanticException {
-    outputs.add(toWriteEntity(newLocation));
-  }
-
-  /**
-   * Check if the node is constant.
-   *
-   * @param node
-   * @return
-   */
-  private boolean isConstant(ASTNode node) {
-    switch(node.getToken().getType()) {
-      case HiveParser.Number:
-      case HiveParser.StringLiteral:
-      case HiveParser.IntegralLiteral:
-      case HiveParser.NumberLiteral:
-      case HiveParser.CharSetName:
-      case HiveParser.KW_TRUE:
-      case HiveParser.KW_FALSE:
-        return true;
-      default:
-        return false;
-    }
-  }
-
-  private void validateSkewedLocationString(String newLocation) throws SemanticException {
-    /* Validate location string. */
-    try {
-      URI locUri = new URI(newLocation);
-      if (!locUri.isAbsolute() || locUri.getScheme() == null
-          || locUri.getScheme().trim().equals("")) {
-        throw new SemanticException(
-            newLocation
-                + " is not absolute or has no scheme information. "
-                + "Please specify a complete absolute uri with scheme information.");
-      }
-    } catch (URISyntaxException e) {
-      throw new SemanticException(e);
-    }
-  }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 961ddf4..f46739e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -110,6 +110,7 @@ import org.apache.hadoop.hive.ql.ddl.table.create.CreateTableDesc;
 import org.apache.hadoop.hive.ql.ddl.table.create.like.CreateTableLikeDesc;
 import org.apache.hadoop.hive.ql.ddl.table.misc.AlterTableUnsetPropertiesDesc;
 import org.apache.hadoop.hive.ql.ddl.table.misc.PreInsertTableDesc;
+import org.apache.hadoop.hive.ql.ddl.table.storage.skewed.SkewedTableUtils;
 import org.apache.hadoop.hive.ql.ddl.view.create.CreateViewDesc;
 import org.apache.hadoop.hive.ql.ddl.view.materialized.update.MaterializedViewUpdateDesc;
 import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator;
@@ -13567,9 +13568,9 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
         HiveConf hiveConf = SessionState.get().getConf();
 
         // skewed column names
-        skewedColNames = analyzeSkewedTablDDLColNames(skewedColNames, child);
+        skewedColNames = SkewedTableUtils.analyzeSkewedTableDDLColNames(child);
         // skewed value
-        analyzeDDLSkewedValues(skewedValues, child);
+        skewedValues = SkewedTableUtils.analyzeDDLSkewedValues(child);
         // stored as directories
         storedAsDirs = analyzeStoredAdDirs(child);
 
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBCompact.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBCompact.java
index 0ec4605..e564525 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBCompact.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBCompact.java
@@ -27,7 +27,7 @@ import org.apache.hadoop.hive.ql.Context;
 import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.QueryState;
 import org.apache.hadoop.hive.ql.ddl.DDLWork;
-import org.apache.hadoop.hive.ql.ddl.table.storage.AlterTableCompactDesc;
+import org.apache.hadoop.hive.ql.ddl.table.storage.compact.AlterTableCompactDesc;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat;
 import org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat;
diff --git a/ql/src/test/queries/clientnegative/compact_illegal_type.q b/ql/src/test/queries/clientnegative/compact_illegal_type.q
new file mode 100644
index 0000000..ee84045
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/compact_illegal_type.q
@@ -0,0 +1,9 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+create table t(key string, val string) clustered by (val) into 2 buckets stored as ORC TBLPROPERTIES ('transactional'='true');
+
+alter table t compact 'middle';
+
+drop table t;
+
diff --git a/ql/src/test/results/clientnegative/compact_illegal_type.q.out b/ql/src/test/results/clientnegative/compact_illegal_type.q.out
new file mode 100644
index 0000000..3874e98
--- /dev/null
+++ b/ql/src/test/results/clientnegative/compact_illegal_type.q.out
@@ -0,0 +1,9 @@
+PREHOOK: query: create table t(key string, val string) clustered by (val) into 2 buckets stored as ORC TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t
+POSTHOOK: query: create table t(key string, val string) clustered by (val) into 2 buckets stored as ORC TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t
+FAILED: SemanticException [Error 10282]: Invalid compaction type, supported values are 'major' and 'minor'
diff --git a/ql/src/test/results/clientnegative/merge_negative_4.q.out b/ql/src/test/results/clientnegative/merge_negative_4.q.out
index d9eb221..17950f4 100644
--- a/ql/src/test/results/clientnegative/merge_negative_4.q.out
+++ b/ql/src/test/results/clientnegative/merge_negative_4.q.out
@@ -16,4 +16,4 @@ POSTHOOK: Input: default@src
 POSTHOOK: Output: default@srcpart2@ds=2011
 POSTHOOK: Lineage: srcpart2 PARTITION(ds=2011).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
 POSTHOOK: Lineage: srcpart2 PARTITION(ds=2011).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
-FAILED: SemanticException [Error 30031]: Concatenate/Merge can not be performed on bucketed tables
+FAILED: SemanticException [Error 30034]: Concatenate/Merge can only be performed on managed tables