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/22 22:27:54 UTC
svn commit: r1149727 [1/2] - 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/c...
Author: jvs
Date: Fri Jul 22 20:27:51 2011
New Revision: 1149727
URL: http://svn.apache.org/viewvc?rev=1149727&view=rev
Log:
HIVE-1078. CREATE VIEW followup: CREATE OR REPLACE (Charles Chen via jvs)
Added:
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view1.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view2.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view3.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view4.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view5.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view6.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view7.q
hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view8.q
hive/trunk/ql/src/test/queries/clientnegative/recursive_view.q
hive/trunk/ql/src/test/queries/clientpositive/create_or_replace_view.q
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view1.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view2.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view3.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view4.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view5.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view6.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view7.q.out
hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view8.q.out
hive/trunk/ql/src/test/results/clientnegative/recursive_view.q.out
hive/trunk/ql/src/test/results/clientpositive/create_or_replace_view.q.out
Modified:
hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java
hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.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/Hive.g
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java
hive/trunk/ql/src/test/results/clientpositive/create_view.q.out
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=1149727&r1=1149726&r2=1149727&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 Fri Jul 22 20:27:51 2011
@@ -30,9 +30,9 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.metastore.api.InvalidObjectException;
import org.apache.hadoop.hive.metastore.api.InvalidOperationException;
import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
import org.apache.hadoop.hive.metastore.api.Partition;
import org.apache.hadoop.hive.metastore.api.Table;
-import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
/**
* Hive specific implementation of alter
@@ -97,11 +97,13 @@ public class HiveAlterHandler implements
+ newt.getTableName() + " doesn't exist");
}
- // check that partition keys have not changed
- if (oldt.getPartitionKeys().size() != newt.getPartitionKeys().size()
- || !oldt.getPartitionKeys().containsAll(newt.getPartitionKeys())) {
- throw new InvalidOperationException(
- "partition keys can not be changed.");
+ // check that partition keys have not changed, except for virtual views
+ if(!oldt.getTableType().equals(TableType.VIRTUAL_VIEW.toString())){
+ if (oldt.getPartitionKeys().size() != newt.getPartitionKeys().size()
+ || !oldt.getPartitionKeys().containsAll(newt.getPartitionKeys())) {
+ throw new InvalidOperationException(
+ "partition keys can not be changed.");
+ }
}
// if this alter is a rename, the table is not a virtual view, the user
Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java?rev=1149727&r1=1149726&r2=1149727&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java Fri Jul 22 20:27:51 2011
@@ -1664,6 +1664,8 @@ public class ObjectStore implements RawS
oldt.setPartitionKeys(newt.getPartitionKeys());
oldt.setTableType(newt.getTableType());
oldt.setLastAccessTime(newt.getLastAccessTime());
+ oldt.setViewOriginalText(newt.getViewOriginalText());
+ oldt.setViewExpandedText(newt.getViewExpandedText());
// commit the changes
success = commitTransaction();
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=1149727&r1=1149726&r2=1149727&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 Fri Jul 22 20:27:51 2011
@@ -3369,31 +3369,70 @@ public class DDLTask extends Task<DDLWor
* Throws this exception if an unexpected error occurs.
*/
private int createView(Hive db, CreateViewDesc crtView) throws HiveException {
- Table tbl = db.newTable(crtView.getViewName());
- tbl.setTableType(TableType.VIRTUAL_VIEW);
- tbl.setSerializationLib(null);
- tbl.clearSerDeInfo();
- tbl.setViewOriginalText(crtView.getViewOriginalText());
- tbl.setViewExpandedText(crtView.getViewExpandedText());
- tbl.setFields(crtView.getSchema());
- if (crtView.getComment() != null) {
- tbl.setProperty("comment", crtView.getComment());
- }
- if (crtView.getTblProps() != null) {
- tbl.getTTable().getParameters().putAll(crtView.getTblProps());
- }
+ Table oldview = db.getTable(crtView.getViewName(), false);
+ if (crtView.getOrReplace() && oldview != null) {
+ // replace existing view
+ if (!oldview.getTableType().equals(TableType.VIRTUAL_VIEW)) {
+ throw new HiveException("Existing table is not a view");
+ }
+
+ if (crtView.getPartCols() == null
+ || crtView.getPartCols().isEmpty()
+ || !crtView.getPartCols().equals(oldview.getPartCols())) {
+ // if we are changing partition columns, check that partitions don't exist
+ if (!oldview.getPartCols().isEmpty() &&
+ !db.getPartitions(oldview).isEmpty()) {
+ throw new HiveException(
+ "Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist");
+ }
+ }
+
+ // remove the existing partition columns from the field schema
+ oldview.setViewOriginalText(crtView.getViewOriginalText());
+ oldview.setViewExpandedText(crtView.getViewExpandedText());
+ oldview.setFields(crtView.getSchema());
+ if (crtView.getComment() != null) {
+ oldview.setProperty("comment", crtView.getComment());
+ }
+ if (crtView.getTblProps() != null) {
+ oldview.getTTable().getParameters().putAll(crtView.getTblProps());
+ }
+ oldview.setPartCols(crtView.getPartCols());
+ oldview.checkValidity();
+ try {
+ db.alterTable(crtView.getViewName(), oldview);
+ } catch (InvalidOperationException e) {
+ throw new HiveException(e);
+ }
+ work.getOutputs().add(new WriteEntity(oldview));
+ } else {
+ // create new view
+ Table tbl = db.newTable(crtView.getViewName());
+ tbl.setTableType(TableType.VIRTUAL_VIEW);
+ tbl.setSerializationLib(null);
+ tbl.clearSerDeInfo();
+ tbl.setViewOriginalText(crtView.getViewOriginalText());
+ tbl.setViewExpandedText(crtView.getViewExpandedText());
+ tbl.setFields(crtView.getSchema());
+ if (crtView.getComment() != null) {
+ tbl.setProperty("comment", crtView.getComment());
+ }
+ if (crtView.getTblProps() != null) {
+ tbl.getTTable().getParameters().putAll(crtView.getTblProps());
+ }
+
+ if (crtView.getPartCols() != null) {
+ tbl.setPartCols(crtView.getPartCols());
+ }
+
+ int rc = setGenericTableAttributes(tbl);
+ if (rc != 0) {
+ return rc;
+ }
- if (crtView.getPartCols() != null) {
- tbl.setPartCols(crtView.getPartCols());
+ db.createTable(tbl, crtView.getIfNotExists());
+ work.getOutputs().add(new WriteEntity(tbl));
}
-
- int rc = setGenericTableAttributes(tbl);
- if (rc != 0) {
- return rc;
- }
-
- db.createTable(tbl, crtView.getIfNotExists());
- work.getOutputs().add(new WriteEntity(tbl));
return 0;
}
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=1149727&r1=1149726&r2=1149727&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 Fri Jul 22 20:27:51 2011
@@ -200,6 +200,7 @@ TOK_LIMIT;
TOK_TABLEPROPERTY;
TOK_IFEXISTS;
TOK_IFNOTEXISTS;
+TOK_ORREPLACE;
TOK_HINTLIST;
TOK_HINT;
TOK_MAPJOIN;
@@ -370,6 +371,13 @@ ifNotExists
-> ^(TOK_IFNOTEXISTS)
;
+orReplace
+@init { msgs.push("or replace clause"); }
+@after { msgs.pop(); }
+ : KW_OR KW_REPLACE
+ -> ^(TOK_ORREPLACE)
+ ;
+
createDatabaseStatement
@init { msgs.push("create database statement"); }
@@ -997,12 +1005,13 @@ createViewStatement
msgs.push("create view statement");
}
@after { msgs.pop(); }
- : KW_CREATE KW_VIEW ifNotExists? name=tableName
+ : KW_CREATE (orReplace)? KW_VIEW (ifNotExists)? name=tableName
(LPAREN columnNameCommentList RPAREN)? tableComment? viewPartition?
tablePropertiesPrefixed?
KW_AS
selectStatement
- -> ^(TOK_CREATEVIEW $name ifNotExists?
+ -> ^(TOK_CREATEVIEW $name orReplace?
+ ifNotExists?
columnNameCommentList?
tableComment?
viewPartition?
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1149727&r1=1149726&r2=1149727&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Fri Jul 22 20:27:51 2011
@@ -195,6 +195,7 @@ public class SemanticAnalyzer extends Ba
Map<String, PrunedPartitionList> prunedPartitions;
private List<FieldSchema> resultSchema;
private CreateViewDesc createVwDesc;
+ private ArrayList<String> viewsExpanded;
private ASTNode viewSelect;
private final UnparseTranslator unparseTranslator;
private final GlobalLimitCtx globalLimitCtx = new GlobalLimitCtx();
@@ -873,6 +874,7 @@ public class SemanticAnalyzer extends Ba
// We have to materialize the table alias list since we might
// modify it in the middle for view rewrite.
List<String> tabAliases = new ArrayList<String>(qb.getTabAliases());
+ Map<String, String> aliasToViewName = new HashMap<String, String>();
for (String alias : tabAliases) {
String tab_name = qb.getTabNameForAlias(alias);
Table tab = null;
@@ -911,7 +913,15 @@ public class SemanticAnalyzer extends Ba
if (qb.getParseInfo().isAnalyzeCommand()) {
throw new SemanticException(ErrorMsg.ANALYZE_VIEW.getMsg());
}
+ String fullViewName = tab.getDbName()+"."+tab.getTableName();
+ // Prevent view cycles
+ if(viewsExpanded.contains(fullViewName)){
+ throw new SemanticException("Recursive view " + fullViewName +
+ " detected (cycle: " + StringUtils.join(viewsExpanded, " -> ") +
+ " -> " + fullViewName + ").");
+ }
replaceViewReferenceWithDefinition(qb, tab, tab_name, alias);
+ aliasToViewName.put(alias, fullViewName);
continue;
}
@@ -940,8 +950,15 @@ public class SemanticAnalyzer extends Ba
LOG.info("Get metadata for subqueries");
// Go over the subqueries and getMetaData for these
for (String alias : qb.getSubqAliases()) {
+ boolean wasView = aliasToViewName.containsKey(alias);
+ if (wasView) {
+ viewsExpanded.add(aliasToViewName.get(alias));
+ }
QBExpr qbexpr = qb.getSubqForAlias(alias);
getMetaData(qbexpr);
+ if (wasView) {
+ viewsExpanded.remove(viewsExpanded.size()-1);
+ }
}
LOG.info("Get metadata for destination tables");
@@ -7124,6 +7141,7 @@ public class SemanticAnalyzer extends Ba
this.qb = qb;
this.ast = ast;
ASTNode child = ast;
+ viewsExpanded = new ArrayList<String>();
LOG.info("Starting Semantic Analysis");
@@ -7145,6 +7163,8 @@ public class SemanticAnalyzer extends Ba
return;
}
viewSelect = child;
+ // prevent view from referencing itself
+ viewsExpanded.add(db.getCurrentDatabase()+"."+createVwDesc.getViewName());
}
// continue analyzing from the child ASTNode.
@@ -7778,6 +7798,7 @@ public class SemanticAnalyzer extends Ba
String tableName = getUnescapedName((ASTNode)ast.getChild(0));
List<FieldSchema> cols = null;
boolean ifNotExists = false;
+ boolean orReplace = false;
String comment = null;
ASTNode selectStmt = null;
Map<String, String> tblProps = null;
@@ -7792,6 +7813,9 @@ public class SemanticAnalyzer extends Ba
case HiveParser.TOK_IFNOTEXISTS:
ifNotExists = true;
break;
+ case HiveParser.TOK_ORREPLACE:
+ orReplace = true;
+ break;
case HiveParser.TOK_QUERY:
selectStmt = child;
break;
@@ -7812,8 +7836,12 @@ public class SemanticAnalyzer extends Ba
}
}
+ if (ifNotExists && orReplace){
+ throw new SemanticException("Can't combine IF NOT EXISTS and OR REPLACE.");
+ }
+
createVwDesc = new CreateViewDesc(
- tableName, cols, comment, tblProps, partColNames, ifNotExists);
+ tableName, cols, comment, tblProps, partColNames, ifNotExists, orReplace);
unparseTranslator.enable();
rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
createVwDesc), conf));
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java?rev=1149727&r1=1149726&r2=1149727&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java Fri Jul 22 20:27:51 2011
@@ -42,22 +42,24 @@ public class CreateViewDesc extends DDLD
private List<FieldSchema> partCols;
private String comment;
private boolean ifNotExists;
+ private boolean orReplace;
/**
* For serialization only.
*/
public CreateViewDesc() {
}
-
+
public CreateViewDesc(String viewName, List<FieldSchema> schema,
String comment, Map<String, String> tblProps,
- List<String> partColNames, boolean ifNotExists) {
+ List<String> partColNames, boolean ifNotExists, boolean orReplace) {
this.viewName = viewName;
this.schema = schema;
this.comment = comment;
this.tblProps = tblProps;
this.partColNames = partColNames;
this.ifNotExists = ifNotExists;
+ this.orReplace = orReplace;
}
@Explain(displayName = "name")
@@ -147,4 +149,13 @@ public class CreateViewDesc extends DDLD
public void setIfNotExists(boolean ifNotExists) {
this.ifNotExists = ifNotExists;
}
+
+ @Explain(displayName = "or replace")
+ public boolean getOrReplace() {
+ return orReplace;
+ }
+
+ public void setOrReplace(boolean orReplace) {
+ this.orReplace = orReplace;
+ }
}
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view1.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view1.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view1.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view1.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,6 @@
+-- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist (must specify partition columns)
+
+drop view v;
+create view v partitioned on (ds, hr) as select * from srcpart;
+alter view v add partition (ds='1',hr='2');
+create or replace view v as select * from srcpart;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view2.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view2.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view2.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view2.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,6 @@
+-- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist
+
+drop view v;
+create view v partitioned on (ds, hr) as select * from srcpart;
+alter view v add partition (ds='1',hr='2');
+create or replace view v partitioned on (hr) as select * from srcpart;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view3.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view3.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view3.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view3.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,3 @@
+-- Existing table is not a view
+
+create or replace view src as select ds, hr from srcpart;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view4.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view4.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view4.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view4.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,5 @@
+-- View must have at least one non-partition column.
+
+drop view v;
+create view v partitioned on (ds, hr) as select * from srcpart;
+create or replace view v partitioned on (ds, hr) as select ds, hr from srcpart;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view5.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view5.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view5.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view5.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,5 @@
+-- Can't combine IF NOT EXISTS and OR REPLACE.
+
+drop view v;
+create view v partitioned on (ds, hr) as select * from srcpart;
+create or replace view if not exists v as select * from srcpart;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view6.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view6.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view6.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view6.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,5 @@
+-- Can't update view to have an invalid definition
+
+drop view v;
+create view v partitioned on (ds, hr) as select * from srcpart;
+create or replace view v partitioned on (ds, hr) as blah;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view7.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view7.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view7.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view7.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,7 @@
+-- Can't update view to have a view cycle (1)
+
+drop view v;
+create view v1 partitioned on (ds, hr) as select * from srcpart;
+create view v2 partitioned on (ds, hr) as select * from v1;
+create view v3 partitioned on (ds, hr) as select * from v2;
+create or replace view v1 partitioned on (ds, hr) as select * from v3;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view8.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view8.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view8.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_or_replace_view8.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,5 @@
+-- Can't update view to have a view cycle (2)
+
+drop view v;
+create view v1 partitioned on (ds, hr) as select * from srcpart;
+create or replace view v1 partitioned on (ds, hr) as select * from v1;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientnegative/recursive_view.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/recursive_view.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/recursive_view.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/recursive_view.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,15 @@
+-- Can't have recursive views
+
+drop table t;
+drop view r0;
+drop view r1;
+drop view r2;
+drop view r3;
+create table t (id int);
+create view r0 as select * from t;
+create view r1 as select * from r0;
+create view r2 as select * from r1;
+create view r3 as select * from r2;
+drop view r0;
+alter view r3 rename to r0;
+select * from r0;
\ No newline at end of file
Added: hive/trunk/ql/src/test/queries/clientpositive/create_or_replace_view.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/create_or_replace_view.q?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/create_or_replace_view.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/create_or_replace_view.q Fri Jul 22 20:27:51 2011
@@ -0,0 +1,32 @@
+drop view v;
+create view v as select * from srcpart;
+describe formatted v;
+
+-- modifying definition of unpartitioned view
+create or replace view v partitioned on (ds, hr) as select * from srcpart;
+alter view v add partition (ds='2008-04-08',hr='11');
+alter view v add partition (ds='2008-04-08',hr='12');
+select * from v where value='val_409' and ds='2008-04-08' and hr='11';
+describe formatted v;
+show partitions v;
+
+-- altering partitioned view 1
+create or replace view v partitioned on (ds, hr) as select value, ds, hr from srcpart;
+select * from v where value='val_409' and ds='2008-04-08' and hr='11';
+describe formatted v;
+show partitions v;
+
+-- altering partitioned view 2
+create or replace view v partitioned on (ds, hr) as select key, value, ds, hr from srcpart;
+select * from v where value='val_409' and ds='2008-04-08' and hr='11';
+describe formatted v;
+show partitions v;
+drop view v;
+
+-- updating to fix view with invalid definition
+create table srcpart_temp like srcpart;
+create view v partitioned on (ds, hr) as select * from srcpart_temp;
+drop table srcpart_temp; -- v is now invalid
+create or replace view v partitioned on (ds, hr) as select * from srcpart;
+describe formatted v;
+drop view v;
\ No newline at end of file
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view1.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view1.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view1.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,27 @@
+PREHOOK: query: -- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist (must specify partition columns)
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist (must specify partition columns)
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-03_886_5641638152163785475/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-03_886_5641638152163785475/-mr-10000
+PREHOOK: query: alter view v add partition (ds='1',hr='2')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@v
+POSTHOOK: query: alter view v add partition (ds='1',hr='2')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v@ds=1/hr=2
+PREHOOK: query: create or replace view v as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-04_296_7084494219990814004/-mr-10000
+FAILED: Error in metadata: Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view2.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view2.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view2.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,27 @@
+PREHOOK: query: -- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-58_232_8111009537092703310/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-58_232_8111009537092703310/-mr-10000
+PREHOOK: query: alter view v add partition (ds='1',hr='2')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@v
+POSTHOOK: query: alter view v add partition (ds='1',hr='2')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v@ds=1/hr=2
+PREHOOK: query: create or replace view v partitioned on (hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-36-58_637_5038612564681921162/-mr-10000
+FAILED: Error in metadata: Cannot add or drop partition columns with CREATE OR REPLACE VIEW if partitions currently exist
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view3.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view3.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view3.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view3.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,7 @@
+PREHOOK: query: -- Existing table is not a view
+
+create or replace view src as select ds, hr from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-12_14-24-14_494_6346712363261665506/-mr-10000
+FAILED: Error in metadata: Existing table is not a view
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view4.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view4.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view4.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,16 @@
+PREHOOK: query: -- View must have at least one non-partition column.
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- View must have at least one non-partition column.
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-38-51_755_6211139129269008947/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-38-51_755_6211139129269008947/-mr-10000
+FAILED: Error in semantic analysis: At least one non-partitioning column must be present in view
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view5.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view5.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view5.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view5.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,16 @@
+PREHOOK: query: -- Can't combine IF NOT EXISTS and OR REPLACE.
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Can't combine IF NOT EXISTS and OR REPLACE.
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-58-18_909_5395846283955516132/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-58-18_909_5395846283955516132/-mr-10000
+FAILED: Error in semantic analysis: Can't combine IF NOT EXISTS and OR REPLACE.
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view6.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view6.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view6.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view6.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,17 @@
+PREHOOK: query: -- Can't update view to have an invalid definition
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Can't update view to have an invalid definition
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-49-23_584_6857578723636604615/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-49-23_584_6857578723636604615/-mr-10000
+FAILED: Parse Error: line 2:52 cannot recognize input near 'blah' '<EOF>' '<EOF>' in select clause
+
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view7.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view7.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view7.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view7.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,30 @@
+PREHOOK: query: -- Can't update view to have a view cycle (1)
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Can't update view to have a view cycle (1)
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v1 partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_787_4485352366684181624/-mr-10000
+POSTHOOK: query: create view v1 partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v1
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_787_4485352366684181624/-mr-10000
+PREHOOK: query: create view v2 partitioned on (ds, hr) as select * from v1
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_909_4952186699150279004/-mr-10000
+POSTHOOK: query: create view v2 partitioned on (ds, hr) as select * from v1
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v2
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_909_4952186699150279004/-mr-10000
+PREHOOK: query: create view v3 partitioned on (ds, hr) as select * from v2
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_975_4372942609513647798/-mr-10000
+POSTHOOK: query: create view v3 partitioned on (ds, hr) as select * from v2
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v3
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-46-47_975_4372942609513647798/-mr-10000
+FAILED: Error in semantic analysis: Recursive view default.v1 detected (cycle: default.v1 -> default.v3 -> default.v2 -> default.v1).
Added: hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view8.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view8.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view8.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_or_replace_view8.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,16 @@
+PREHOOK: query: -- Can't update view to have a view cycle (2)
+
+drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: -- Can't update view to have a view cycle (2)
+
+drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v1 partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-50-57_412_8022807701594868191/-mr-10000
+POSTHOOK: query: create view v1 partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v1
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-50-57_412_8022807701594868191/-mr-10000
+FAILED: Error in semantic analysis: Recursive view default.v1 detected (cycle: default.v1 -> default.v1).
Added: hive/trunk/ql/src/test/results/clientnegative/recursive_view.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/recursive_view.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/recursive_view.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/recursive_view.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,75 @@
+PREHOOK: query: -- Can't have recursive views
+
+drop table t
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: -- Can't have recursive views
+
+drop table t
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: drop view r0
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: drop view r0
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: drop view r1
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: drop view r1
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: drop view r2
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: drop view r2
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: drop view r3
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: drop view r3
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create table t (id int)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: create table t (id int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@t
+PREHOOK: query: create view r0 as select * from t
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_540_6566370266979262341/-mr-10000
+POSTHOOK: query: create view r0 as select * from t
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@r0
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_540_6566370266979262341/-mr-10000
+PREHOOK: query: create view r1 as select * from r0
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_655_2871063901925263573/-mr-10000
+POSTHOOK: query: create view r1 as select * from r0
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@r1
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_655_2871063901925263573/-mr-10000
+PREHOOK: query: create view r2 as select * from r1
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_725_1778414341481263154/-mr-10000
+POSTHOOK: query: create view r2 as select * from r1
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@r2
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_725_1778414341481263154/-mr-10000
+PREHOOK: query: create view r3 as select * from r2
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_781_5124084914591950233/-mr-10000
+POSTHOOK: query: create view r3 as select * from r2
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@r3
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-20_10-54-15_781_5124084914591950233/-mr-10000
+PREHOOK: query: drop view r0
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@r0
+PREHOOK: Output: default@r0
+POSTHOOK: query: drop view r0
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@r0
+POSTHOOK: Output: default@r0
+PREHOOK: query: alter view r3 rename to r0
+PREHOOK: type: null
+PREHOOK: Input: default@r3
+PREHOOK: Output: default@r3
+POSTHOOK: query: alter view r3 rename to r0
+POSTHOOK: type: null
+POSTHOOK: Input: default@r3
+POSTHOOK: Output: default@r0
+POSTHOOK: Output: default@r3
+FAILED: Error in semantic analysis: Recursive view default.r0 detected (cycle: default.r0 -> default.r2 -> default.r1 -> default.r0).
Added: hive/trunk/ql/src/test/results/clientpositive/create_or_replace_view.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/create_or_replace_view.q.out?rev=1149727&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/create_or_replace_view.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/create_or_replace_view.q.out Fri Jul 22 20:27:51 2011
@@ -0,0 +1,339 @@
+PREHOOK: query: drop view v
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: drop view v
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: create view v as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-54_878_6732266159103898080/-mr-10000
+POSTHOOK: query: create view v as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-54_878_6732266159103898080/-mr-10000
+PREHOOK: query: describe formatted v
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe formatted v
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+key string None
+value string None
+ds string None
+hr string None
+
+# Detailed Table Information
+Database: default
+Owner: charleschen
+CreateTime: Tue Jul 19 17:34:54 PDT 2011
+LastAccessTime: UNKNOWN
+Protect Mode: None
+Retention: 0
+Table Type: VIRTUAL_VIEW
+Table Parameters:
+ transient_lastDdlTime 1311122094
+
+# Storage Information
+SerDe Library: null
+InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+
+# View Information
+View Original Text: select * from srcpart
+View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `srcpart`
+PREHOOK: query: -- modifying definition of unpartitioned view
+create or replace view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-55_095_6852446605722181312/-mr-10000
+POSTHOOK: query: -- modifying definition of unpartitioned view
+create or replace view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-55_095_6852446605722181312/-mr-10000
+PREHOOK: query: alter view v add partition (ds='2008-04-08',hr='11')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@v
+POSTHOOK: query: alter view v add partition (ds='2008-04-08',hr='11')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v@ds=2008-04-08/hr=11
+PREHOOK: query: alter view v add partition (ds='2008-04-08',hr='12')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@v
+POSTHOOK: query: alter view v add partition (ds='2008-04-08',hr='12')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v@ds=2008-04-08/hr=12
+PREHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-55_760_500788128633787119/-mr-10000
+POSTHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-34-55_760_500788128633787119/-mr-10000
+409 val_409 2008-04-08 11
+409 val_409 2008-04-08 11
+409 val_409 2008-04-08 11
+PREHOOK: query: describe formatted v
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe formatted v
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+key string None
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+ds string None
+hr string None
+
+# Detailed Table Information
+Database: default
+Owner: charleschen
+CreateTime: Tue Jul 19 17:34:54 PDT 2011
+LastAccessTime: UNKNOWN
+Protect Mode: None
+Retention: 0
+Table Type: VIRTUAL_VIEW
+Table Parameters:
+ transient_lastDdlTime 1311122095
+
+# Storage Information
+SerDe Library: null
+InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+
+# View Information
+View Original Text: select * from srcpart
+View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `srcpart`
+PREHOOK: query: show partitions v
+PREHOOK: type: SHOWPARTITIONS
+POSTHOOK: query: show partitions v
+POSTHOOK: type: SHOWPARTITIONS
+ds=2008-04-08/hr=11
+ds=2008-04-08/hr=12
+PREHOOK: query: -- altering partitioned view 1
+create or replace view v partitioned on (ds, hr) as select value, ds, hr from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-01_367_3079170845179274932/-mr-10000
+POSTHOOK: query: -- altering partitioned view 1
+create or replace view v partitioned on (ds, hr) as select value, ds, hr from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-01_367_3079170845179274932/-mr-10000
+PREHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-01_478_4136837350460982570/-mr-10000
+POSTHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-01_478_4136837350460982570/-mr-10000
+val_409 2008-04-08 11
+val_409 2008-04-08 11
+val_409 2008-04-08 11
+PREHOOK: query: describe formatted v
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe formatted v
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+ds string None
+hr string None
+
+# Detailed Table Information
+Database: default
+Owner: charleschen
+CreateTime: Tue Jul 19 17:34:54 PDT 2011
+LastAccessTime: UNKNOWN
+Protect Mode: None
+Retention: 0
+Table Type: VIRTUAL_VIEW
+Table Parameters:
+ transient_lastDdlTime 1311122101
+
+# Storage Information
+SerDe Library: null
+InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+
+# View Information
+View Original Text: select value, ds, hr from srcpart
+View Expanded Text: select `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `srcpart`
+PREHOOK: query: show partitions v
+PREHOOK: type: SHOWPARTITIONS
+POSTHOOK: query: show partitions v
+POSTHOOK: type: SHOWPARTITIONS
+ds=2008-04-08/hr=11
+ds=2008-04-08/hr=12
+PREHOOK: query: -- altering partitioned view 2
+create or replace view v partitioned on (ds, hr) as select key, value, ds, hr from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-06_293_404398995477036687/-mr-10000
+POSTHOOK: query: -- altering partitioned view 2
+create or replace view v partitioned on (ds, hr) as select key, value, ds, hr from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-06_293_404398995477036687/-mr-10000
+PREHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-06_369_6280534937916662695/-mr-10000
+POSTHOOK: query: select * from v where value='val_409' and ds='2008-04-08' and hr='11'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-06_369_6280534937916662695/-mr-10000
+409 val_409 2008-04-08 11
+409 val_409 2008-04-08 11
+409 val_409 2008-04-08 11
+PREHOOK: query: describe formatted v
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe formatted v
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+key string None
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+ds string None
+hr string None
+
+# Detailed Table Information
+Database: default
+Owner: charleschen
+CreateTime: Tue Jul 19 17:34:54 PDT 2011
+LastAccessTime: UNKNOWN
+Protect Mode: None
+Retention: 0
+Table Type: VIRTUAL_VIEW
+Table Parameters:
+ transient_lastDdlTime 1311122106
+
+# Storage Information
+SerDe Library: null
+InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+
+# View Information
+View Original Text: select key, value, ds, hr from srcpart
+View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `srcpart`
+PREHOOK: query: show partitions v
+PREHOOK: type: SHOWPARTITIONS
+POSTHOOK: query: show partitions v
+POSTHOOK: type: SHOWPARTITIONS
+ds=2008-04-08/hr=11
+ds=2008-04-08/hr=12
+PREHOOK: query: drop view v
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v
+PREHOOK: Output: default@v
+POSTHOOK: query: drop view v
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v
+PREHOOK: query: -- updating to fix view with invalid definition
+create table srcpart_temp like srcpart
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- updating to fix view with invalid definition
+create table srcpart_temp like srcpart
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@srcpart_temp
+PREHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart_temp
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-11_359_8793253638417040051/-mr-10000
+POSTHOOK: query: create view v partitioned on (ds, hr) as select * from srcpart_temp
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-11_359_8793253638417040051/-mr-10000
+PREHOOK: query: drop table srcpart_temp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@srcpart_temp
+PREHOOK: Output: default@srcpart_temp
+POSTHOOK: query: drop table srcpart_temp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@srcpart_temp
+POSTHOOK: Output: default@srcpart_temp
+PREHOOK: query: -- v is now invalid
+create or replace view v partitioned on (ds, hr) as select * from srcpart
+PREHOOK: type: CREATEVIEW
+PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-11_545_8300926509521526863/-mr-10000
+POSTHOOK: query: -- v is now invalid
+create or replace view v partitioned on (ds, hr) as select * from srcpart
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@v
+POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-19_17-35-11_545_8300926509521526863/-mr-10000
+PREHOOK: query: describe formatted v
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe formatted v
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+key string None
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+ds string None
+hr string None
+
+# Detailed Table Information
+Database: default
+Owner: charleschen
+CreateTime: Tue Jul 19 17:35:11 PDT 2011
+LastAccessTime: UNKNOWN
+Protect Mode: None
+Retention: 0
+Table Type: VIRTUAL_VIEW
+Table Parameters:
+ transient_lastDdlTime 1311122111
+
+# Storage Information
+SerDe Library: null
+InputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+
+# View Information
+View Original Text: select * from srcpart
+View Expanded Text: select `srcpart`.`key`, `srcpart`.`value`, `srcpart`.`ds`, `srcpart`.`hr` from `srcpart`
+PREHOOK: query: drop view v
+PREHOOK: type: DROPVIEW
+PREHOOK: Input: default@v
+PREHOOK: Output: default@v
+POSTHOOK: query: drop view v
+POSTHOOK: type: DROPVIEW
+POSTHOOK: Input: default@v
+POSTHOOK: Output: default@v