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 2010/11/13 06:08:19 UTC

svn commit: r1034655 - in /hive/trunk: ./ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/java/org/apache/hadoop/hive/ql/index/ ql/src/java/org/apache/hadoop/hive/ql/metadata/ ql/src/java/org/apache/hadoop/hive/ql/parse/ ql/src/java/org/apache/hadoo...

Author: jvs
Date: Sat Nov 13 05:08:18 2010
New Revision: 1034655

URL: http://svn.apache.org/viewvc?rev=1034655&view=rev
Log:
HIVE-1497 support COMMENT clause on CREATE INDEX, and add new
command for SHOW INDEXES
(Russell Melick via jvs)


Added:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowIndexesDesc.java
    hive/trunk/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q
    hive/trunk/ql/src/test/queries/clientpositive/show_indexes_syntax.q
    hive/trunk/ql/src/test/results/clientpositive/show_indexes_edge_cases.q.out
    hive/trunk/ql/src/test/results/clientpositive/show_indexes_syntax.q.out
Modified:
    hive/trunk/CHANGES.txt
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/index/HiveIndex.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/MetaDataFormatUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateIndexDesc.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java

Modified: hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hive/trunk/CHANGES.txt?rev=1034655&r1=1034654&r2=1034655&view=diff
==============================================================================
--- hive/trunk/CHANGES.txt (original)
+++ hive/trunk/CHANGES.txt Sat Nov 13 05:08:18 2010
@@ -249,6 +249,10 @@ Trunk -  Unreleased
     HIVE-1786 Better documentation for udf str_to_map
     (Siying Dong via namit)
 
+    HIVE-1497 support COMMENT clause on CREATE INDEX, and add new
+    command for SHOW INDEXES
+    (Russell Melick via jvs)
+
   OPTIMIZATIONS
 
   BUG FIXES

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=1034655&r1=1034654&r2=1034655&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 Sat Nov 13 05:08:18 2010
@@ -37,10 +37,10 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.Map.Entry;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -58,6 +58,7 @@ import org.apache.hadoop.hive.metastore.
 import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
 import org.apache.hadoop.hive.metastore.api.Database;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.Index;
 import org.apache.hadoop.hive.metastore.api.InvalidOperationException;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
@@ -82,7 +83,6 @@ import org.apache.hadoop.hive.ql.metadat
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.plan.AddPartitionDesc;
 import org.apache.hadoop.hive.ql.plan.AlterTableDesc;
-import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes;
 import org.apache.hadoop.hive.ql.plan.AlterTableSimpleDesc;
 import org.apache.hadoop.hive.ql.plan.CreateDatabaseDesc;
 import org.apache.hadoop.hive.ql.plan.CreateIndexDesc;
@@ -99,12 +99,14 @@ import org.apache.hadoop.hive.ql.plan.Lo
 import org.apache.hadoop.hive.ql.plan.MsckDesc;
 import org.apache.hadoop.hive.ql.plan.ShowDatabasesDesc;
 import org.apache.hadoop.hive.ql.plan.ShowFunctionsDesc;
+import org.apache.hadoop.hive.ql.plan.ShowIndexesDesc;
 import org.apache.hadoop.hive.ql.plan.ShowLocksDesc;
 import org.apache.hadoop.hive.ql.plan.ShowPartitionsDesc;
 import org.apache.hadoop.hive.ql.plan.ShowTableStatusDesc;
 import org.apache.hadoop.hive.ql.plan.ShowTablesDesc;
 import org.apache.hadoop.hive.ql.plan.SwitchDatabaseDesc;
 import org.apache.hadoop.hive.ql.plan.UnlockTableDesc;
+import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes;
 import org.apache.hadoop.hive.ql.plan.api.StageType;
 import org.apache.hadoop.hive.serde.Constants;
 import org.apache.hadoop.hive.serde2.Deserializer;
@@ -281,6 +283,11 @@ public class DDLTask extends Task<DDLWor
         return showPartitions(db, showParts);
       }
 
+      ShowIndexesDesc showIndexes = work.getShowIndexesDesc();
+      if (showIndexes != null) {
+        return showIndexes(db, showIndexes);
+      }
+
     } catch (InvalidTableException e) {
       console.printError("Table " + e.getTableName() + " does not exist");
       LOG.debug(stringifyException(e));
@@ -318,7 +325,7 @@ public class DDLTask extends Task<DDLWor
         crtIndex.getInputFormat(), crtIndex.getOutputFormat(), crtIndex.getSerde(),
         crtIndex.getStorageHandler(), crtIndex.getLocation(), crtIndex.getIdxProps(), crtIndex.getTblProps(),
         crtIndex.getSerdeProps(), crtIndex.getCollItemDelim(), crtIndex.getFieldDelim(), crtIndex.getFieldEscape(),
-        crtIndex.getLineDelim(), crtIndex.getMapKeyDelim()
+        crtIndex.getLineDelim(), crtIndex.getMapKeyDelim(), crtIndex.getIndexComment()
         );
     return 0;
   }
