diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index 7443ea4..ccb9e2b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -199,7 +199,7 @@ public TablePartition() { } public TablePartition(ASTNode tblPart) throws SemanticException { - tableName = unescapeIdentifier(tblPart.getChild(0).getText()); + tableName = getUnescapedName((ASTNode) tblPart.getChild(0)); if (tblPart.getChildCount() > 1) { ASTNode part = (ASTNode) tblPart.getChild(1); if (part.getToken().getType() == HiveParser.TOK_PARTSPEC) { @@ -2531,7 +2531,7 @@ private void analyzeAlterTableAlterParts(ASTNode ast) // check if table exists. try { - tab = db.getTable(SessionState.get().getCurrentDatabase(), tblName, true); + tab = db.getTable(tblName, true); inputs.add(new ReadEntity(tab)); } catch (HiveException e) { throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tblName)); @@ -3286,7 +3286,7 @@ private Table getTable(String tblName) throws SemanticException { } private Table getTable(String tblName, boolean throwException) throws SemanticException { - return getTable(SessionState.get().getCurrentDatabase(), tblName, throwException); + return getTable(null, tblName, throwException); } private Table getTable(String database, String tblName, boolean throwException) diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 2343a2c..125118d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -869,18 +869,18 @@ alterStatement alterTableStatementSuffix @init { msgs.push("alter table statement"); } @after { msgs.pop(); } - : alterStatementSuffixRename - | alterStatementSuffixAddCol - | alterStatementSuffixRenameCol - | alterStatementSuffixDropPartitions - | alterStatementSuffixAddPartitions - | alterStatementSuffixTouch - | alterStatementSuffixArchive - | alterStatementSuffixUnArchive - | alterStatementSuffixProperties - | alterTblPartitionStatement - | alterStatementSuffixSkewedby - | alterStatementSuffixExchangePartition + : (alterStatementSuffixRename) => alterStatementSuffixRename + | (alterStatementSuffixAddCol) => alterStatementSuffixAddCol + | (alterStatementSuffixRenameCol) => alterStatementSuffixRenameCol + | (alterStatementSuffixDropPartitions) => alterStatementSuffixDropPartitions + | (alterStatementSuffixAddPartitions) => alterStatementSuffixAddPartitions + | (alterStatementSuffixTouch) => alterStatementSuffixTouch + | (alterStatementSuffixArchive) => alterStatementSuffixArchive + | (alterStatementSuffixUnArchive) => alterStatementSuffixUnArchive + | (alterStatementSuffixProperties) => alterStatementSuffixProperties + | (alterTblPartitionStatement) => alterTblPartitionStatement + | (alterStatementSuffixSkewedby) => alterStatementSuffixSkewedby + | (alterStatementSuffixExchangePartition) => alterStatementSuffixExchangePartition ; alterViewStatementSuffix @@ -929,23 +929,23 @@ alterDatabaseSuffixProperties alterStatementSuffixRename @init { msgs.push("rename statement"); } @after { msgs.pop(); } - : oldName=identifier KW_RENAME KW_TO newName=identifier + : oldName=tableName KW_RENAME KW_TO newName=identifier -> ^(TOK_ALTERTABLE_RENAME $oldName $newName) ; alterStatementSuffixAddCol @init { msgs.push("add column statement"); } @after { msgs.pop(); } - : identifier (add=KW_ADD | replace=KW_REPLACE) KW_COLUMNS LPAREN columnNameTypeList RPAREN - -> {$add != null}? ^(TOK_ALTERTABLE_ADDCOLS identifier columnNameTypeList) - -> ^(TOK_ALTERTABLE_REPLACECOLS identifier columnNameTypeList) + : tabName=tableName (add=KW_ADD | replace=KW_REPLACE) KW_COLUMNS LPAREN columnNameTypeList RPAREN + -> {$add != null}? ^(TOK_ALTERTABLE_ADDCOLS $tabName columnNameTypeList) + -> ^(TOK_ALTERTABLE_REPLACECOLS $tabName columnNameTypeList) ; alterStatementSuffixRenameCol @init { msgs.push("rename column name"); } @after { msgs.pop(); } - : identifier KW_CHANGE KW_COLUMN? oldName=identifier newName=identifier colType (KW_COMMENT comment=StringLiteral)? alterStatementChangeColPosition? - ->^(TOK_ALTERTABLE_RENAMECOL identifier $oldName $newName colType $comment? alterStatementChangeColPosition?) + : tabName=tableName KW_CHANGE KW_COLUMN? oldName=identifier newName=identifier colType (KW_COMMENT comment=StringLiteral)? alterStatementChangeColPosition? + ->^(TOK_ALTERTABLE_RENAMECOL $tabName $oldName $newName colType $comment? alterStatementChangeColPosition?) ; alterStatementChangeColPosition @@ -957,8 +957,8 @@ alterStatementChangeColPosition alterStatementSuffixAddPartitions @init { msgs.push("add partition statement"); } @after { msgs.pop(); } - : identifier KW_ADD ifNotExists? alterStatementSuffixAddPartitionsElement+ - -> ^(TOK_ALTERTABLE_ADDPARTS identifier ifNotExists? alterStatementSuffixAddPartitionsElement+) + : tabName=tableName KW_ADD ifNotExists? alterStatementSuffixAddPartitionsElement+ + -> ^(TOK_ALTERTABLE_ADDPARTS $tabName ifNotExists? alterStatementSuffixAddPartitionsElement+) ; alterStatementSuffixAddPartitionsElement @@ -968,22 +968,22 @@ alterStatementSuffixAddPartitionsElement alterStatementSuffixTouch @init { msgs.push("touch statement"); } @after { msgs.pop(); } - : identifier KW_TOUCH (partitionSpec)* - -> ^(TOK_ALTERTABLE_TOUCH identifier (partitionSpec)*) + : tabName=tableName KW_TOUCH (partitionSpec)* + -> ^(TOK_ALTERTABLE_TOUCH $tabName (partitionSpec)*) ; alterStatementSuffixArchive @init { msgs.push("archive statement"); } @after { msgs.pop(); } - : identifier KW_ARCHIVE (partitionSpec)* - -> ^(TOK_ALTERTABLE_ARCHIVE identifier (partitionSpec)*) + : tabName=tableName KW_ARCHIVE (partitionSpec)* + -> ^(TOK_ALTERTABLE_ARCHIVE $tabName (partitionSpec)*) ; alterStatementSuffixUnArchive @init { msgs.push("unarchive statement"); } @after { msgs.pop(); } - : identifier KW_UNARCHIVE (partitionSpec)* - -> ^(TOK_ALTERTABLE_UNARCHIVE identifier (partitionSpec)*) + : tabName=tableName KW_UNARCHIVE (partitionSpec)* + -> ^(TOK_ALTERTABLE_UNARCHIVE $tabName (partitionSpec)*) ; partitionLocation @@ -996,16 +996,16 @@ partitionLocation alterStatementSuffixDropPartitions @init { msgs.push("drop partition statement"); } @after { msgs.pop(); } - : identifier KW_DROP ifExists? dropPartitionSpec (COMMA dropPartitionSpec)* ignoreProtection? - -> ^(TOK_ALTERTABLE_DROPPARTS identifier dropPartitionSpec+ ifExists? ignoreProtection?) + : tabName=tableName KW_DROP ifExists? dropPartitionSpec (COMMA dropPartitionSpec)* ignoreProtection? + -> ^(TOK_ALTERTABLE_DROPPARTS $tabName dropPartitionSpec+ ifExists? ignoreProtection?) ; alterStatementSuffixProperties @init { msgs.push("alter properties statement"); } @after { msgs.pop(); } - : name=identifier KW_SET KW_TBLPROPERTIES tableProperties + : (tableName KW_SET KW_TBLPROPERTIES tableProperties) => name=tableName KW_SET KW_TBLPROPERTIES tableProperties -> ^(TOK_ALTERTABLE_PROPERTIES $name tableProperties) - | name=identifier KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties + | name=tableName KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties -> ^(TOK_DROPTABLE_PROPERTIES $name tableProperties ifExists?) ; @@ -1030,17 +1030,17 @@ alterStatementSuffixSerdeProperties tablePartitionPrefix @init {msgs.push("table partition prefix");} @after {msgs.pop();} - :name=identifier partitionSpec? + :name=tableName partitionSpec? ->^(TOK_TABLE_PARTITION $name partitionSpec?) ; alterTblPartitionStatement @init {msgs.push("alter table partition statement");} @after {msgs.pop();} - : tablePartitionPrefix alterTblPartitionStatementSuffix + : (tablePartitionPrefix alterTblPartitionStatementSuffix) => tablePartitionPrefix alterTblPartitionStatementSuffix -> ^(TOK_ALTERTABLE_PARTITION tablePartitionPrefix alterTblPartitionStatementSuffix) - |Identifier KW_PARTITION KW_COLUMN LPAREN columnNameType RPAREN - -> ^(TOK_ALTERTABLE_ALTERPARTS Identifier columnNameType) + |name=tableName KW_PARTITION KW_COLUMN LPAREN columnNameType RPAREN + -> ^(TOK_ALTERTABLE_ALTERPARTS $name columnNameType) ; alterTblPartitionStatementSuffix @@ -1111,14 +1111,10 @@ alterStatementSuffixLocation alterStatementSuffixSkewedby @init {msgs.push("alter skewed by statement");} @after{msgs.pop();} - :name=identifier tableSkewed - ->^(TOK_ALTERTABLE_SKEWED $name tableSkewed) - | - name=identifier KW_NOT KW_SKEWED - ->^(TOK_ALTERTABLE_SKEWED $name) - | - name=identifier KW_NOT storedAsDirs - ->^(TOK_ALTERTABLE_SKEWED $name storedAsDirs) + : name=tableName (tableSkewed | not=KW_NOT (notSkewed=KW_SKEWED | storedAsDirs)) + ->{$not == null}? ^(TOK_ALTERTABLE_SKEWED $name tableSkewed) + ->{$notSkewed != null}? ^(TOK_ALTERTABLE_SKEWED $name) + -> ^(TOK_ALTERTABLE_SKEWED $name storedAsDirs) ; alterStatementSuffixExchangePartition diff --git ql/src/test/queries/clientnegative/alter_table_failure.q ql/src/test/queries/clientnegative/alter_table_failure.q new file mode 100644 index 0000000..b2d93af --- /dev/null +++ ql/src/test/queries/clientnegative/alter_table_failure.q @@ -0,0 +1,3 @@ +create table alter6 (a int); +create database alter_db; +alter table default.alter6 rename to alter_db.alter6; \ No newline at end of file diff --git ql/src/test/queries/clientnegative/authorization_fail_8.q ql/src/test/queries/clientnegative/authorization_fail_8.q new file mode 100644 index 0000000..ff7e9dd --- /dev/null +++ ql/src/test/queries/clientnegative/authorization_fail_8.q @@ -0,0 +1,8 @@ +set hive.security.authorization.enabled=false; + +create table src_authorization_8 (key1 int, value1 string); +set hive.security.authorization.enabled=true; + +desc src_authorization_8; + +drop table default.src_authorization_8; diff --git ql/src/test/queries/clientpositive/alter6.q ql/src/test/queries/clientpositive/alter6.q new file mode 100644 index 0000000..dab5031 --- /dev/null +++ ql/src/test/queries/clientpositive/alter6.q @@ -0,0 +1,59 @@ +create table default_alter6 (a int) partitioned by (p string); + +alter table default.default_alter6 rename to alter6; +describe default.alter6; + +alter table default.alter6 add columns (b int); +describe default.alter6; + +alter table default.alter6 replace columns (a int, b int, c string); +describe default.alter6; + +alter table default.alter6 change column c cc int; +describe default.alter6; + +show partitions alter6; +alter table default.alter6 add partition (p='p1'); +alter table default.alter6 add partition (p='p2'); +show partitions alter6; + +alter table default.alter6 touch partition(p='p1'); + +set hive.archive.enabled = true; +alter table default.alter6 archive partition (p='p1'); +describe extended alter6 partition (p='p1'); + +alter table default.alter6 unarchive partition (p='p1'); +describe extended alter6 partition (p='p1'); +show partitions alter6; + +alter table default.alter6 drop partition (p='p1'); + +alter table default.alter6 set tblproperties('s1'='1'); +describe extended alter6; + +alter table default.alter6 unset tblproperties('s1'='1'); +describe extended alter6; + +alter table default.alter6 partition (p='p2') set fileformat orc; +show create table alter6; + +alter table default.alter6 partition column (p int); +describe default.alter6; + +create table exchange_alter6 like alter6; +show partitions exchange_alter6; +show partitions alter6; +alter table default.alter6 exchange partition (p='p2') with table exchange_alter6; +show partitions exchange_alter6; +show partitions alter6; +drop table exchange_alter6; + +alter table default.alter6 skewed by (a) on ('skew_a') stored as directories; +describe formatted alter6; +alter table default.alter6 not stored as directories; +describe formatted alter6; +alter table default.alter6 not skewed; +describe formatted alter6; + +drop table alter6; diff --git ql/src/test/results/clientnegative/alter_partition_coltype_2columns.q.out ql/src/test/results/clientnegative/alter_partition_coltype_2columns.q.out index e1f9a27..d50b280 100644 --- ql/src/test/results/clientnegative/alter_partition_coltype_2columns.q.out +++ ql/src/test/results/clientnegative/alter_partition_coltype_2columns.q.out @@ -33,4 +33,4 @@ ts string None dt string None ts string None -FAILED: ParseException line 4:50 mismatched input ',' expecting ) near 'int' in alter table partition statement +FAILED: ParseException line 4:26 cannot recognize input near 'alter_coltype' 'partition' 'column' in primitive type specification diff --git ql/src/test/results/clientnegative/alter_partition_coltype_invalidtype.q.out ql/src/test/results/clientnegative/alter_partition_coltype_invalidtype.q.out index a6deaee..68a7bcf 100644 --- ql/src/test/results/clientnegative/alter_partition_coltype_invalidtype.q.out +++ ql/src/test/results/clientnegative/alter_partition_coltype_invalidtype.q.out @@ -33,4 +33,4 @@ ts string None dt string None ts string None -FAILED: ParseException line 4:47 cannot recognize input near 'time' ')' '' in column type +FAILED: ParseException line 4:26 cannot recognize input near 'alter_coltype' 'partition' 'column' in column type diff --git ql/src/test/results/clientnegative/alter_table_failure.q.out ql/src/test/results/clientnegative/alter_table_failure.q.out new file mode 100644 index 0000000..991b768 --- /dev/null +++ ql/src/test/results/clientnegative/alter_table_failure.q.out @@ -0,0 +1,10 @@ +PREHOOK: query: create table alter6 (a int) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table alter6 (a int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@alter6 +PREHOOK: query: create database alter_db +PREHOOK: type: CREATEDATABASE +POSTHOOK: query: create database alter_db +POSTHOOK: type: CREATEDATABASE +FAILED: ParseException line 2:45 missing EOF at '.' near 'alter_db' in ddl statement diff --git ql/src/test/results/clientnegative/archive_partspec3.q.out ql/src/test/results/clientnegative/archive_partspec3.q.out index c85e9a2..0febfc9 100644 --- ql/src/test/results/clientnegative/archive_partspec3.q.out +++ ql/src/test/results/clientnegative/archive_partspec3.q.out @@ -23,4 +23,4 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 POSTHOOK: Output: default@srcpart_archived@ds=2008-04-08/hr=12 POSTHOOK: Lineage: srcpart_archived PARTITION(ds=2008-04-08,hr=12).key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: srcpart_archived PARTITION(ds=2008-04-08,hr=12).value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ] -FAILED: ParseException line 3:48 cannot recognize input near ')' '' '' in archive statement +FAILED: ParseException line 3:29 cannot recognize input near 'srcpart_archived' 'ARCHIVE' 'PARTITION' in table name diff --git ql/src/test/results/clientnegative/authorization_fail_8.q.out ql/src/test/results/clientnegative/authorization_fail_8.q.out new file mode 100644 index 0000000..213fe75 --- /dev/null +++ ql/src/test/results/clientnegative/authorization_fail_8.q.out @@ -0,0 +1,12 @@ +PREHOOK: query: create table src_authorization_8 (key1 int, value1 string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table src_authorization_8 (key1 int, value1 string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@src_authorization_8 +PREHOOK: query: desc src_authorization_8 +PREHOOK: type: DESCTABLE +POSTHOOK: query: desc src_authorization_8 +POSTHOOK: type: DESCTABLE +key1 int None +value1 string None +Authorization failed:No privilege 'Drop' found for outputs { database:default, table:src_authorization_8}. Use show grant to get more details. diff --git ql/src/test/results/clientnegative/column_rename3.q.out ql/src/test/results/clientnegative/column_rename3.q.out index 6d521f5..c7e9bc3 100644 --- ql/src/test/results/clientnegative/column_rename3.q.out +++ ql/src/test/results/clientnegative/column_rename3.q.out @@ -1 +1 @@ -FAILED: ParseException line 1:30 cannot recognize input near '' '' '' in column type +FAILED: ParseException line 1:16 cannot recognize input near 'src' 'change' 'key' in column type diff --git ql/src/test/results/clientnegative/set_table_property.q.out ql/src/test/results/clientnegative/set_table_property.q.out index 13c86db..1543e5f 100644 --- ql/src/test/results/clientnegative/set_table_property.q.out +++ ql/src/test/results/clientnegative/set_table_property.q.out @@ -3,4 +3,4 @@ PREHOOK: type: CREATETABLE POSTHOOK: query: create table testTable(col1 int, col2 int) POSTHOOK: type: CREATETABLE POSTHOOK: Output: default@testTable -FAILED: ParseException line 4:45 missing StringLiteral at ')' near '' +FAILED: ParseException line 4:26 cannot recognize input near 'testTable' 'set' 'tblproperties' in specifying key/value property diff --git ql/src/test/results/clientpositive/alter6.q.out ql/src/test/results/clientpositive/alter6.q.out new file mode 100644 index 0000000..2961e01 --- /dev/null +++ ql/src/test/results/clientpositive/alter6.q.out @@ -0,0 +1,454 @@ +PREHOOK: query: create table default_alter6 (a int) partitioned by (p string) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table default_alter6 (a int) partitioned by (p string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@default_alter6 +PREHOOK: query: alter table default.default_alter6 rename to alter6 +PREHOOK: type: ALTERTABLE_RENAME +PREHOOK: Input: default@default_alter6 +PREHOOK: Output: default@default_alter6 +POSTHOOK: query: alter table default.default_alter6 rename to alter6 +POSTHOOK: type: ALTERTABLE_RENAME +POSTHOOK: Input: default@default_alter6 +POSTHOOK: Output: default@alter6 +POSTHOOK: Output: default@default_alter6 +PREHOOK: query: describe default.alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe default.alter6 +POSTHOOK: type: DESCTABLE +a int None +p string None + +# Partition Information +# col_name data_type comment + +p string None +PREHOOK: query: alter table default.alter6 add columns (b int) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 add columns (b int) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe default.alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe default.alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +p string None + +# Partition Information +# col_name data_type comment + +p string None +PREHOOK: query: alter table default.alter6 replace columns (a int, b int, c string) +PREHOOK: type: ALTERTABLE_REPLACECOLS +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 replace columns (a int, b int, c string) +POSTHOOK: type: ALTERTABLE_REPLACECOLS +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe default.alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe default.alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +c string None +p string None + +# Partition Information +# col_name data_type comment + +p string None +PREHOOK: query: alter table default.alter6 change column c cc int +PREHOOK: type: ALTERTABLE_RENAMECOL +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 change column c cc int +POSTHOOK: type: ALTERTABLE_RENAMECOL +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe default.alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe default.alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p string None + +# Partition Information +# col_name data_type comment + +p string None +PREHOOK: query: show partitions alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions alter6 +POSTHOOK: type: SHOWPARTITIONS +PREHOOK: query: alter table default.alter6 add partition (p='p1') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Input: default@alter6 +POSTHOOK: query: alter table default.alter6 add partition (p='p1') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6@p=p1 +PREHOOK: query: alter table default.alter6 add partition (p='p2') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Input: default@alter6 +POSTHOOK: query: alter table default.alter6 add partition (p='p2') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6@p=p2 +PREHOOK: query: show partitions alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions alter6 +POSTHOOK: type: SHOWPARTITIONS +p=p1 +p=p2 +PREHOOK: query: alter table default.alter6 touch partition(p='p1') +PREHOOK: type: ALTERTABLE_TOUCH +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6@p=p1 +POSTHOOK: query: alter table default.alter6 touch partition(p='p1') +POSTHOOK: type: ALTERTABLE_TOUCH +POSTHOOK: Input: default@alter6 +POSTHOOK: Input: default@alter6@p=p1 +POSTHOOK: Output: default@alter6@p=p1 +PREHOOK: query: alter table default.alter6 archive partition (p='p1') +PREHOOK: type: ALTERTABLE_ARCHIVE +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6@p=p1 +POSTHOOK: query: alter table default.alter6 archive partition (p='p1') +POSTHOOK: type: ALTERTABLE_ARCHIVE +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6@p=p1 +PREHOOK: query: describe extended alter6 partition (p='p1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe extended alter6 partition (p='p1') +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +#### A masked pattern was here #### +PREHOOK: query: alter table default.alter6 unarchive partition (p='p1') +PREHOOK: type: ALTERTABLE_UNARCHIVE +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6@p=p1 +POSTHOOK: query: alter table default.alter6 unarchive partition (p='p1') +POSTHOOK: type: ALTERTABLE_UNARCHIVE +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6@p=p1 +PREHOOK: query: describe extended alter6 partition (p='p1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe extended alter6 partition (p='p1') +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +#### A masked pattern was here #### +PREHOOK: query: show partitions alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions alter6 +POSTHOOK: type: SHOWPARTITIONS +p=p1 +p=p2 +PREHOOK: query: alter table default.alter6 drop partition (p='p1') +PREHOOK: type: ALTERTABLE_DROPPARTS +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6@p=p1 +POSTHOOK: query: alter table default.alter6 drop partition (p='p1') +POSTHOOK: type: ALTERTABLE_DROPPARTS +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6@p=p1 +PREHOOK: query: alter table default.alter6 set tblproperties('s1'='1') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 set tblproperties('s1'='1') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe extended alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe extended alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +#### A masked pattern was here #### +PREHOOK: query: alter table default.alter6 unset tblproperties('s1'='1') +PREHOOK: type: ALTERTABLE_PROPERTIES +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 unset tblproperties('s1'='1') +POSTHOOK: type: ALTERTABLE_PROPERTIES +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe extended alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe extended alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p string None + +# Partition Information +# col_name data_type comment + +p string None + +#### A masked pattern was here #### +PREHOOK: query: alter table default.alter6 partition (p='p2') set fileformat orc +PREHOOK: type: ALTERPARTITION_FILEFORMAT +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6@p=p2 +POSTHOOK: query: alter table default.alter6 partition (p='p2') set fileformat orc +POSTHOOK: type: ALTERPARTITION_FILEFORMAT +POSTHOOK: Input: default@alter6 +POSTHOOK: Input: default@alter6@p=p2 +POSTHOOK: Output: default@alter6@p=p2 +PREHOOK: query: show create table alter6 +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@alter6 +POSTHOOK: query: show create table alter6 +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@alter6 +CREATE TABLE `alter6`( + `a` int, + `b` int, + `cc` int) +PARTITIONED BY ( + `p` string) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.mapred.TextInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' +LOCATION +#### A masked pattern was here #### +TBLPROPERTIES ( +#### A masked pattern was here #### +PREHOOK: query: alter table default.alter6 partition column (p int) +PREHOOK: type: null +PREHOOK: Input: default@alter6 +POSTHOOK: query: alter table default.alter6 partition column (p int) +POSTHOOK: type: null +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe default.alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe default.alter6 +POSTHOOK: type: DESCTABLE +a int None +b int None +cc int None +p int None + +# Partition Information +# col_name data_type comment + +p int None +PREHOOK: query: create table exchange_alter6 like alter6 +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table exchange_alter6 like alter6 +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@exchange_alter6 +PREHOOK: query: show partitions exchange_alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions exchange_alter6 +POSTHOOK: type: SHOWPARTITIONS +PREHOOK: query: show partitions alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions alter6 +POSTHOOK: type: SHOWPARTITIONS +p=p2 +PREHOOK: query: alter table default.alter6 exchange partition (p='p2') with table exchange_alter6 +PREHOOK: type: null +POSTHOOK: query: alter table default.alter6 exchange partition (p='p2') with table exchange_alter6 +POSTHOOK: type: null +PREHOOK: query: show partitions exchange_alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions exchange_alter6 +POSTHOOK: type: SHOWPARTITIONS +p=p2 +PREHOOK: query: show partitions alter6 +PREHOOK: type: SHOWPARTITIONS +POSTHOOK: query: show partitions alter6 +POSTHOOK: type: SHOWPARTITIONS +PREHOOK: query: drop table exchange_alter6 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@exchange_alter6 +PREHOOK: Output: default@exchange_alter6 +POSTHOOK: query: drop table exchange_alter6 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@exchange_alter6 +POSTHOOK: Output: default@exchange_alter6 +PREHOOK: query: alter table default.alter6 skewed by (a) on ('skew_a') stored as directories +PREHOOK: type: ALTERTABLE_SKEWED +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 skewed by (a) on ('skew_a') stored as directories +POSTHOOK: type: ALTERTABLE_SKEWED +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe formatted alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe formatted alter6 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a int None +b int None +cc int None + +# Partition Information +# col_name data_type comment + +p int None + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Stored As SubDirectories: Yes +Skewed Columns: [a] +Skewed Values: [[skew_a]] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: alter table default.alter6 not stored as directories +PREHOOK: type: ALTERTABLE_SKEWED +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 not stored as directories +POSTHOOK: type: ALTERTABLE_SKEWED +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe formatted alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe formatted alter6 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a int None +b int None +cc int None + +# Partition Information +# col_name data_type comment + +p int None + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Skewed Columns: [a] +Skewed Values: [[skew_a]] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: alter table default.alter6 not skewed +PREHOOK: type: ALTERTABLE_SKEWED +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: alter table default.alter6 not skewed +POSTHOOK: type: ALTERTABLE_SKEWED +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 +PREHOOK: query: describe formatted alter6 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe formatted alter6 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a int None +b int None +cc int None + +# Partition Information +# col_name data_type comment + +p int None + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe +InputFormat: org.apache.hadoop.mapred.TextInputFormat +OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + serialization.format 1 +PREHOOK: query: drop table alter6 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@alter6 +PREHOOK: Output: default@alter6 +POSTHOOK: query: drop table alter6 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@alter6 +POSTHOOK: Output: default@alter6 diff --git ql/src/test/results/clientpositive/drop_multi_partitions.q.out ql/src/test/results/clientpositive/drop_multi_partitions.q.out index 2728bf8..bc2fdc5 100644 --- ql/src/test/results/clientpositive/drop_multi_partitions.q.out +++ ql/src/test/results/clientpositive/drop_multi_partitions.q.out @@ -36,7 +36,7 @@ PREHOOK: type: ALTERTABLE_DROPPARTS POSTHOOK: query: explain extended alter table mp drop partition (b='1') POSTHOOK: type: ALTERTABLE_DROPPARTS ABSTRACT SYNTAX TREE: - (TOK_ALTERTABLE_DROPPARTS mp (TOK_PARTSPEC (TOK_PARTVAL b = '1'))) + (TOK_ALTERTABLE_DROPPARTS (TOK_TABNAME mp) (TOK_PARTSPEC (TOK_PARTVAL b = '1'))) STAGE DEPENDENCIES: Stage-0 is a root stage diff --git ql/src/test/results/clientpositive/input3.q.out ql/src/test/results/clientpositive/input3.q.out index fffaf2e..4ca826b 100644 --- ql/src/test/results/clientpositive/input3.q.out +++ ql/src/test/results/clientpositive/input3.q.out @@ -43,7 +43,7 @@ POSTHOOK: query: EXPLAIN ALTER TABLE TEST3b ADD COLUMNS (X DOUBLE) POSTHOOK: type: ALTERTABLE_ADDCOLS ABSTRACT SYNTAX TREE: - (TOK_ALTERTABLE_ADDCOLS TEST3b (TOK_TABCOLLIST (TOK_TABCOL X TOK_DOUBLE))) + (TOK_ALTERTABLE_ADDCOLS (TOK_TABNAME TEST3b) (TOK_TABCOLLIST (TOK_TABCOL X TOK_DOUBLE))) STAGE DEPENDENCIES: Stage-0 is a root stage @@ -80,7 +80,7 @@ POSTHOOK: query: EXPLAIN ALTER TABLE TEST3b RENAME TO TEST3c POSTHOOK: type: ALTERTABLE_RENAME ABSTRACT SYNTAX TREE: - (TOK_ALTERTABLE_RENAME TEST3b TEST3c) + (TOK_ALTERTABLE_RENAME (TOK_TABNAME TEST3b) TEST3c) STAGE DEPENDENCIES: Stage-0 is a root stage @@ -133,7 +133,7 @@ POSTHOOK: query: EXPLAIN ALTER TABLE TEST3c REPLACE COLUMNS (R1 INT, R2 DOUBLE) POSTHOOK: type: ALTERTABLE_REPLACECOLS ABSTRACT SYNTAX TREE: - (TOK_ALTERTABLE_REPLACECOLS TEST3c (TOK_TABCOLLIST (TOK_TABCOL R1 TOK_INT) (TOK_TABCOL R2 TOK_DOUBLE))) + (TOK_ALTERTABLE_REPLACECOLS (TOK_TABNAME TEST3c) (TOK_TABCOLLIST (TOK_TABCOL R1 TOK_INT) (TOK_TABCOL R2 TOK_DOUBLE))) STAGE DEPENDENCIES: Stage-0 is a root stage diff --git ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out index 685629e..3043505 100644 --- ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out +++ ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out @@ -237,8 +237,11 @@ POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).two SIMPLE [(sourcetable 97 val_97 PREHOOK: query: drop table db2.destinTable PREHOOK: type: DROPTABLE +PREHOOK: Input: db2@destintable +PREHOOK: Output: db2@destintable POSTHOOK: query: drop table db2.destinTable POSTHOOK: type: DROPTABLE +POSTHOOK: Input: db2@destintable POSTHOOK: Output: db2@destintable POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).one SIMPLE [(sourcetable)sourcetable.FieldSchema(name:one, type:string, comment:null), ] POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).two SIMPLE [(sourcetable)sourcetable.FieldSchema(name:two, type:string, comment:null), ] @@ -246,8 +249,11 @@ POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).one SIMPLE [(sourcetable POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).two SIMPLE [(sourcetable)sourcetable.FieldSchema(name:two, type:string, comment:null), ] PREHOOK: query: drop table db1.sourceTable PREHOOK: type: DROPTABLE +PREHOOK: Input: db1@sourcetable +PREHOOK: Output: db1@sourcetable POSTHOOK: query: drop table db1.sourceTable POSTHOOK: type: DROPTABLE +POSTHOOK: Input: db1@sourcetable POSTHOOK: Output: db1@sourcetable POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).one SIMPLE [(sourcetable)sourcetable.FieldSchema(name:one, type:string, comment:null), ] POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11).two SIMPLE [(sourcetable)sourcetable.FieldSchema(name:two, type:string, comment:null), ] diff --git ql/src/test/results/clientpositive/show_create_table_db_table.q.out ql/src/test/results/clientpositive/show_create_table_db_table.q.out index 92bdff9..b196f45 100644 --- ql/src/test/results/clientpositive/show_create_table_db_table.q.out +++ ql/src/test/results/clientpositive/show_create_table_db_table.q.out @@ -42,8 +42,11 @@ TBLPROPERTIES ( #### A masked pattern was here #### PREHOOK: query: DROP TABLE tmp_feng.tmp_showcrt PREHOOK: type: DROPTABLE +PREHOOK: Input: tmp_feng@tmp_showcrt +PREHOOK: Output: tmp_feng@tmp_showcrt POSTHOOK: query: DROP TABLE tmp_feng.tmp_showcrt POSTHOOK: type: DROPTABLE +POSTHOOK: Input: tmp_feng@tmp_showcrt POSTHOOK: Output: tmp_feng@tmp_showcrt PREHOOK: query: DROP DATABASE tmp_feng PREHOOK: type: DROPDATABASE diff --git ql/src/test/results/clientpositive/truncate_table.q.out ql/src/test/results/clientpositive/truncate_table.q.out index d64ac18..8329cf5 100644 --- ql/src/test/results/clientpositive/truncate_table.q.out +++ ql/src/test/results/clientpositive/truncate_table.q.out @@ -73,7 +73,7 @@ POSTHOOK: query: -- truncate non-partitioned table explain TRUNCATE TABLE src_truncate POSTHOOK: type: TRUNCATETABLE ABSTRACT SYNTAX TREE: - (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION src_truncate)) + (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION (TOK_TABNAME src_truncate))) STAGE DEPENDENCIES: Stage-0 is a root stage @@ -106,7 +106,7 @@ POSTHOOK: query: -- truncate a partition explain TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11') POSTHOOK: type: TRUNCATETABLE ABSTRACT SYNTAX TREE: - (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION srcpart_truncate (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr '11')))) + (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION (TOK_TABNAME srcpart_truncate) (TOK_PARTSPEC (TOK_PARTVAL ds '2008-04-08') (TOK_PARTVAL hr '11')))) STAGE DEPENDENCIES: Stage-0 is a root stage @@ -144,7 +144,7 @@ POSTHOOK: query: -- truncate partitions with partial spec explain TRUNCATE TABLE srcpart_truncate partition (ds, hr='12') POSTHOOK: type: TRUNCATETABLE ABSTRACT SYNTAX TREE: - (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION srcpart_truncate (TOK_PARTSPEC (TOK_PARTVAL ds) (TOK_PARTVAL hr '12')))) + (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION (TOK_TABNAME srcpart_truncate) (TOK_PARTSPEC (TOK_PARTVAL ds) (TOK_PARTVAL hr '12')))) STAGE DEPENDENCIES: Stage-0 is a root stage @@ -186,7 +186,7 @@ POSTHOOK: query: -- truncate partitioned table explain TRUNCATE TABLE srcpart_truncate POSTHOOK: type: TRUNCATETABLE ABSTRACT SYNTAX TREE: - (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION srcpart_truncate)) + (TOK_TRUNCATETABLE (TOK_TABLE_PARTITION (TOK_TABNAME srcpart_truncate))) STAGE DEPENDENCIES: Stage-0 is a root stage