You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2012/06/01 21:35:51 UTC

svn commit: r1345318 [7/7] - in /hive/trunk: metastore/if/ metastore/scripts/upgrade/mysql/ metastore/scripts/upgrade/oracle/ metastore/src/gen/thrift/gen-cpp/ metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ metastore/src/ge...

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=1345318&r1=1345317&r2=1345318&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 Fri Jun  1 19:35:49 2012
@@ -43,6 +43,7 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.metastore.TableType;
 import org.apache.hadoop.hive.metastore.Warehouse;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.Index;
@@ -68,6 +69,8 @@ import org.apache.hadoop.hive.ql.metadat
 import org.apache.hadoop.hive.ql.metadata.HiveUtils;
 import org.apache.hadoop.hive.ql.metadata.Partition;
 import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.AnalyzeCreateCommonVars;
+import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.StorageFormat;
 import org.apache.hadoop.hive.ql.plan.AddPartitionDesc;
 import org.apache.hadoop.hive.ql.plan.AlterDatabaseDesc;
 import org.apache.hadoop.hive.ql.plan.AlterIndexDesc;
@@ -77,6 +80,7 @@ import org.apache.hadoop.hive.ql.plan.Al
 import org.apache.hadoop.hive.ql.plan.AlterTableSimpleDesc;
 import org.apache.hadoop.hive.ql.plan.CreateDatabaseDesc;
 import org.apache.hadoop.hive.ql.plan.CreateIndexDesc;
+import org.apache.hadoop.hive.ql.plan.CreateTableLinkDesc;
 import org.apache.hadoop.hive.ql.plan.DDLWork;
 import org.apache.hadoop.hive.ql.plan.DescDatabaseDesc;
 import org.apache.hadoop.hive.ql.plan.DescFunctionDesc;
@@ -87,6 +91,7 @@ import org.apache.hadoop.hive.ql.plan.Dr
 import org.apache.hadoop.hive.ql.plan.FetchWork;
 import org.apache.hadoop.hive.ql.plan.GrantDesc;
 import org.apache.hadoop.hive.ql.plan.GrantRevokeRoleDDL;
+import org.apache.hadoop.hive.ql.plan.HiveOperation;
 import org.apache.hadoop.hive.ql.plan.LoadTableDesc;
 import org.apache.hadoop.hive.ql.plan.LockTableDesc;
 import org.apache.hadoop.hive.ql.plan.MoveWork;
@@ -209,7 +214,7 @@ public class DDLSemanticAnalyzer extends
       break;
     }
     case HiveParser.TOK_DROPTABLE:
-      analyzeDropTable(ast, false);
+      analyzeDropTable(ast, false, false);
       break;
     case HiveParser.TOK_CREATEINDEX:
       analyzeCreateIndex(ast);
@@ -217,6 +222,12 @@ public class DDLSemanticAnalyzer extends
     case HiveParser.TOK_DROPINDEX:
       analyzeDropIndex(ast);
       break;
+    case HiveParser.TOK_CREATETABLELINK:
+      analyzeCreateTableLink(ast);
+      break;
+    case HiveParser.TOK_DROPTABLELINK:
+      analyzeDropTable(ast, false, true);
+      break;
     case HiveParser.TOK_DESCTABLE:
       ctx.setResFile(new Path(ctx.getLocalTmpFileURI()));
       analyzeDescribeTable(ast);
@@ -258,7 +269,7 @@ public class DDLSemanticAnalyzer extends
       analyzeMetastoreCheck(ast);
       break;
     case HiveParser.TOK_DROPVIEW:
-      analyzeDropTable(ast, true);
+      analyzeDropTable(ast, true, false);
       break;
     case HiveParser.TOK_ALTERVIEW_PROPERTIES:
       analyzeAlterTableProps(ast, true);
@@ -694,7 +705,7 @@ public class DDLSemanticAnalyzer extends
 
 
 
-  private void analyzeDropTable(ASTNode ast, boolean expectView)
+  private void analyzeDropTable(ASTNode ast, boolean expectView, boolean expectLink)
       throws SemanticException {
     String tableName = getUnescapedName((ASTNode)ast.getChild(0));
     boolean ifExists = (ast.getFirstChildWithType(TOK_IFEXISTS) != null);
@@ -702,18 +713,40 @@ public class DDLSemanticAnalyzer extends
     // configured not to fail silently
     boolean throwException =
       !ifExists && !HiveConf.getBoolVar(conf, ConfVars.DROPIGNORESNONEXISTENT);
+    Table tab = null;
     try {
-      Table tab = db.getTable(db.getCurrentDatabase(), tableName, throwException);
-      if (tab != null) {
-        inputs.add(new ReadEntity(tab));
-        outputs.add(new WriteEntity(tab));
-      }
+      tab = db.getTable(tableName, throwException);
     } catch (HiveException e) {
       throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName));
     }
