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