@@ -1084,6 +1091,60 @@ public class DDLTask extends Task<DDLWor
   }
 
   /**
+   * Write a list of indexes to a file.
+   *
+   * @param db
+   *          The database in question.
+   * @param showIndexes
+   *          These are the indexes we're interested in.
+   * @return Returns 0 when execution succeeds and above 0 if it fails.
+   * @throws HiveException
+   *           Throws this exception if an unexpected error occurs.
+   */
+  private int showIndexes(Hive db, ShowIndexesDesc showIndexes) throws HiveException {
+    // get the indexes for the table and populate the output
+    String tableName = showIndexes.getTableName();
+    Table tbl = null;
+    List<Index> indexes = null;
+
+    tbl = db.getTable(tableName);
+
+    indexes = db.getIndexes(db.getCurrentDatabase(), tbl.getTableName(), (short) -1);
+
+    // write the results in the file
+    try {
+      Path resFile = new Path(showIndexes.getResFile());
+      FileSystem fs = resFile.getFileSystem(conf);
+      DataOutput outStream = fs.create(resFile);
+
+      if (showIndexes.isFormatted()) {
+        // column headers
+        outStream.writeBytes(MetaDataFormatUtils.getIndexColumnsHeader());
+        outStream.write(terminator);
+        outStream.write(terminator);
+      }
+
+      for (Index index : indexes)
+      {
+        outStream.writeBytes(MetaDataFormatUtils.getAllColumnsInformation(index));
+      }
+
+      ((FSDataOutputStream) outStream).close();
+
+    } catch (FileNotFoundException e) {
+      LOG.info("show indexes: " + stringifyException(e));
+      throw new HiveException(e.toString());
+    } catch (IOException e) {
+      LOG.info("show indexes: " + stringifyException(e));
+      throw new HiveException(e.toString());
+    } catch (Exception e) {
+      throw new HiveException(e.toString());
+    }
+
+    return 0;
+  }
+
+  /**
    * Write a list of the available databases to a file.
    *
    * @param showDatabases

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/index/HiveIndex.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/index/HiveIndex.java?rev=1034655&r1=1034654&r2=1034655&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/index/HiveIndex.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/index/HiveIndex.java Sat Nov 13 05:08:18 2010
@@ -26,9 +26,9 @@ import org.apache.commons.logging.LogFac
 public class HiveIndex {
 
   public static final Log l4j = LogFactory.getLog("HiveIndex");
-  
+
   public static String INDEX_TABLE_CREATETIME = "hive.index.basetbl.dfs.lastModifiedTime";
-  
+
   public static enum IndexType {
     COMPACT_SUMMARY_TABLE("compact", "org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler");
 
@@ -37,23 +37,34 @@ public class HiveIndex {
       this.handlerClsName = className;
     }
 
-    private String indexTypeName;
-    private String handlerClsName;
+    private final String indexTypeName;
+    private final String handlerClsName;
 
     public String getName() {
       return indexTypeName;
     }
-    
+
     public String getHandlerClsName() {
       return handlerClsName;
     }
   }
-  
+
   public static IndexType getIndexType(String name) {
     IndexType[] types = IndexType.values();
     for (IndexType type : types) {
-      if(type.getName().equals(name.toLowerCase()))
+      if(type.getName().equals(name.toLowerCase())) {
+        return type;
+      }
+    }
+    return null;
+  }
+
+  public static IndexType getIndexTypeByClassName(String className) {
+    IndexType[] types = IndexType.values();
+    for (IndexType type : types) {
+      if(type.getHandlerClsName().equals(className)) {
         return type;
+      }
     }
     return null;
   }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java?rev=1034655&r1=1034654&r2=1034655&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java Sat Nov 13 05:08:18 2010
@@ -460,7 +460,7 @@ public class Hive {
       String storageHandler, String location,
       Map<String, String> idxProps, Map<String, String> tblProps, Map<String, String> serdeProps,
       String collItemDelim, String fieldDelim, String fieldEscape,
-      String lineDelim, String mapKeyDelim)
+      String lineDelim, String mapKeyDelim, String indexComment)
       throws HiveException {
 
     try {
@@ -583,6 +583,7 @@ public class Hive {
 
       Index indexDesc = new Index(indexName, indexHandlerClass, dbName, tableName, time, time, indexTblName,
           storageDescriptor, params, deferredRebuild);
+      indexDesc.getParameters().put("comment", indexComment);
       indexHandler.analyzeIndexDefinition(baseTbl, indexDesc, tt);
 
       if (idxProps != null)
@@ -1617,4 +1618,14 @@ public class Hive {
     }
   }
 
+  public List<Index> getIndexes(String dbName, String tblName, short max) throws HiveException {
+    List<Index> indexes = null;
+    try {
+      indexes = getMSC().listIndexes(dbName, tblName, max);
+    } catch (Exception e) {
+      LOG.error(StringUtils.stringifyException(e));
+      throw new HiveException(e);
+    }
+    return indexes;
+  }
 };

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/MetaDataFormatUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/MetaDataFormatUtils.java?rev=1034655&r1=1034654&r2=1034655&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/MetaDataFormatUtils.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/MetaDataFormatUtils.java Sat Nov 13 05:08:18 2010
@@ -18,19 +18,23 @@
 
 package org.apache.hadoop.hive.ql.metadata;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.metastore.api.Index;
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
+import org.apache.hadoop.hive.ql.index.HiveIndex;
+import org.apache.hadoop.hive.ql.index.HiveIndex.IndexType;
 import org.apache.hadoop.hive.ql.plan.DescTableDesc;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Collections;
-import java.util.ArrayList;
+import org.apache.hadoop.hive.ql.plan.ShowIndexesDesc;
 
 /**
- * This class provides methods to format table information.
+ * This class provides methods to format table and index information.
  *
  */
 public final class MetaDataFormatUtils {
@@ -79,6 +83,45 @@ public final class MetaDataFormatUtils {
     }
   }
 