-
+    if (tab != null) {
+      inputs.add(new ReadEntity(tab));
+      outputs.add(new WriteEntity(tab));
+      if (tab.isView()) {
+        if (!expectView ) {
+          if (ifExists) {
+            return;
+          }
+          throw new SemanticException(ErrorMsg.DROP_COMMAND_FOR_VIEWS.getMsg());
+        }
+      } else if (tab.isLinkTable()) {
+        if (!expectLink) {
+          if (ifExists) {
+            return;
+          }
+          throw new SemanticException(ErrorMsg.DROP_COMMAND_FOR_TABLELINKS.getMsg());
+        }
+      } else { // tab is not a View or Link.
+        if (expectView || expectLink) {
+          if (ifExists) {
+            return;
+          }
+          throw new SemanticException(ErrorMsg.DROP_COMMAND_FOR_TABLES.getMsg());
+        }
+      }
+    }
     DropTableDesc dropTblDesc = new DropTableDesc(
-      tableName, expectView, ifExists, true);
+      tableName, expectView, expectLink, ifExists, true);
     rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
         dropTblDesc), conf));
   }
@@ -820,6 +853,46 @@ public class DDLSemanticAnalyzer extends
         dropIdxDesc), conf));
   }
 
+  private void analyzeCreateTableLink(ASTNode ast) throws SemanticException {
+    String dbName = unescapeIdentifier(ast.getChild(0).getText());
+    String tableName = unescapeIdentifier(ast.getChild(1).getText());
+    boolean isStatic = false;
+    Map<String, String> linkProps = null;
+    int numCh = ast.getChildCount();
+    for (int num = 2; num < numCh; num++) {
+      ASTNode child = (ASTNode) ast.getChild(num);
+      switch(child.getToken().getType()) {
+      case HiveParser.KW_STATIC:
+        isStatic = true;
+        break;
+      case HiveParser.TOK_TABLEPROPERTIES:
+        linkProps = DDLSemanticAnalyzer.getProps((ASTNode) child.getChild(0));
+        break;
+      }
+    }
+
+    if (dbName.equals(db.getCurrentDatabase())) {
+      throw new SemanticException(ErrorMsg.TABLELINK_TO_OWN_DB.getMsg());
+    }
+    Table targetTable = null;
+    try {
+      targetTable = db.getTable(dbName, tableName);
+    } catch (HiveException e) {
+      throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName + "@" + dbName));
+    }
+
+    TableType targetType = targetTable.getTableType();
+    if (targetType != TableType.MANAGED_TABLE) {
+      throw new SemanticException(ErrorMsg.TABLELINK_TO_UNMANAGED_TABLE.getMsg());
+    }
+
+    inputs.add(new ReadEntity(targetTable));
+    CreateTableLinkDesc ctlDesc = new CreateTableLinkDesc(tableName, dbName, isStatic, linkProps);
+    SessionState.get().setCommandType(HiveOperation.CREATETABLELINK);
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
+        ctlDesc), conf));
+  }
+
   private void analyzeAlterIndexRebuild(ASTNode ast) throws SemanticException {
     String baseTableName = unescapeIdentifier(ast.getChild(0).getText());
     String indexName = unescapeIdentifier(ast.getChild(1).getText());
@@ -1296,11 +1369,12 @@ public class DDLSemanticAnalyzer extends
   }
 
   /**
-   * Get the fully qualified name in the ast. e.g. the ast of the form ^(DOT
-   * ^(DOT a b) c) will generate a name of the form a.b.c
+   * Get the fully qualified name in the ast by concatenating the nodes of the binary tree
+   * in an inorder traversal order. e.g. the ast of the form ^(DOT
+   * ^(AT a b) c) will generate a name of the form a@b.c
    *
    * @param ast
-   *          The AST from which the qualified name has to be extracted
+   *          The root node of the binary tree
    * @return String
    */
   private String getFullyQualifiedName(ASTNode ast) {
@@ -1308,7 +1382,7 @@ public class DDLSemanticAnalyzer extends
       return ast.getText();
     }
 
-    return getFullyQualifiedName((ASTNode) ast.getChild(0)) + "."
+    return getFullyQualifiedName((ASTNode) ast.getChild(0)) + ast.getText()
         + getFullyQualifiedName((ASTNode) ast.getChild(1));
   }
 

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=1345318&r1=1345317&r2=1345318&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 Jun  1 19:35:49 2012
@@ -112,6 +112,7 @@ TOK_CREATEDATABASE;
 TOK_CREATETABLE;
 TOK_CREATEINDEX;
 TOK_CREATEINDEX_INDEXTBLNAME;
