You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jv...@apache.org on 2011/07/11 09:18:54 UTC
svn commit: r1145048 - in /hive/trunk:
metastore/src/java/org/apache/hadoop/hive/metastore/
ql/src/java/org/apache/hadoop/hive/ql/exec/
ql/src/java/org/apache/hadoop/hive/ql/parse/
ql/src/java/org/apache/hadoop/hive/ql/plan/ ql/src/test/queries/clientn...
Author: jvs
Date: Mon Jul 11 07:18:53 2011
New Revision: 1145048
URL: http://svn.apache.org/viewvc?rev=1145048&view=rev
Log:
HIVE-2210. ALTER VIEW RENAME (Charles Chen via jvs)
Added:
hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure8.q
hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure9.q
hive/trunk/ql/src/test/queries/clientpositive/alter_view_rename.q
hive/trunk/ql/src/test/results/clientnegative/alter_view_failure8.q.out
hive/trunk/ql/src/test/results/clientnegative/alter_view_failure9.q.out
hive/trunk/ql/src/test/results/clientpositive/alter_view_rename.q.out
Modified:
hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java
Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java Mon Jul 11 07:18:53 2011
@@ -103,11 +103,12 @@ public class HiveAlterHandler implements
"partition keys can not be changed.");
}
- // if this alter is a rename, and user didn't change the
- // default location (or new location is empty), and table is
- // not an external table, that means user is asking metastore
- // to move data to new location corresponding to the new name
+ // if this alter is a rename, the table is not a virtual view, the user
+ // didn't change the default location (or new location is empty), and
+ // table is not an external table, that means useris asking metastore to
+ // move data to the new location corresponding to the new name
if (rename
+ && !oldt.getTableType().equals(TableType.VIRTUAL_VIEW.toString())
&& (oldt.getSd().getLocation().compareTo(newt.getSd().getLocation()) == 0
|| StringUtils.isEmpty(newt.getSd().getLocation()))
&& !MetaStoreUtils.isExternalTable(oldt)) {
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Mon Jul 11 07:18:53 2011
@@ -1458,6 +1458,7 @@ public class DDLTask extends Task<DDLWor
case ADDPARTITION:
case DROPPARTITION:
case ADDPROPS:
+ case RENAME:
// allow this form
break;
default:
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java Mon Jul 11 07:18:53 2011
@@ -260,8 +260,13 @@ public class DDLSemanticAnalyzer extends
// view from table; unwrap it now
analyzeAlterTableDropParts((ASTNode) ast.getChild(0), true);
break;
+ case HiveParser.TOK_ALTERVIEW_RENAME:
+ // for ALTER VIEW RENAME, we wrapped the RENAME to discriminate
+ // view from table; unwrap it now
+ analyzeAlterTableRename(((ASTNode) ast.getChild(0)), true);
+ break;
case HiveParser.TOK_ALTERTABLE_RENAME:
- analyzeAlterTableRename(ast);
+ analyzeAlterTableRename(ast, false);
break;
case HiveParser.TOK_ALTERTABLE_TOUCH:
analyzeAlterTableTouch(ast);
@@ -1619,10 +1624,10 @@ public class DDLSemanticAnalyzer extends
}
- private void analyzeAlterTableRename(ASTNode ast) throws SemanticException {
+ private void analyzeAlterTableRename(ASTNode ast, boolean expectView) throws SemanticException {
String tblName = getUnescapedName((ASTNode)ast.getChild(0));
AlterTableDesc alterTblDesc = new AlterTableDesc(tblName,
- getUnescapedName((ASTNode)ast.getChild(1)));
+ getUnescapedName((ASTNode)ast.getChild(1)), expectView);
try {
Table tab = db.getTable(db.getCurrentDatabase(), tblName, false);
if (tab != null) {
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g Mon Jul 11 07:18:53 2011
@@ -186,6 +186,7 @@ TOK_DROPVIEW;
TOK_ALTERVIEW_PROPERTIES;
TOK_ALTERVIEW_ADDPARTS;
TOK_ALTERVIEW_DROPPARTS;
+TOK_ALTERVIEW_RENAME;
TOK_VIEWPARTCOLS;
TOK_EXPLAIN;
TOK_TABLESERIALIZER;
@@ -561,6 +562,8 @@ alterViewStatementSuffix
@init { msgs.push("alter view statement"); }
@after { msgs.pop(); }
: alterViewSuffixProperties
+ | alterStatementSuffixRename
+ -> ^(TOK_ALTERVIEW_RENAME alterStatementSuffixRename)
| alterStatementSuffixAddPartitions
-> ^(TOK_ALTERVIEW_ADDPARTS alterStatementSuffixAddPartitions)
| alterStatementSuffixDropPartitions
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java Mon Jul 11 07:18:53 2011
@@ -31,7 +31,7 @@ import org.apache.hadoop.hive.ql.session
public final class SemanticAnalyzerFactory {
static HashMap<Integer, HiveOperation> commandType = new HashMap<Integer, HiveOperation>();
- static HashMap<Integer, HiveOperation[]> tablePartitionCommandType = new HashMap<Integer, HiveOperation[]>();
+ static HashMap<Integer, HiveOperation[]> tablePartitionCommandType = new HashMap<Integer, HiveOperation[]>();
static {
commandType.put(HiveParser.TOK_EXPLAIN, HiveOperation.EXPLAIN);
@@ -147,6 +147,7 @@ public final class SemanticAnalyzerFacto
case HiveParser.TOK_ALTERVIEW_PROPERTIES:
case HiveParser.TOK_ALTERVIEW_ADDPARTS:
case HiveParser.TOK_ALTERVIEW_DROPPARTS:
+ case HiveParser.TOK_ALTERVIEW_RENAME:
case HiveParser.TOK_SHOWDATABASES:
case HiveParser.TOK_SHOWTABLES:
case HiveParser.TOK_SHOW_TABLESTATUS:
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java?rev=1145048&r1=1145047&r2=1145048&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AlterTableDesc.java Mon Jul 11 07:18:53 2011
@@ -108,10 +108,11 @@ public class AlterTableDesc extends DDLD
* @param newName
* new name of the table
*/
- public AlterTableDesc(String oldName, String newName) {
+ public AlterTableDesc(String oldName, String newName, boolean expectView) {
op = AlterTableTypes.RENAME;
this.oldName = oldName;
this.newName = newName;
+ this.expectView = expectView;
}
/**
@@ -152,7 +153,7 @@ public class AlterTableDesc extends DDLD
* new table input format
* @param outputFormat
* new table output format
- * @param partSpec
+ * @param partSpec
*/
public AlterTableDesc(String name, String inputFormat, String outputFormat,
String serdeName, String storageHandler, HashMap<String, String> partSpec) {
Added: hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure8.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure8.q?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure8.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure8.q Mon Jul 11 07:18:53 2011
@@ -0,0 +1,3 @@
+-- should fail: can't use ALTER VIEW on a table
+CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
+ALTER VIEW invites RENAME TO invites2;
Added: hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure9.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure9.q?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure9.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/alter_view_failure9.q Mon Jul 11 07:18:53 2011
@@ -0,0 +1,7 @@
+DROP VIEW xxx4;
+CREATE VIEW xxx4
+AS
+SELECT * FROM src;
+
+-- should fail: need to use ALTER VIEW, not ALTER TABLE
+ALTER TABLE xxx4 RENAME TO xxx4a;
Added: hive/trunk/ql/src/test/queries/clientpositive/alter_view_rename.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/alter_view_rename.q?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/alter_view_rename.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/alter_view_rename.q Mon Jul 11 07:18:53 2011
@@ -0,0 +1,10 @@
+CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
+CREATE VIEW view1 as SELECT * FROM invites;
+DESCRIBE EXTENDED view1;
+
+ALTER VIEW view1 RENAME TO view2;
+DESCRIBE EXTENDED view2;
+SELECT * FROM view2;
+
+DROP TABLE invites;
+DROP VIEW view2;
\ No newline at end of file
Added: hive/trunk/ql/src/test/results/clientnegative/alter_view_failure8.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/alter_view_failure8.q.out?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/alter_view_failure8.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/alter_view_failure8.q.out Mon Jul 11 07:18:53 2011
@@ -0,0 +1,13 @@
+PREHOOK: query: -- should fail: can't use ALTER VIEW on a table
+CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- should fail: can't use ALTER VIEW on a table
+CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@invites
+PREHOOK: query: ALTER VIEW invites RENAME TO invites2
+PREHOOK: type: null
+PREHOOK: Input: default@invites
+PREHOOK: Output: default@invites
+FAILED: Error in metadata: Cannot alter a base table with ALTER VIEW
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Added: hive/trunk/ql/src/test/results/clientnegative/alter_view_failure9.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/alter_view_failure9.q.out?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/alter_view_failure9.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/alter_view_failure9.q.out Mon Jul 11 07:18:53 2011
@@ -0,0 +1,22 @@
+PREHOOK: query: DROP VIEW xxx4
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: DROP VIEW xxx4
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: CREATE VIEW xxx4
+AS
+SELECT * FROM src
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-07_12-15-48_683_5899334144357618678/-mr-10000
+POSTHOOK: query: CREATE VIEW xxx4
+AS
+SELECT * FROM src
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@xxx4
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-07_12-15-48_683_5899334144357618678/-mr-10000
+PREHOOK: query: -- should fail: need to use ALTER VIEW, not ALTER TABLE
+ALTER TABLE xxx4 RENAME TO xxx4a
+PREHOOK: type: ALTERTABLE_RENAME
+PREHOOK: Input: default@xxx4
+PREHOOK: Output: default@xxx4
+FAILED: Error in metadata: Cannot alter a view with ALTER TABLE
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Added: hive/trunk/ql/src/test/results/clientpositive/alter_view_rename.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/alter_view_rename.q.out?rev=1145048&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/alter_view_rename.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/alter_view_rename.q.out Mon Jul 11 07:18:53 2011
@@ -0,0 +1,61 @@
+PREHOOK: query: CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@invites
+PREHOOK: query: CREATE VIEW view1 as SELECT * FROM invites
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/Qf/QfKIM3uNGnOkRTnqDyLPXU+++TI/-Tmp-/ccy/hive_2011-07-08_08-17-02_744_6543104997331484125/-mr-10000
+POSTHOOK: query: CREATE VIEW view1 as SELECT * FROM invites
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@view1
+POSTHOOK: Output: file:/var/folders/Qf/QfKIM3uNGnOkRTnqDyLPXU+++TI/-Tmp-/ccy/hive_2011-07-08_08-17-02_744_6543104997331484125/-mr-10000
+PREHOOK: query: DESCRIBE EXTENDED view1
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESCRIBE EXTENDED view1
+POSTHOOK: type: DESCTABLE
+foo int
+bar string
+ds string
+
+Detailed Table Information Table(tableName:view1, dbName:default, owner:ccy, createTime:1310138222, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:foo, type:int, comment:null), FieldSchema(name:bar, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:null, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:null, parameters:{}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{transient_lastDdlTime=1310138222}, viewOriginalText:SELECT * FROM invites, viewExpandedText:SELECT `invites`.`foo`, `invites`.`bar`, `invites`.`ds` FROM `invites`, tableType:VIRTUAL_VIEW)
+PREHOOK: query: ALTER VIEW view1 RENAME TO view2
+PREHOOK: type: null
+PREHOOK: Input: default@view1
+PREHOOK: Output: default@view1
+POSTHOOK: query: ALTER VIEW view1 RENAME TO view2
+POSTHOOK: type: null
+POSTHOOK: Input: default@view1
+POSTHOOK: Output: default@view1
+POSTHOOK: Output: default@view2
+PREHOOK: query: DESCRIBE EXTENDED view2
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESCRIBE EXTENDED view2
+POSTHOOK: type: DESCTABLE
+foo int
+bar string
+ds string
+
+Detailed Table Information Table(tableName:view2, dbName:default, owner:ccy, createTime:1310138222, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:foo, type:int, comment:null), FieldSchema(name:bar, type:string, comment:null), FieldSchema(name:ds, type:string, comment:null)], location:null, inputFormat:org.apache.hadoop.mapred.SequenceFileInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:null, parameters:{}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{last_modified_by=ccy, last_modified_time=1310138222, transient_lastDdlTime=1310138222}, viewOriginalText:SELECT * FROM invites, viewExpandedText:SELECT `invites`.`foo`, `invites`.`bar`, `invites`.`ds` FROM `invites`, tableType:VIRTUAL_VIEW)
+PREHOOK: query: SELECT * FROM view2
+PREHOOK: type: QUERY
+PREHOOK: Output: file:/var/folders/Qf/QfKIM3uNGnOkRTnqDyLPXU+++TI/-Tmp-/ccy/hive_2011-07-08_08-17-03_123_5668598932827588963/-mr-10000
+POSTHOOK: query: SELECT * FROM view2
+POSTHOOK: type: QUERY
+POSTHOOK: Output: file:/var/folders/Qf/QfKIM3uNGnOkRTnqDyLPXU+++TI/-Tmp-/ccy/hive_2011-07-08_08-17-03_123_5668598932827588963/-mr-10000
+PREHOOK: query: DROP TABLE invites
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@invites
+PREHOOK: Output: default@invites
+POSTHOOK: query: DROP TABLE invites
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@invites
+POSTHOOK: Output: default@invites
+PREHOOK: query: DROP VIEW view2
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@view2
+PREHOOK: Output: default@view2
+POSTHOOK: query: DROP VIEW view2
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@view2
+POSTHOOK: Output: default@view2