+
+  public static String getAllColumnsInformation(Index index) {
+    StringBuilder indexInfo = new StringBuilder(DEFAULT_STRINGBUILDER_SIZE);
+
+    List<String> indexColumns = new ArrayList<String>();
+
+    indexColumns.add(index.getIndexName());
+    indexColumns.add(index.getOrigTableName());
+
+    // index key names
+    List<FieldSchema> indexKeys = index.getSd().getCols();
+    StringBuilder keyString = new StringBuilder();
+    boolean first = true;
+    for (FieldSchema key : indexKeys)
+    {
+      if (!first)
+      {
+        keyString.append(", ");
+      }
+      keyString.append(key.getName());
+      first = false;
+    }
+
+    indexColumns.add(keyString.toString());
+
+    indexColumns.add(index.getIndexTableName());
+
+    // index type
+    String indexHandlerClass = index.getIndexHandlerClass();
+    IndexType indexType = HiveIndex.getIndexTypeByClassName(indexHandlerClass);
+    indexColumns.add(indexType.getName());
+
+    indexColumns.add(index.getParameters().get("comment"));
+
+    formatOutput(indexColumns.toArray(new String[0]), indexInfo);
+
+    return indexInfo.toString();
+}
+
   /*
     Displaying columns unformatted for backward compatibility.
    */
@@ -210,6 +253,10 @@ public final class MetaDataFormatUtils {
 
   private static void formatOutput(String[] fields, StringBuilder tableInfo) {
     for (String field : fields) {
+      if (field == null) {
+        tableInfo.append(FIELD_DELIM);
+        continue;
+      }
       tableInfo.append(String.format("%-" + ALIGNMENT + "s", field)).append(FIELD_DELIM);
     }
     tableInfo.append(LINE_DELIM);
@@ -231,4 +278,10 @@ public final class MetaDataFormatUtils {
   public static String[] getColumnsHeader() {
     return DescTableDesc.getSchema().split("#")[0].split(",");
   }
+
+  public static String getIndexColumnsHeader() {
+    StringBuilder indexCols = new StringBuilder(DEFAULT_STRINGBUILDER_SIZE);
+    formatOutput(ShowIndexesDesc.getSchema().split("#")[0].split(","), indexCols);
+    return indexCols.toString();
+  }
 }

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=1034655&r1=1034654&r2=1034655&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 Sat Nov 13 05:08:18 2010
@@ -79,6 +79,7 @@ import org.apache.hadoop.hive.ql.plan.Lo
 import org.apache.hadoop.hive.ql.plan.MsckDesc;
 import org.apache.hadoop.hive.ql.plan.ShowDatabasesDesc;
 import org.apache.hadoop.hive.ql.plan.ShowFunctionsDesc;
+import org.apache.hadoop.hive.ql.plan.ShowIndexesDesc;
 import org.apache.hadoop.hive.ql.plan.ShowLocksDesc;
 import org.apache.hadoop.hive.ql.plan.ShowPartitionsDesc;
 import org.apache.hadoop.hive.ql.plan.ShowTableStatusDesc;
@@ -232,6 +233,9 @@ public class DDLSemanticAnalyzer extends
     } else if (ast.getToken().getType() == HiveParser.TOK_SHOWPARTITIONS) {
       ctx.setResFile(new Path(ctx.getLocalTmpFileURI()));
       analyzeShowPartitions(ast);
+    } else if (ast.getToken().getType() == HiveParser.TOK_SHOWINDEXES) {
+      ctx.setResFile(new Path(ctx.getLocalTmpFileURI()));
+      analyzeShowIndexes(ast);
     } else if (ast.getToken().getType() == HiveParser.TOK_LOCKTABLE) {
       analyzeLockTable(ast);
     } else if (ast.getToken().getType() == HiveParser.TOK_UNLOCKTABLE) {
@@ -338,6 +342,7 @@ public class DDLSemanticAnalyzer extends
     String location = null;
     Map<String, String> tblProps = null;
     Map<String, String> idxProps = null;
+    String indexComment = null;
 
     RowFormatParams rowFormatParams = new RowFormatParams();
     StorageFormat storageFormat = new StorageFormat();
@@ -376,6 +381,9 @@ public class DDLSemanticAnalyzer extends
               shared.serdeProps);
         }
         break;
+      case HiveParser.TOK_INDEXCOMMENT:
+        child = (ASTNode) child.getChild(0);
+        indexComment = unescapeSQLString(child.getText());
       }
     }
 
@@ -386,7 +394,7 @@ public class DDLSemanticAnalyzer extends
         storageFormat.storageHandler, typeName, location, idxProps, tblProps,
         shared.serde, shared.serdeProps, rowFormatParams.collItemDelim,
         rowFormatParams.fieldDelim, rowFormatParams.fieldEscape,