+TOK_CREATETABLELINK;
 TOK_DEFERRED_REBUILDINDEX;
 TOK_DROPINDEX;
 TOK_LIKETABLE;
@@ -151,6 +152,7 @@ TOK_UNLOCKTABLE;
 TOK_SWITCHDATABASE;
 TOK_DROPDATABASE;
 TOK_DROPTABLE;
+TOK_DROPTABLELINK;
 TOK_DATABASECOMMENT;
 TOK_TABCOLLIST;
 TOK_TABCOL;
@@ -254,6 +256,7 @@ TOK_DBPROPLIST;
 TOK_ALTERDATABASE_PROPERTIES;
 TOK_ALTERTABLE_ALTERPARTS_MERGEFILES;
 TOK_TABNAME;
+TOK_TABLINKNAME;
 TOK_TABSRC;
 TOK_RESTRICT;
 TOK_CASCADE;
@@ -330,6 +333,8 @@ ddlStatement
     | dropDatabaseStatement
     | createTableStatement
     | dropTableStatement
+    | createLinkStatement
+    | dropLinkStatement
     | alterStatement
     | descStatement
     | showStatement
@@ -469,6 +474,14 @@ createTableStatement
         )
     ;
 
+createLinkStatement
+@init { msgs.push("create tablelink statement"); }
+@after { msgs.pop(); }
+	: KW_CREATE (linkOptions=KW_STATIC)? KW_TABLELINK KW_TO
+		tab=Identifier AT db=Identifier linkPropertiesPrefixed?
+	-> ^(TOK_CREATETABLELINK $db $tab $linkOptions? linkPropertiesPrefixed?) 
+	;
+
 createIndexStatement
 @init { msgs.push("create index statement");}
 @after {msgs.pop();}
@@ -548,6 +561,12 @@ dropTableStatement
 @after { msgs.pop(); }
     : KW_DROP KW_TABLE ifExists? tableName -> ^(TOK_DROPTABLE tableName ifExists?)
     ;
+    
+dropLinkStatement
+@init { msgs.push("drop link statement"); }
+@after { msgs.pop(); } 
+	: KW_DROP KW_TABLELINK ifExists? linkTableName -> ^(TOK_DROPTABLELINK linkTableName ifExists?)
+	;
 
 alterStatement
 @init { msgs.push("alter statement"); }
@@ -814,8 +833,7 @@ fileFormat
 tabTypeExpr
 @init { msgs.push("specifying table types"); }
 @after { msgs.pop(); }
-
-   : Identifier (DOT^ (Identifier | KW_ELEM_TYPE | KW_KEY_TYPE | KW_VALUE_TYPE))*
+    : (Identifier AT^)? Identifier (DOT^ (Identifier | KW_ELEM_TYPE | KW_KEY_TYPE | KW_VALUE_TYPE))*
    ;
 
 partTypeExpr
@@ -1130,6 +1148,14 @@ tablePropertiesPrefixed
         KW_TBLPROPERTIES! tableProperties
     ;
 
+linkPropertiesPrefixed
+@init { msgs.push("link properties with prefix"); }
+@after { msgs.pop(); }
+    :
+        KW_LINKPROPERTIES! tableProperties
+    ;
+
+
 tableProperties
 @init { msgs.push("table properties"); }
 @after { msgs.pop(); }
@@ -1696,6 +1722,13 @@ tableName
     : (db=Identifier DOT)? tab=Identifier
     -> ^(TOK_TABNAME $db? $tab)
     ;
+    
+linkTableName
+@init { msgs.push("link table name"); }
+@after { msgs.pop(); }
+    : tab=Identifier AT db=Identifier
+    -> ^(TOK_TABLINKNAME $db $tab)
+    ;
 
 viewName
 @init { msgs.push("view name"); }
@@ -2191,6 +2224,7 @@ KW_TABLE: 'TABLE';
 KW_TABLES: 'TABLES';
 KW_INDEX: 'INDEX';
 KW_INDEXES: 'INDEXES';
+KW_TABLELINK: 'TABLELINK';
 KW_REBUILD: 'REBUILD';
 KW_FUNCTIONS: 'FUNCTIONS';
 KW_SHOW: 'SHOW';
@@ -2295,6 +2329,7 @@ KW_LIMIT: 'LIMIT';
 KW_SET: 'SET';
 KW_TBLPROPERTIES: 'TBLPROPERTIES';
 KW_IDXPROPERTIES: 'IDXPROPERTIES';
+KW_LINKPROPERTIES: 'LINKPROPERTIES';
 KW_VALUE_TYPE: '$VALUE$';
 KW_ELEM_TYPE: '$ELEM$';
 KW_CASE: 'CASE';
@@ -2362,7 +2397,7 @@ KW_SHOW_DATABASE: 'SHOW_DATABASE';
 KW_UPDATE: 'UPDATE';
 KW_RESTRICT: 'RESTRICT';
 KW_CASCADE: 'CASCADE';
-
+KW_STATIC: 'STATIC';
 
 // Operators
 // NOTE: if you add a new function/operator, add it to sysFuncNames so that describe function _FUNC_ will work.
@@ -2371,6 +2406,7 @@ DOT : '.'; // generated as a part of Num
 COLON : ':' ;
 COMMA : ',' ;
 SEMICOLON : ';' ;
+AT : '@' ;
 
 LPAREN : '(' ;
 RPAREN : ')' ;

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=1345318&r1=1345317&r2=1345318&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 Fri Jun  1 19:35:49 2012
@@ -69,6 +69,8 @@ public final class SemanticAnalyzerFacto
     commandType.put(HiveParser.TOK_DROPFUNCTION, HiveOperation.DROPFUNCTION);
     commandType.put(HiveParser.TOK_CREATEVIEW, HiveOperation.CREATEVIEW);
     commandType.put(HiveParser.TOK_DROPVIEW, HiveOperation.DROPVIEW);
+    commandType.put(HiveParser.TOK_CREATETABLELINK, HiveOperation.CREATETABLELINK);
+    commandType.put(HiveParser.TOK_DROPTABLELINK, HiveOperation.DROPTABLELINK);
     commandType.put(HiveParser.TOK_CREATEINDEX, HiveOperation.CREATEINDEX);
     commandType.put(HiveParser.TOK_DROPINDEX, HiveOperation.DROPINDEX);
     commandType.put(HiveParser.TOK_ALTERINDEX_REBUILD, HiveOperation.ALTERINDEX_REBUILD);
@@ -136,6 +138,7 @@ public final class SemanticAnalyzerFacto
       case HiveParser.TOK_SWITCHDATABASE:
       case HiveParser.TOK_DROPTABLE:
       case HiveParser.TOK_DROPVIEW:
+      case HiveParser.TOK_DROPTABLELINK:
       case HiveParser.TOK_DESCDATABASE:
       case HiveParser.TOK_DESCTABLE:
       case HiveParser.TOK_DESCFUNCTION:
@@ -165,6 +168,7 @@ public final class SemanticAnalyzerFacto
       case HiveParser.TOK_SHOWLOCKS:
       case HiveParser.TOK_CREATEINDEX:
       case HiveParser.TOK_DROPINDEX:
+      case HiveParser.TOK_CREATETABLELINK:
       case HiveParser.TOK_ALTERTABLE_CLUSTER_SORT:
       case HiveParser.TOK_ALTERTABLE_TOUCH:
       case HiveParser.TOK_ALTERTABLE_ARCHIVE:

Added: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLinkDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLinkDesc.java?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLinkDesc.java (added)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLinkDesc.java Fri Jun  1 19:35:49 2012
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.plan;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * CreateTableLinkDesc.
+ *
+ */
+@Explain(displayName = "Create TableLink")
+public class CreateTableLinkDesc extends DDLDesc implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+  String targetTable;
+  String targetDatabase;
+  boolean isStatic;
+  Map<String, String> linkProps;
+
+  public CreateTableLinkDesc(String targetTable, String targetDatabase,
+      boolean isStatic, Map<String, String> linkProps) {
+    this.targetTable = targetTable;
+    this.targetDatabase = targetDatabase;
+    this.isStatic = isStatic;
+    this.linkProps = linkProps;
+  }
+
+  @Explain(displayName = "target table")
+  public String getTargetTable() {
+    return targetTable;
+  }
+
+  @Explain(displayName = "target database" )
+  public String getTargetDatabase() {
+    return targetDatabase;
+  }
+
+  @Explain(displayName = "is static link")
+  public boolean isStaticLink() {
+    return isStatic;
+  }
+
+  @Explain(displayName = "link properties")
+  public Map<String, String> getLinkProps() {
+    return linkProps;
+  }
+}

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java Fri Jun  1 19:35:49 2012
@@ -40,6 +40,7 @@ public class DDLWork implements Serializ
   private CreateTableDesc createTblDesc;
   private CreateTableLikeDesc createTblLikeDesc;
   private CreateViewDesc createVwDesc;
+  private CreateTableLinkDesc createTblLinkDesc;
   private DropTableDesc dropTblDesc;
   private AlterTableDesc alterTblDesc;
   private AlterIndexDesc alterIdxDesc;
@@ -203,6 +204,16 @@ public class DDLWork implements Serializ
   }
 
   /**
+   * @param createTblLinkDesc
+   *          create table link descriptor
+   */
+  public DDLWork(HashSet<ReadEntity> inputs, HashSet<WriteEntity> outputs,
+      CreateTableLinkDesc createTblLinkDesc) {
+    this(inputs, outputs);
+    this.createTblLinkDesc = createTblLinkDesc;
+  }
+
+  /**
    * @param dropTblDesc
    *          drop table descriptor
    */