-        rowFormatParams.lineDelim, rowFormatParams.mapKeyDelim);
+        rowFormatParams.lineDelim, rowFormatParams.mapKeyDelim, indexComment);
     Task<?> createIndex = TaskFactory.get(new DDLWork(crtIndexDesc), conf);
     rootTasks.add(createIndex);
   }
@@ -887,6 +895,21 @@ public class DDLSemanticAnalyzer extends
     setFetchTask(createFetchTask(showTblStatusDesc.getSchema()));
   }
 
+  private void analyzeShowIndexes(ASTNode ast) throws SemanticException {
+    ShowIndexesDesc showIndexesDesc;
+    String tableName = unescapeIdentifier(ast.getChild(0).getText());
+    showIndexesDesc = new ShowIndexesDesc(tableName, ctx.getResFile());
+
+    if (ast.getChildCount() == 2) {
+      int descOptions = ast.getChild(1).getType();
+      showIndexesDesc.setFormatted(descOptions == HiveParser.KW_FORMATTED);
+    }
+
+    rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
+        showIndexesDesc), conf));
+    setFetchTask(createFetchTask(showIndexesDesc.getSchema()));
+  }
+
   /**
    * Add the task according to the parsed command tree. This is used for the CLI
    * command "SHOW FUNCTIONS;".

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=1034655&r1=1034654&r2=1034655&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 Sat Nov 13 05:08:18 2010
@@ -188,6 +188,8 @@ TOK_LEFTSEMIJOIN;
 TOK_LATERAL_VIEW;
 TOK_TABALIAS;
 TOK_ANALYZE;
+TOK_SHOWINDEXES;
+TOK_INDEXCOMMENT;
 }
 
 
@@ -349,16 +351,25 @@ createIndexStatement
       tableFileFormat?
       tableLocation?
       tablePropertiesPrefixed?
-    ->^(TOK_CREATEINDEX $indexName $typeName $tab $indexedCols
+      indexComment?
+    ->^(TOK_CREATEINDEX $indexName $typeName $tab $indexedCols 
         autoRebuild?
         indexPropertiesPrefixed?
         indexTblName?
         tableRowFormat?
         tableFileFormat?
         tableLocation?
-        tablePropertiesPrefixed?)
+        tablePropertiesPrefixed?
+        indexComment?)
     ;
 
+indexComment
+@init { msgs.push("comment on an index");}
+@after {msgs.pop();}
+        :
+                KW_COMMENT comment=StringLiteral  -> ^(TOK_INDEXCOMMENT $comment)
+        ;
+
 autoRebuild
 @init { msgs.push("auto rebuild index");}
 @after {msgs.pop();}
@@ -661,6 +672,8 @@ showStatement
     -> ^(TOK_SHOW_TABLESTATUS showStmtIdentifier $db_name? partitionSpec?)
     | KW_SHOW KW_LOCKS -> ^(TOK_SHOWLOCKS)
     | KW_SHOW KW_LOCKS (parttype=partTypeExpr) (isExtended=KW_EXTENDED)? -> ^(TOK_SHOWLOCKS $parttype $isExtended?)
+    | KW_SHOW (showOptions=KW_FORMATTED)? (KW_INDEX|KW_INDEXES) KW_ON showStmtIdentifier ((KW_FROM|KW_IN) db_name=Identifier)?
+    -> ^(TOK_SHOWINDEXES showStmtIdentifier $showOptions? $db_name?)  
     ;
 
 lockStatement
@@ -1762,6 +1775,7 @@ KW_PARTITIONS : 'PARTITIONS';
 KW_TABLE: 'TABLE';
 KW_TABLES: 'TABLES';
 KW_INDEX: 'INDEX';
+KW_INDEXES: 'INDEXES';
 KW_REBUILD: 'REBUILD';
 KW_FUNCTIONS: 'FUNCTIONS';
 KW_SHOW: 'SHOW';

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=1034655&r1=1034654&r2=1034655&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 Sat Nov 13 05:08:18 2010
@@ -30,7 +30,7 @@ import org.apache.hadoop.hive.ql.session
 public final class SemanticAnalyzerFactory {
 
   static HashMap<Integer, String> commandType = new HashMap<Integer, String>();
-  static HashMap<Integer, String[]> tablePartitionCommandType = new HashMap<Integer, String[]>(); 
+  static HashMap<Integer, String[]> tablePartitionCommandType = new HashMap<Integer, String[]>();
 
   static {
     commandType.put(HiveParser.TOK_EXPLAIN, "EXPLAIN");
@@ -60,6 +60,7 @@ public final class SemanticAnalyzerFacto
     commandType.put(HiveParser.TOK_SHOW_TABLESTATUS, "SHOW_TABLESTATUS");
     commandType.put(HiveParser.TOK_SHOWFUNCTIONS, "SHOWFUNCTIONS");
     commandType.put(HiveParser.TOK_SHOWPARTITIONS, "SHOWPARTITIONS");
+    commandType.put(HiveParser.TOK_SHOWINDEXES, "SHOWINDEXES");
     commandType.put(HiveParser.TOK_SHOWLOCKS, "SHOWLOCKS");
     commandType.put(HiveParser.TOK_CREATEFUNCTION, "CREATEFUNCTION");
     commandType.put(HiveParser.TOK_DROPFUNCTION, "DROPFUNCTION");
@@ -73,16 +74,16 @@ public final class SemanticAnalyzerFacto
     commandType.put(HiveParser.TOK_LOCKTABLE, "LOCKTABLE");
     commandType.put(HiveParser.TOK_UNLOCKTABLE, "UNLOCKTABLE");
   }
-  
+
   static {
-    tablePartitionCommandType.put(HiveParser.TOK_ALTERTABLE_ALTERPARTS_PROTECTMODE, 
+    tablePartitionCommandType.put(HiveParser.TOK_ALTERTABLE_ALTERPARTS_PROTECTMODE,
         new String[] { "ALTERTABLE_PROTECTMODE", "ALTERPARTITION_PROTECTMODE" });
     tablePartitionCommandType.put(HiveParser.TOK_ALTERTABLE_FILEFORMAT,
         new String[] { "ALTERTABLE_FILEFORMAT", "ALTERPARTITION_FILEFORMAT" });
     tablePartitionCommandType.put(HiveParser.TOK_ALTERTABLE_LOCATION,
         new String[] { "ALTERTABLE_LOCATION", "ALTERPARTITION_LOCATION" });
   }
-  
+
 
   public static BaseSemanticAnalyzer get(HiveConf conf, ASTNode tree)
       throws SemanticException {
@@ -120,6 +121,7 @@ public final class SemanticAnalyzerFacto
       case HiveParser.TOK_SHOW_TABLESTATUS:
       case HiveParser.TOK_SHOWFUNCTIONS:
       case HiveParser.TOK_SHOWPARTITIONS:
+      case HiveParser.TOK_SHOWINDEXES:
       case HiveParser.TOK_SHOWLOCKS:
       case HiveParser.TOK_CREATEINDEX:
       case HiveParser.TOK_DROPINDEX:

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateIndexDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateIndexDesc.java?rev=1034655&r1=1034654&r2=1034655&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateIndexDesc.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateIndexDesc.java Sat Nov 13 05:08:18 2010
@@ -48,6 +48,7 @@ public class CreateIndexDesc extends DDL
   String lineDelim;
   String mapKeyDelim;
 
+  String indexComment;
 
   public CreateIndexDesc() {
     super();
@@ -59,7 +60,7 @@ public class CreateIndexDesc extends DDL
       String typeName, String location, Map<String, String> idxProps, Map<String, String> tblProps,
       String serde, Map<String, String> serdeProps, String collItemDelim,
       String fieldDelim, String fieldEscape, String lineDelim,
-      String mapKeyDelim) {
+      String mapKeyDelim, String indexComment) {
     super();
     this.tableName = tableName;
     this.indexName = indexName;
@@ -81,6 +82,7 @@ public class CreateIndexDesc extends DDL
     this.fieldEscape = fieldEscape;
     this.lineDelim = lineDelim;
     this.mapKeyDelim = mapKeyDelim;
+    this.indexComment = indexComment;
   }
 
   public String getTableName() {
@@ -239,4 +241,12 @@ public class CreateIndexDesc extends DDL
     this.indexTypeHandlerClass = indexTypeHandlerClass;
   }
 
-}
\ No newline at end of file
+  public String getIndexComment() {
+    return indexComment;
+  }
+
+  public void setIndexComment(String indexComment) {
+    this.indexComment = indexComment;
+  }
+
+}

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=1034655&r1=1034654&r2=1034655&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 Sat Nov 13 05:08:18 2010
@@ -53,6 +53,7 @@ public class DDLWork implements Serializ
   private AlterTableSimpleDesc alterTblSimpleDesc;
   private MsckDesc msckDesc;
   private ShowTableStatusDesc showTblStatusDesc;
+  private ShowIndexesDesc showIndexesDesc;
 
   /**
    * ReadEntitites that are passed to the hooks.
@@ -74,7 +75,7 @@ public class DDLWork implements Serializ
   public DDLWork(CreateIndexDesc createIndex) {
     this.createIndexDesc = createIndex;
   }
-  
+
   /**
    * @param createDatabaseDesc
    *          Create Database descriptor
@@ -295,6 +296,12 @@ public class DDLWork implements Serializ
     this.dropIdxDesc = dropIndexDesc;
   }
 
+  public DDLWork(HashSet<ReadEntity> inputs, HashSet<WriteEntity> outputs,
+      ShowIndexesDesc showIndexesDesc) {
+    this(inputs, outputs);
+    this.showIndexesDesc = showIndexesDesc;
+  }
+
   /**
    * @return Create Database descriptor
    */