@@ -538,6 +549,22 @@ public class DDLWork implements Serializ
   }
 
   /**
+   * @return the createTblLinkDesc
+   */
+  @Explain(displayName = "Create Table Link Operator")
+  public  CreateTableLinkDesc getCreateTblLinkDesc() {
+    return createTblLinkDesc;
+  }
+
+  /**
+   * @param createTblLinkDesc
+   *          the createTblLinkDesc to set
+   */
+  public void setCreateTblLinkDesc(CreateTableLinkDesc createTblLinkDesc) {
+    this.createTblLinkDesc = createTblLinkDesc;
+  }
+
+  /**
    * @return the dropTblDesc
    */
   @Explain(displayName = "Drop Table Operator")

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DropTableDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DropTableDesc.java?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DropTableDesc.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DropTableDesc.java Fri Jun  1 19:35:49 2012
@@ -33,6 +33,7 @@ public class DropTableDesc extends DDLDe
   String tableName;
   ArrayList<PartitionSpec> partSpecs;
   boolean expectView;
+  boolean expectLink;
   boolean ifExists;
   boolean stringPartitionColumns; // This is due to JDO not working very well with
                                   // non-string partition columns.
@@ -44,18 +45,18 @@ public class DropTableDesc extends DDLDe
   /**
    * @param tableName
    */
-  public DropTableDesc(String tableName, boolean expectView,
+  public DropTableDesc(String tableName, boolean expectView, boolean expectLink,
                        boolean ifExists, boolean stringPartitionColumns) {
     this.tableName = tableName;
     partSpecs = null;
     this.expectView = expectView;
+    this.expectLink = expectLink;
     this.ifExists = ifExists;
     this.stringPartitionColumns = stringPartitionColumns;
   }
 
   public DropTableDesc(String tableName, List<PartitionSpec> partSpecs,
                        boolean expectView, boolean stringPartitionColumns) {
-
     this.tableName = tableName;
     this.partSpecs = new ArrayList<PartitionSpec>(partSpecs.size());
     for (int i = 0; i < partSpecs.size(); i++) {
@@ -63,6 +64,7 @@ public class DropTableDesc extends DDLDe
     }
     this.expectView = expectView;
     this.stringPartitionColumns = stringPartitionColumns;
+    this.expectLink = false;
   }
 
   /**
@@ -112,6 +114,21 @@ public class DropTableDesc extends DDLDe
   }
 
   /**
+   * @return whether to expect a table link being dropped
+   */
+  public boolean getExpectLink() {
+    return expectLink;
+  }
+
+  /**
+   * @param expectLink
+   *          set whether to expect a table link being dropped
+   */
+  public void setExpectLink(boolean expectLink) {
+    this.expectLink = expectLink;
+  }
+
+  /**
    * @return whether IF EXISTS was specified
    */
   public boolean getIfExists() {

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/HiveOperation.java Fri Jun  1 19:35:49 2012
@@ -83,6 +83,8 @@ public enum HiveOperation {
   ALTERPARTITION_LOCATION("ALTERPARTITION_LOCATION", new Privilege[]{Privilege.ALTER_DATA}, null),
   CREATETABLE("CREATETABLE", null, new Privilege[]{Privilege.CREATE}),
   CREATETABLE_AS_SELECT("CREATETABLE_AS_SELECT", new Privilege[]{Privilege.SELECT}, new Privilege[]{Privilege.CREATE}),
+  CREATETABLELINK("CREATETABLELINK", null, new Privilege[]{Privilege.CREATE}),
+  DROPTABLELINK("DROPTABLELINK", null, null),
   QUERY("QUERY", new Privilege[]{Privilege.SELECT}, new Privilege[]{Privilege.ALTER_DATA, Privilege.CREATE}),
   ALTERINDEX_PROPS("ALTERINDEX_PROPS",null, null),
   ALTERDATABASE("ALTERDATABASE", null, null),

Added: hive/trunk/ql/src/test/queries/clientnegative/create_table_failure5.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_table_failure5.q?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_table_failure5.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_table_failure5.q Fri Jun  1 19:35:49 2012
@@ -0,0 +1 @@
+CREATE TABLE xyz@default (a STRING, b STRING);
\ No newline at end of file

Added: hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure1.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure1.q?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure1.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure1.q Fri Jun  1 19:35:49 2012
@@ -0,0 +1 @@
+CREATE TABLELINK TO src@default LINKPROPERTIES('RETENTION'='7');

Added: hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure2.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure2.q?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure2.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_tablelink_failure2.q Fri Jun  1 19:35:49 2012
@@ -0,0 +1,8 @@
+DROP VIEW view1;
+CREATE VIEW view1 AS SELECT value FROM src WHERE key=86;
+
+DROP DATABASE IF EXISTS tmpdb CASCADE;
+CREATE DATABASE tmpdb;
+USE tmpdb;
+
+CREATE TABLELINK TO view1@default LINKPROPERTIES('RETENTION'='100');

Added: hive/trunk/ql/src/test/queries/clientpositive/create_tablelink.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/create_tablelink.q?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/create_tablelink.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/create_tablelink.q Fri Jun  1 19:35:49 2012
@@ -0,0 +1,18 @@
+DROP DATABASE IF EXISTS tmpdb CASCADE;
+CREATE DATABASE tmpdb;
+USE tmpdb;
+
+CREATE TABLELINK TO src@default LINKPROPERTIES('RETENTION'='7');
+DESC src@default;
+DESC EXTENDED src@default;
+DESC FORMATTED src@default;
+
+CREATE STATIC TABLELINK TO srcbucket@default;
+DESC srcbucket@default;
+DESC EXTENDED srcbucket@default;
+DESC FORMATTED srcbucket@default;
+
+SHOW TABLES;
+
+DROP TABLELINK src@default;
+DROP TABLELINK srcbucket@default;

Added: hive/trunk/ql/src/test/results/clientnegative/create_table_failure5.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_table_failure5.q.out?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_table_failure5.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_table_failure5.q.out Fri Jun  1 19:35:49 2012
@@ -0,0 +1,2 @@
+FAILED: ParseException line 1:16 cannot recognize input near '@' 'default' '(' in create table statement
+

Added: hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure1.q.out?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure1.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure1.q.out Fri Jun  1 19:35:49 2012
@@ -0,0 +1 @@
+FAILED: SemanticException [Error 10130]: You cannot create Links to tables in your own database. Links are meant for accessing other databases.

Added: hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure2.q.out?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure2.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_tablelink_failure2.q.out Fri Jun  1 19:35:49 2012
@@ -0,0 +1,24 @@
+PREHOOK: query: DROP VIEW view1
+PREHOOK: type: DROPVIEW
+POSTHOOK: query: DROP VIEW view1
+POSTHOOK: type: DROPVIEW
+PREHOOK: query: CREATE VIEW view1 AS SELECT value FROM src WHERE key=86
+PREHOOK: type: CREATEVIEW
+#### A masked pattern was here ####
+POSTHOOK: query: CREATE VIEW view1 AS SELECT value FROM src WHERE key=86
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Output: default@view1
+#### A masked pattern was here ####
+PREHOOK: query: DROP DATABASE IF EXISTS tmpdb CASCADE
+PREHOOK: type: DROPDATABASE
+POSTHOOK: query: DROP DATABASE IF EXISTS tmpdb CASCADE
+POSTHOOK: type: DROPDATABASE
+PREHOOK: query: CREATE DATABASE tmpdb
+PREHOOK: type: CREATEDATABASE
+POSTHOOK: query: CREATE DATABASE tmpdb
+POSTHOOK: type: CREATEDATABASE
+PREHOOK: query: USE tmpdb
+PREHOOK: type: SWITCHDATABASE
+POSTHOOK: query: USE tmpdb
+POSTHOOK: type: SWITCHDATABASE
+FAILED: SemanticException [Error 10131]: Table Links can only point to Managed Tables. They cannot point to Views, External Tables or other Links.

Modified: hive/trunk/ql/src/test/results/clientnegative/drop_table_failure2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/drop_table_failure2.q.out?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/drop_table_failure2.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/drop_table_failure2.q.out Fri Jun  1 19:35:49 2012
@@ -5,10 +5,4 @@ POSTHOOK: query: CREATE VIEW xxx6 AS SEL
 POSTHOOK: type: CREATEVIEW
 POSTHOOK: Output: default@xxx6
 #### A masked pattern was here ####
-PREHOOK: query: -- Can't use DROP TABLE on a view
-DROP TABLE xxx6
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@xxx6
-PREHOOK: Output: default@xxx6
-FAILED: Error in metadata: Cannot drop a view with DROP TABLE
-FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
+FAILED: SemanticException [Error 10132]: To drop a view you need to use the DROP VIEW command.

Modified: hive/trunk/ql/src/test/results/clientnegative/drop_view_failure1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/drop_view_failure1.q.out?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/drop_view_failure1.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/drop_view_failure1.q.out Fri Jun  1 19:35:49 2012
@@ -3,10 +3,4 @@ PREHOOK: type: CREATETABLE
 POSTHOOK: query: CREATE TABLE xxx1(key int)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: default@xxx1
-PREHOOK: query: -- Can't use DROP VIEW on a base table
-DROP VIEW xxx1
-PREHOOK: type: DROPVIEW
-PREHOOK: Input: default@xxx1
-PREHOOK: Output: default@xxx1
-FAILED: Error in metadata: Cannot drop a base table with DROP VIEW
-FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
+FAILED: SemanticException [Error 10134]: To drop a base table you need to use the DROP TABLE command.

Added: hive/trunk/ql/src/test/results/clientpositive/create_tablelink.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/create_tablelink.q.out?rev=1345318&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/create_tablelink.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/create_tablelink.q.out Fri Jun  1 19:35:49 2012
@@ -0,0 +1,135 @@
+PREHOOK: query: DROP DATABASE IF EXISTS tmpdb CASCADE
+PREHOOK: type: DROPDATABASE
+POSTHOOK: query: DROP DATABASE IF EXISTS tmpdb CASCADE
+POSTHOOK: type: DROPDATABASE
+PREHOOK: query: CREATE DATABASE tmpdb
+PREHOOK: type: CREATEDATABASE
+POSTHOOK: query: CREATE DATABASE tmpdb
+POSTHOOK: type: CREATEDATABASE
+PREHOOK: query: USE tmpdb
+PREHOOK: type: SWITCHDATABASE
+POSTHOOK: query: USE tmpdb
+POSTHOOK: type: SWITCHDATABASE
+PREHOOK: query: CREATE TABLELINK TO src@default LINKPROPERTIES('RETENTION'='7')
+PREHOOK: type: CREATETABLELINK
+PREHOOK: Input: default@src
+POSTHOOK: query: CREATE TABLELINK TO src@default LINKPROPERTIES('RETENTION'='7')
+POSTHOOK: type: CREATETABLELINK
+POSTHOOK: Input: default@src
+POSTHOOK: Output: tmpdb@src@default
+PREHOOK: query: DESC src@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC src@default
+POSTHOOK: type: DESCTABLE
+key	string	default
+value	string	default
+PREHOOK: query: DESC EXTENDED src@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC EXTENDED src@default
+POSTHOOK: type: DESCTABLE
+key	string	default
+value	string	default
+	 	 
+#### A masked pattern was here ####
+PREHOOK: query: DESC FORMATTED src@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED src@default
+POSTHOOK: type: DESCTABLE
+# col_name            	data_type           	comment             
+	 	 
+key                 	string              	default             
+value               	string              	default             
+	 	 
+# Detailed Table Information	 	 
+Database:           	tmpdb               	 
+#### A masked pattern was here ####
+Protect Mode:       	None                	 
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	LINK_TABLE          	 
+Table Parameters:	 	 
+	RETENTION           	7                   
+#### 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: CREATE STATIC TABLELINK TO srcbucket@default
+PREHOOK: type: CREATETABLELINK
+PREHOOK: Input: default@srcbucket
+POSTHOOK: query: CREATE STATIC TABLELINK TO srcbucket@default
+POSTHOOK: type: CREATETABLELINK
+POSTHOOK: Input: default@srcbucket
+POSTHOOK: Output: tmpdb@srcbucket@default
+PREHOOK: query: DESC srcbucket@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC srcbucket@default
+POSTHOOK: type: DESCTABLE
+key	int	
+value	string	
+PREHOOK: query: DESC EXTENDED srcbucket@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC EXTENDED srcbucket@default
+POSTHOOK: type: DESCTABLE
+key	int	
+value	string	
+	 	 
+#### A masked pattern was here ####
+PREHOOK: query: DESC FORMATTED srcbucket@default
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED srcbucket@default
+POSTHOOK: type: DESCTABLE
+# col_name            	data_type           	comment             
+	 	 
+key                 	int                 	None                
+value               	string              	None                
+	 	 
+# Detailed Table Information	 	 
+Database:           	tmpdb               	 
+#### A masked pattern was here ####
+Protect Mode:       	None                	 
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	STATIC_LINK_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:        	2                   	 
+Bucket Columns:     	[key]               	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: SHOW TABLES
+PREHOOK: type: SHOWTABLES
+POSTHOOK: query: SHOW TABLES
+POSTHOOK: type: SHOWTABLES
+src@default
+srcbucket@default
+PREHOOK: query: DROP TABLELINK src@default
+PREHOOK: type: DROPTABLELINK
+PREHOOK: Input: tmpdb@src@default
+PREHOOK: Output: tmpdb@src@default
+POSTHOOK: query: DROP TABLELINK src@default
+POSTHOOK: type: DROPTABLELINK
+POSTHOOK: Input: tmpdb@src@default
+POSTHOOK: Output: tmpdb@src@default
+PREHOOK: query: DROP TABLELINK srcbucket@default
+PREHOOK: type: DROPTABLELINK
+PREHOOK: Input: tmpdb@srcbucket@default
+PREHOOK: Output: tmpdb@srcbucket@default
+POSTHOOK: query: DROP TABLELINK srcbucket@default
+POSTHOOK: type: DROPTABLELINK
+POSTHOOK: Input: tmpdb@srcbucket@default
+POSTHOOK: Output: tmpdb@srcbucket@default

Modified: hive/trunk/ql/src/test/results/clientpositive/create_view.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/create_view.q.out?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/create_view.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/create_view.q.out Fri Jun  1 19:35:49 2012
@@ -714,7 +714,7 @@ c	string	
 	 	 
 #### A masked pattern was here ####
 FROM table1, viewExpandedText:SELECT `_c0` AS `c` FROM (SELECT `test_translate`('abc', 'a', 'b')	 	 
-FROM `default`.`table1`) `view8`, tableType:VIRTUAL_VIEW)		 
+FROM `default`.`table1`) `view8`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view8
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view8
@@ -789,7 +789,7 @@ m	int	
 	 	 
 #### A masked pattern was here ####
 FROM src, viewExpandedText:SELECT `_c0` AS `m` FROM (SELECT `test_max`(length(`src`.`value`))	 	 
-FROM `default`.`src`) `view9`, tableType:VIRTUAL_VIEW)		 
+FROM `default`.`src`) `view9`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view9
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view9
@@ -928,7 +928,7 @@ boom	int	
 	 	 
 #### A masked pattern was here ####
 FROM table1, viewExpandedText:SELECT `test_explode`(array(1,2,3)) AS (`boom`)	 	 