@@ -355,7 +362,7 @@ public class DDLWork implements Serializ
   public void setCreateTblDesc(CreateTableDesc createTblDesc) {
     this.createTblDesc = createTblDesc;
   }
-  
+
   public CreateIndexDesc getCreateIndexDesc() {
     return createIndexDesc;
   }
@@ -557,6 +564,18 @@ public class DDLWork implements Serializ
   }
 
   /**
+   * @return the showIndexesDesc
+   */
+  @Explain(displayName = "Show Index Operator")
+  public ShowIndexesDesc getShowIndexesDesc() {
+    return showIndexesDesc;
+  }
+
+  public void setShowIndexesDesc(ShowIndexesDesc showIndexesDesc) {
+    this.showIndexesDesc = showIndexesDesc;
+  }
+
+  /**
    * @return the descTblDesc
    */
   @Explain(displayName = "Describe Table Operator")
@@ -659,7 +678,7 @@ public class DDLWork implements Serializ
   public void setOutputs(HashSet<WriteEntity> outputs) {
     this.outputs = outputs;
   }
-  
+
   public DropIndexDesc getDropIdxDesc() {
     return dropIdxDesc;
   }

Added: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowIndexesDesc.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowIndexesDesc.java?rev=1034655&view=auto
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowIndexesDesc.java (added)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ShowIndexesDesc.java Sat Nov 13 05:08:18 2010
@@ -0,0 +1,73 @@
+/**
+ * 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 org.apache.hadoop.fs.Path;
+
+/**
+ * ShowIndexesDesc.
+ * Returns table index information per SQL syntax.
+ */
+@Explain(displayName = "Show Indexes")
+public class ShowIndexesDesc extends DDLDesc implements Serializable {
+  private static final long serialVersionUID = 1L;
+  String tableName;
+  String resFile;
+  boolean isFormatted;
+
+  /**
+   * thrift ddl for the result of show indexes.
+   */
+  private static final String schema = "idx_name,tab_name,col_names,idx_tab_name,idx_type,comment"
+                                        + "#string:string:string:string:string:string";
+
+  public static String getSchema() {
+    return schema;
+  }
+
+  public String getTableName() {
+    return tableName;
+  }
+
+  public String getResFile() {
+    return resFile;
+  }
+
+  public boolean isFormatted() {
+    return isFormatted;
+  }
+
+  public void setFormatted(boolean isFormatted) {
+    this.isFormatted = isFormatted;
+  }
+
+  /**
+   *
+   * @param tableName
+   *          Name of the table whose indexes need to be listed.
+   * @param resFile
+   *          File to store the results in.
+   */
+  public ShowIndexesDesc(String tableName, Path resFile) {
+    this.tableName = tableName;
+    this.resFile = resFile.toString();
+  }
+}