-FROM `default`.`table1`, tableType:VIRTUAL_VIEW)		 
+FROM `default`.`table1`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view11
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view11
@@ -1082,7 +1082,7 @@ key	int	
 	 	 
 #### A masked pattern was here ####
 FROM srcbucket TABLESAMPLE (BUCKET 1 OUT OF 5 ON key) s, viewExpandedText:SELECT `s`.`key`	 	 
-FROM `default`.`srcbucket` TABLESAMPLE (BUCKET 1 OUT OF 5 ON `key`) `s`, tableType:VIRTUAL_VIEW)		 
+FROM `default`.`srcbucket` TABLESAMPLE (BUCKET 1 OUT OF 5 ON `key`) `s`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view13
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view13
@@ -1198,7 +1198,7 @@ JOIN	 	 
      (select 'tst1' as `key`, cast(count(1) as string) as `value` from `default`.`src` `s3`	 	 
                          UNION  ALL	 	 
       select `s4`.`key` as `key`, `s4`.`value` as `value` from `default`.`src` `s4` where `s4`.`key` < 10) `unionsrc2`	 	 
-ON (`unionsrc1`.`key` = `unionsrc2`.`key`), tableType:VIRTUAL_VIEW)		 
+ON (`unionsrc1`.`key` = `unionsrc2`.`key`), tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view14
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view14
@@ -1314,7 +1314,7 @@ value_count	bigint	
 FROM src	 	 
 GROUP BY key, viewExpandedText:SELECT `src`.`key`,COUNT(`src`.`value`) AS `value_count`	 	 
 FROM `default`.`src`	 	 