Added: hive/trunk/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q?rev=1034655&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/show_indexes_edge_cases.q Sat Nov 13 05:08:18 2010
@@ -0,0 +1,25 @@
+DROP TABLE show_idx_empty;
+DROP TABLE show_idx_full;
+
+CREATE TABLE show_idx_empty(KEY STRING, VALUE STRING);
+CREATE TABLE show_idx_full(KEY STRING, VALUE1 STRING, VALUE2 STRING);
+
+CREATE INDEX idx_1 ON TABLE show_idx_full(KEY) AS "COMPACT" WITH DEFERRED REBUILD;
+CREATE INDEX idx_2 ON TABLE show_idx_full(VALUE1) AS "COMPACT" WITH DEFERRED REBUILD;
+
+CREATE INDEX idx_comment ON TABLE show_idx_full(VALUE2) AS "COMPACT" WITH DEFERRED REBUILD COMMENT "index comment";
+CREATE INDEX idx_compound ON TABLE show_idx_full(KEY, VALUE1) AS "COMPACT" WITH DEFERRED REBUILD;
+
+ALTER INDEX idx_1 ON show_idx_full REBUILD;
+ALTER INDEX idx_2 ON show_idx_full REBUILD;
+ALTER INDEX idx_comment ON show_idx_full REBUILD;
+ALTER INDEX idx_compound ON show_idx_full REBUILD;
+
+EXPLAIN SHOW INDEXES ON show_idx_full;
+SHOW INDEXES ON show_idx_full;
+
+EXPLAIN SHOW INDEXES ON show_idx_empty;
+SHOW INDEXES ON show_idx_empty;
+
+DROP TABLE show_idx_empty;
+DROP TABLE show_idx_full;
\ No newline at end of file

Added: hive/trunk/ql/src/test/queries/clientpositive/show_indexes_syntax.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/show_indexes_syntax.q?rev=1034655&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/show_indexes_syntax.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/show_indexes_syntax.q Sat Nov 13 05:08:18 2010
@@ -0,0 +1,23 @@
+DROP TABLE show_idx_t1;
+
+CREATE TABLE show_idx_t1(KEY STRING, VALUE STRING);
+
+CREATE INDEX idx_t1 ON TABLE show_idx_t1(KEY) AS "COMPACT" WITH DEFERRED REBUILD;
+ALTER INDEX idx_t1 ON show_idx_t1 REBUILD;
+
+EXPLAIN
+SHOW INDEX ON show_idx_t1;
+
+SHOW INDEX ON show_idx_t1;
+
+EXPLAIN
+SHOW INDEXES ON show_idx_t1;
+
+SHOW INDEXES ON show_idx_t1;
+
+EXPLAIN
+SHOW FORMATTED INDEXES ON show_idx_t1;
+
+SHOW FORMATTED INDEXES ON show_idx_t1;
+
+DROP TABLE show_idx_t1;

Added: hive/trunk/ql/src/test/results/clientpositive/show_indexes_edge_cases.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/show_indexes_edge_cases.q.out?rev=1034655&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/show_indexes_edge_cases.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/show_indexes_edge_cases.q.out Sat Nov 13 05:08:18 2010
@@ -0,0 +1,245 @@
+PREHOOK: query: DROP TABLE show_idx_empty
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE show_idx_empty
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: DROP TABLE show_idx_full
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE show_idx_full
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE show_idx_empty(KEY STRING, VALUE STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE show_idx_empty(KEY STRING, VALUE STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@show_idx_empty
+PREHOOK: query: CREATE TABLE show_idx_full(KEY STRING, VALUE1 STRING, VALUE2 STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE show_idx_full(KEY STRING, VALUE1 STRING, VALUE2 STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@show_idx_full
+PREHOOK: query: CREATE INDEX idx_1 ON TABLE show_idx_full(KEY) AS "COMPACT" WITH DEFERRED REBUILD
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX idx_1 ON TABLE show_idx_full(KEY) AS "COMPACT" WITH DEFERRED REBUILD
+POSTHOOK: type: CREATEINDEX
+PREHOOK: query: CREATE INDEX idx_2 ON TABLE show_idx_full(VALUE1) AS "COMPACT" WITH DEFERRED REBUILD
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX idx_2 ON TABLE show_idx_full(VALUE1) AS "COMPACT" WITH DEFERRED REBUILD
+POSTHOOK: type: CREATEINDEX
+PREHOOK: query: CREATE INDEX idx_comment ON TABLE show_idx_full(VALUE2) AS "COMPACT" WITH DEFERRED REBUILD COMMENT "index comment"
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX idx_comment ON TABLE show_idx_full(VALUE2) AS "COMPACT" WITH DEFERRED REBUILD COMMENT "index comment"
+POSTHOOK: type: CREATEINDEX
+PREHOOK: query: CREATE INDEX idx_compound ON TABLE show_idx_full(KEY, VALUE1) AS "COMPACT" WITH DEFERRED REBUILD
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX idx_compound ON TABLE show_idx_full(KEY, VALUE1) AS "COMPACT" WITH DEFERRED REBUILD
+POSTHOOK: type: CREATEINDEX
+PREHOOK: query: ALTER INDEX idx_1 ON show_idx_full REBUILD
+PREHOOK: type: QUERY
+PREHOOK: Input: default@show_idx_full
+PREHOOK: Output: default@default__show_idx_full_idx_1__
+POSTHOOK: query: ALTER INDEX idx_1 ON show_idx_full REBUILD
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@show_idx_full
+POSTHOOK: Output: default@default__show_idx_full_idx_1__
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+PREHOOK: query: ALTER INDEX idx_2 ON show_idx_full REBUILD
+PREHOOK: type: QUERY
+PREHOOK: Input: default@show_idx_full
+PREHOOK: Output: default@default__show_idx_full_idx_2__
+POSTHOOK: query: ALTER INDEX idx_2 ON show_idx_full REBUILD
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@show_idx_full
+POSTHOOK: Output: default@default__show_idx_full_idx_2__
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+PREHOOK: query: ALTER INDEX idx_comment ON show_idx_full REBUILD
+PREHOOK: type: QUERY
+PREHOOK: Input: default@show_idx_full
+PREHOOK: Output: default@default__show_idx_full_idx_comment__
+POSTHOOK: query: ALTER INDEX idx_comment ON show_idx_full REBUILD
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@show_idx_full
+POSTHOOK: Output: default@default__show_idx_full_idx_comment__
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+PREHOOK: query: ALTER INDEX idx_compound ON show_idx_full REBUILD
+PREHOOK: type: QUERY
+PREHOOK: Input: default@show_idx_full
+PREHOOK: Output: default@default__show_idx_full_idx_compound__
+POSTHOOK: query: ALTER INDEX idx_compound ON show_idx_full REBUILD
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@show_idx_full
+POSTHOOK: Output: default@default__show_idx_full_idx_compound__
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+PREHOOK: query: EXPLAIN SHOW INDEXES ON show_idx_full
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: EXPLAIN SHOW INDEXES ON show_idx_full
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+ABSTRACT SYNTAX TREE:
+  (TOK_SHOWINDEXES show_idx_full)
+
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+  Stage-1 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Show Index Operator:
+        Show Indexes
+
+  Stage: Stage-1
+    Fetch Operator
+      limit: -1
+
+
+PREHOOK: query: SHOW INDEXES ON show_idx_full
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: SHOW INDEXES ON show_idx_full
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+idx_1               	show_idx_full       	key                 	default__show_idx_full_idx_1__	compact             	
+idx_2               	show_idx_full       	value1              	default__show_idx_full_idx_2__	compact             	
+idx_comment         	show_idx_full       	value2              	default__show_idx_full_idx_comment__	compact             	index comment       
+idx_compound        	show_idx_full       	key, value1         	default__show_idx_full_idx_compound__	compact             	
+PREHOOK: query: EXPLAIN SHOW INDEXES ON show_idx_empty
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: EXPLAIN SHOW INDEXES ON show_idx_empty
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+ABSTRACT SYNTAX TREE:
+  (TOK_SHOWINDEXES show_idx_empty)
+
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+  Stage-1 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Show Index Operator:
+        Show Indexes
+
+  Stage: Stage-1
+    Fetch Operator
+      limit: -1
+
+
+PREHOOK: query: SHOW INDEXES ON show_idx_empty
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: SHOW INDEXES ON show_idx_empty
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+PREHOOK: query: DROP TABLE show_idx_empty
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@show_idx_empty
+PREHOOK: Output: default@show_idx_empty
+POSTHOOK: query: DROP TABLE show_idx_empty
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@show_idx_empty
+POSTHOOK: Output: default@show_idx_empty
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+PREHOOK: query: DROP TABLE show_idx_full
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@show_idx_full
+PREHOOK: Output: default@show_idx_full
+POSTHOOK: query: DROP TABLE show_idx_full
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@show_idx_full
+POSTHOOK: Output: default@show_idx_full
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_1__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_2__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_comment__.value2 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value2, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._bucketname SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__._offsets EXPRESSION [(show_idx_full)show_idx_full.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.key SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:key, type:string, comment:null), ]
+POSTHOOK: Lineage: default__show_idx_full_idx_compound__.value1 SIMPLE [(show_idx_full)show_idx_full.FieldSchema(name:value1, type:string, comment:null), ]

Added: hive/trunk/ql/src/test/results/clientpositive/show_indexes_syntax.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/show_indexes_syntax.q.out?rev=1034655&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/show_indexes_syntax.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/show_indexes_syntax.q.out Sat Nov 13 05:08:18 2010
@@ -0,0 +1,140 @@
+PREHOOK: query: DROP TABLE show_idx_t1
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE show_idx_t1
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE show_idx_t1(KEY STRING, VALUE STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE show_idx_t1(KEY STRING, VALUE STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@show_idx_t1
+PREHOOK: query: CREATE INDEX idx_t1 ON TABLE show_idx_t1(KEY) AS "COMPACT" WITH DEFERRED REBUILD
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX idx_t1 ON TABLE show_idx_t1(KEY) AS "COMPACT" WITH DEFERRED REBUILD
+POSTHOOK: type: CREATEINDEX
+PREHOOK: query: ALTER INDEX idx_t1 ON show_idx_t1 REBUILD
+PREHOOK: type: QUERY
+PREHOOK: Input: default@show_idx_t1
+PREHOOK: Output: default@default__show_idx_t1_idx_t1__
+POSTHOOK: query: ALTER INDEX idx_t1 ON show_idx_t1 REBUILD
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@show_idx_t1
+POSTHOOK: Output: default@default__show_idx_t1_idx_t1__
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+PREHOOK: query: EXPLAIN
+SHOW INDEX ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: EXPLAIN
+SHOW INDEX ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+ABSTRACT SYNTAX TREE:
+  (TOK_SHOWINDEXES show_idx_t1)
+
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+  Stage-1 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Show Index Operator:
+        Show Indexes
+
+  Stage: Stage-1
+    Fetch Operator
+      limit: -1
+
+
+PREHOOK: query: SHOW INDEX ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: SHOW INDEX ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+idx_t1              	show_idx_t1         	key                 	default__show_idx_t1_idx_t1__	compact             	
+PREHOOK: query: EXPLAIN
+SHOW INDEXES ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: EXPLAIN
+SHOW INDEXES ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+ABSTRACT SYNTAX TREE:
+  (TOK_SHOWINDEXES show_idx_t1)
+
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+  Stage-1 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Show Index Operator:
+        Show Indexes
+
+  Stage: Stage-1
+    Fetch Operator
+      limit: -1
+
+
+PREHOOK: query: SHOW INDEXES ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: SHOW INDEXES ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+idx_t1              	show_idx_t1         	key                 	default__show_idx_t1_idx_t1__	compact             	
+PREHOOK: query: EXPLAIN
+SHOW FORMATTED INDEXES ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: EXPLAIN
+SHOW FORMATTED INDEXES ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+ABSTRACT SYNTAX TREE:
+  (TOK_SHOWINDEXES show_idx_t1 FORMATTED)
+
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+  Stage-1 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+      Show Index Operator:
+        Show Indexes
+
+  Stage: Stage-1
+    Fetch Operator
+      limit: -1
+
+
+PREHOOK: query: SHOW FORMATTED INDEXES ON show_idx_t1
+PREHOOK: type: SHOWINDEXES
+POSTHOOK: query: SHOW FORMATTED INDEXES ON show_idx_t1
+POSTHOOK: type: SHOWINDEXES
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]
+idx_name            	tab_name            	col_names           	idx_tab_name        	idx_type            	comment             
+	 	 	 	 	 
+	 	 	 	 	 
+idx_t1              	show_idx_t1         	key                 	default__show_idx_t1_idx_t1__	compact             	
+PREHOOK: query: DROP TABLE show_idx_t1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@show_idx_t1
+PREHOOK: Output: default@show_idx_t1
+POSTHOOK: query: DROP TABLE show_idx_t1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@show_idx_t1
+POSTHOOK: Output: default@show_idx_t1
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._bucketname SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__._offsets EXPRESSION [(show_idx_t1)show_idx_t1.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
+POSTHOOK: Lineage: default__show_idx_t1_idx_t1__.key SIMPLE [(show_idx_t1)show_idx_t1.FieldSchema(name:key, type:string, comment:null), ]