-GROUP BY `src`.`key`, tableType:VIRTUAL_VIEW)		 
+GROUP BY `src`.`key`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view15
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view15
@@ -1398,7 +1398,7 @@ value	string	
 	 	 
 #### A masked pattern was here ####
 FROM src, viewExpandedText:SELECT DISTINCT `src`.`value`	 	 
-FROM `default`.`src`, tableType:VIRTUAL_VIEW)		 
+FROM `default`.`src`, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED view16
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED view16

Modified: hive/trunk/ql/src/test/results/clientpositive/create_view_partitioned.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/create_view_partitioned.q.out?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/create_view_partitioned.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/create_view_partitioned.q.out Fri Jun  1 19:35:49 2012
@@ -42,7 +42,7 @@ value	string	
 FROM src	 	 
 WHERE key=86, viewExpandedText:SELECT `src`.`key`, `src`.`value`	 	 
 FROM `default`.`src`	 	 
-WHERE `src`.`key`=86, tableType:VIRTUAL_VIEW)		 
+WHERE `src`.`key`=86, tableType:VIRTUAL_VIEW, linkTables:[])		 
 PREHOOK: query: DESCRIBE FORMATTED vp1
 PREHOOK: type: DESCTABLE
 POSTHOOK: query: DESCRIBE FORMATTED vp1

Modified: hive/trunk/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out?rev=1345318&r1=1345317&r2=1345318&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out Fri Jun  1 19:35:49 2012
@@ -285,8 +285,11 @@ POSTHOOK: Lineage: destintable PARTITION
 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), ]
@@ -294,8 +297,11 @@ POSTHOOK: Lineage: destintable PARTITION
 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), ]