diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 1ca8d31..d9d2c9e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -2533,9 +2533,8 @@ public class DDLTask extends Task implements Serializable { * Throws this exception if an unexpected error occurs. */ private int describeTable(Hive db, DescTableDesc descTbl) throws HiveException { - String colPath = descTbl.getTableName(); - String tableName = colPath.substring(0, - colPath.indexOf('.') == -1 ? colPath.length() : colPath.indexOf('.')); + String colPath = descTbl.getColumnPath(); + String tableName = descTbl.getTableName(); // describe the table - populate the output stream Table tbl = db.getTable(tableName, false); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index f7257cd..8898c03 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -1358,20 +1358,230 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { } /** - * 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 - * - * @param ast - * The AST from which the qualified name has to be extracted - * @return String + * Utility class to resolve QualifiedName */ - private String getFullyQualifiedName(ASTNode ast) { - if (ast.getChildCount() == 0) { - return ast.getText(); + static class QualifiedNameUtil { + + // delimiter to check DOT delimited qualified names + static String delimiter = "\\."; + + /** + * 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 + * + * @param ast + * The AST from which the qualified name has to be extracted + * @return String + */ + static public String getFullyQualifiedName(ASTNode ast) { + if (ast.getChildCount() == 0) { + return ast.getText(); + } else if (ast.getChildCount() == 2) { + return getFullyQualifiedName((ASTNode) ast.getChild(0)) + "." + + getFullyQualifiedName((ASTNode) ast.getChild(1)); + } else if (ast.getChildCount() == 3) { + return getFullyQualifiedName((ASTNode) ast.getChild(0)) + "." + + getFullyQualifiedName((ASTNode) ast.getChild(1)) + "." + + getFullyQualifiedName((ASTNode) ast.getChild(2)); + } else { + return null; + } + } + + // assume the first component of DOT delimited name is tableName + // get the attemptTableName + static public String getAttemptTableName(Hive db, String qualifiedName, boolean isColumn) { + // check whether the name starts with table + // DESCRIBE table + // DESCRIBE table.column + // DECRIBE table column + String tableName = qualifiedName.substring(0, + qualifiedName.indexOf('.') == -1 ? + qualifiedName.length() : qualifiedName.indexOf('.')); + try { + Table tab = db.getTable(tableName); + if (tab != null) { + if (isColumn) { + // if attempt to get columnPath + // return the whole qualifiedName(table.column or table) + return qualifiedName; + } else { + // if attempt to get tableName + // return table + return tableName; + } + } + } catch (HiveException e) { + // assume the first DOT delimited component is tableName + // OK if it is not + // do nothing when having exception + return null; + } + return null; + } + + // get Database Name + static public String getActualDBName(Hive db, ASTNode ast) { + String actualDBName = null; + String fullyQualifiedName = getFullyQualifiedName(ast); + + // if database.table or database.table.column or table.column + // first try the first component of the DOT separated name + if (ast.getChildCount() >= 2) { + actualDBName = fullyQualifiedName.substring(0, + fullyQualifiedName.indexOf('.') == -1 ? + fullyQualifiedName.length() : + fullyQualifiedName.indexOf('.')); + try { + // if the database name is not valid + // it is table.column + // return null as actualDBName + if (!db.databaseExists(actualDBName)) { + return null; + } + } catch (HiveException e) { + return null; + } + } else { + // in other cases, return null + // database is not validated if null + return null; + } + return actualDBName; + } + + // get Table Name + static public String getActualTableName(Hive db, ASTNode ast) + throws SemanticException { + String actualTableName = null; + String fullyQualifiedName = getFullyQualifiedName(ast); + + // assume the first component of DOT delimited name is tableName + String attemptTableName = getAttemptTableName(db, fullyQualifiedName, false); + if (attemptTableName != null) { + return attemptTableName; + } + + // if the name does not start with table + // it should start with database + // DESCRIBE database table + // DESCRIBE database.table + // DESCRIBE database.table column + // DESCRIBE database.table.column + if (fullyQualifiedName.split(delimiter).length == 3) { + // if DESCRIBE database.table.column + // or DESCRIBE database.table column + // return database.table as actualTableName + actualTableName = fullyQualifiedName.substring(0, + fullyQualifiedName.lastIndexOf('.')); + } else if (fullyQualifiedName.split(delimiter).length == 2) { + // if DESCRIBE database table + // or DESCRIBE database.table + // return database.table as actualTableName + actualTableName = fullyQualifiedName; + } else { + // if fullyQualifiedName only have one component + // it is an invalid table + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(actualTableName)); + } + + return actualTableName; + } + + // get column path + static public String getColPath( + Hive db, + ASTNode parentAst, + ASTNode ast, + String tableName, + HashMap partSpec) { + + // if parent has two children + // it could be DESCRIBE table key + // or DESCRIBE table partition + if (parentAst.getChildCount() == 2 && partSpec == null) { + // if partitionSpec is null + // it is DESCRIBE table partition + // return table as columnPath + return getFullyQualifiedName(parentAst); + } + + // assume the first component of DOT delimited name is tableName + String attemptTableName = getAttemptTableName(db, tableName, true); + if (attemptTableName != null) { + return attemptTableName; + } + + // if the name does not start with table + // it should start with database + // DESCRIBE database table + // DESCRIBE database.table + // DESCRIBE database.table column + // DESCRIBE database.table.column + if (tableName.split(delimiter).length == 3) { + // if DESCRIBE database.table.column + // or DESCRIBE database.table column + // return table.column as column path + return tableName.substring( + tableName.indexOf(".") + 1, tableName.length()); + } + + // in other cases, column path is the same as tableName + return tableName; + } + + // get partition metadata + static public HashMap getPartitionSpec(Hive db, ASTNode ast, String tableName) + throws SemanticException { + // if ast has two children + // it could be DESCRIBE table key + // or DESCRIBE table partition + // check whether it is DESCRIBE table partition + if (ast.getChildCount() == 2) { + ASTNode partNode = (ASTNode) ast.getChild(1); + HashMap partSpec = null; + try { + partSpec = getPartSpec(partNode); + } catch (SemanticException e) { + // get exception in resolving partition + // return null + return null; + } + + Table tab = null; + try { + tab = db.getTable(tableName); + } catch (HiveException e) { + // if table not valie + // throw semantic exception + throw new SemanticException(ErrorMsg.INVALID_TABLE.getMsg(tableName), e); + } + + if (partSpec != null) { + Partition part = null; + try { + part = db.getPartition(tab, partSpec, false); + } catch (HiveException e) { + // if get exception in finding partition + // return null + return null; + } + + // if partition is not valid + // return null + if (part == null) { + return null; + } + + // it is DESCRIBE table partition + // return partition metadata + return partSpec; + } + } + + return null; } - return getFullyQualifiedName((ASTNode) ast.getChild(0)) + "." - + getFullyQualifiedName((ASTNode) ast.getChild(1)); } /** @@ -1433,22 +1643,30 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { private void analyzeDescribeTable(ASTNode ast) throws SemanticException { ASTNode tableTypeExpr = (ASTNode) ast.getChild(0); - String tableName = getFullyQualifiedName((ASTNode) tableTypeExpr - .getChild(0)); - HashMap partSpec = null; - // get partition metadata if partition specified - if (tableTypeExpr.getChildCount() == 2) { - ASTNode partspec = (ASTNode) tableTypeExpr.getChild(1); - partSpec = getPartSpec(partspec); + String tableName = + QualifiedNameUtil.getFullyQualifiedName((ASTNode) tableTypeExpr.getChild(0)); + String actualTableName = + QualifiedNameUtil.getActualTableName(db, (ASTNode)(tableTypeExpr.getChild(0))); + String actualDBName = + QualifiedNameUtil.getActualDBName(db, (ASTNode)(tableTypeExpr.getChild(0))); + HashMap partSpec = + QualifiedNameUtil.getPartitionSpec(db, tableTypeExpr, actualTableName); + String colPath = QualifiedNameUtil.getColPath( + db, tableTypeExpr, (ASTNode) tableTypeExpr.getChild(0), tableName, partSpec); + + // if database is not the one currently using + // validate database + if (actualDBName != null) { + validateDatabase(actualDBName); + } + if (partSpec != null) { + validateTable(actualTableName, partSpec); } - // Handle xpath correctly - String actualTableName = tableName.substring(0, - tableName.indexOf('.') == -1 ? tableName.length() : tableName.indexOf('.')); - validateTable(actualTableName, partSpec); + DescTableDesc descTblDesc = new DescTableDesc( + ctx.getResFile(), actualTableName, partSpec, colPath); - DescTableDesc descTblDesc = new DescTableDesc(ctx.getResFile(), tableName, partSpec); if (ast.getChildCount() == 2) { int descOptions = ast.getChild(1).getType(); descTblDesc.setFormatted(descOptions == HiveParser.KW_FORMATTED); @@ -1708,7 +1926,8 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { ASTNode child = (ASTNode) ast.getChild(i); if (child.getType() == HiveParser.TOK_TABTYPE) { ASTNode tableTypeExpr = (ASTNode) child; - tableName = getFullyQualifiedName((ASTNode) tableTypeExpr.getChild(0)); + tableName = + QualifiedNameUtil.getFullyQualifiedName((ASTNode) tableTypeExpr.getChild(0)); // get partition metadata if partition specified if (tableTypeExpr.getChildCount() == 2) { ASTNode partspec = (ASTNode) tableTypeExpr.getChild(1); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g index e969fbe..ea1390a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g @@ -823,7 +823,7 @@ tabTypeExpr @init { msgs.push("specifying table types"); } @after { msgs.pop(); } - : Identifier (DOT^ (Identifier | KW_ELEM_TYPE | KW_KEY_TYPE | KW_VALUE_TYPE))* + : Identifier (DOT^ (Identifier | KW_ELEM_TYPE | KW_KEY_TYPE | KW_VALUE_TYPE))* Identifier? ; partTypeExpr diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/DescTableDesc.java ql/src/java/org/apache/hadoop/hive/ql/plan/DescTableDesc.java index ae6487d..f264c7a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/DescTableDesc.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/DescTableDesc.java @@ -38,6 +38,8 @@ public class DescTableDesc extends DDLDesc implements Serializable { String tableName; HashMap partSpec; String resFile; + + String colPath; boolean isExt; boolean isFormatted; /** @@ -58,12 +60,13 @@ public class DescTableDesc extends DDLDesc implements Serializable { * @param tableName */ public DescTableDesc(Path resFile, String tableName, - HashMap partSpec) { + HashMap partSpec, String colPath) { this.isExt = false; this.isFormatted = false; this.partSpec = partSpec; this.resFile = resFile.toString(); this.tableName = tableName; + this.colPath = colPath; } public String getTable() { @@ -121,6 +124,21 @@ public class DescTableDesc extends DDLDesc implements Serializable { } /** + * @param colPath + * the colPath to set + */ + public void setColPath(String colPath) { + this.colPath = colPath; + } + + /** + * @return the columnPath + */ + public String getColumnPath() { + return colPath; + } + + /** * @return the partSpec */ @Explain(displayName = "partition") diff --git ql/src/test/queries/clientpositive/describe_syntax.q ql/src/test/queries/clientpositive/describe_syntax.q new file mode 100644 index 0000000..dfd04a3 --- /dev/null +++ ql/src/test/queries/clientpositive/describe_syntax.q @@ -0,0 +1,80 @@ + +CREATE DATABASE db1; +CREATE TABLE db1.t1(key1 INT, value1 STRING) PARTITIONED BY (ds STRING, part STRING); +INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='3', part='3') SELECT * FROM src; +INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='4') SELECT * FROM src; +INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='5') SELECT * FROM src; + +use db1; + +-- describe table +DESCRIBE t1; + +-- describe database.table +DESCRIBE db1.t1; + +-- describe table column +DESCRIBE t1 key1; + +-- describe database.tabe column +DESCRIBE db1.t1 key1; + +-- describe table.column +DESCRIBE t1.key1; + +-- describe database.table.column +DESCRIBE db1.t1.key1; + +-- describe table partition +DESCRIBE t1 PARTITION(ds='4', part='5'); + +-- describe database.table partition +DESCRIBE db1.t1 PARTITION(ds='4', part='5'); + +-- describe extended table +DESCRIBE EXTENDED t1; + +-- describe extended database.table +DESCRIBE EXTENDED db1.t1; + +-- describe extended table column +DESCRIBE EXTENDED t1 key1; + +-- describe extended database.tabe column +DESCRIBE EXTENDED db1.t1 key1; + +-- describe extended table.column +DESCRIBE EXTENDED t1.key1; + +-- describe extended database.table.column +DESCRIBE EXTENDED db1.t1.key1; + +-- describe extended table partition +DESCRIBE EXTENDED t1 PARTITION(ds='4', part='5'); + +-- describe extended database.table partition +DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5'); + +-- describe formatted table +DESCRIBE FORMATTED t1; + +-- describe formatted database.table +DESCRIBE FORMATTED db1.t1; + +-- describe formatted table column +DESCRIBE FORMATTED t1 key1; + +-- describe formatted database.tabe column +DESCRIBE FORMATTED db1.t1 key1; + +-- describe formatted table.column +DESCRIBE FORMATTED t1.key1; + +-- describe formatted database.table.column +DESCRIBE FORMATTED db1.t1.key1; + +-- describe formatted table partition +DESCRIBE FORMATTED t1 PARTITION(ds='4', part='5'); + +-- describe formatted database.table partition +DESCRIBE FORMATTED db1.t1 PARTITION(ds='4', part='5'); diff --git ql/src/test/results/clientpositive/describe_syntax.q.out ql/src/test/results/clientpositive/describe_syntax.q.out new file mode 100644 index 0000000..e78e551 --- /dev/null +++ ql/src/test/results/clientpositive/describe_syntax.q.out @@ -0,0 +1,545 @@ +PREHOOK: query: CREATE DATABASE db1 +PREHOOK: type: CREATEDATABASE +POSTHOOK: query: CREATE DATABASE db1 +POSTHOOK: type: CREATEDATABASE +PREHOOK: query: CREATE TABLE db1.t1(key1 INT, value1 STRING) PARTITIONED BY (ds STRING, part STRING) +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE db1.t1(key1 INT, value1 STRING) PARTITIONED BY (ds STRING, part STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: db1@t1 +PREHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='3', part='3') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: db1@t1@ds=3/part=3 +POSTHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='3', part='3') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: db1@t1@ds=3/part=3 +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='4') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: db1@t1@ds=4/part=4 +POSTHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='4') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: db1@t1@ds=4/part=4 +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='5') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: db1@t1@ds=4/part=5 +POSTHOOK: query: INSERT OVERWRITE TABLE db1.t1 PARTITION (ds='4', part='5') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: db1@t1@ds=4/part=5 +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: use db1 +PREHOOK: type: SWITCHDATABASE +POSTHOOK: query: use db1 +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: -- describe table +DESCRIBE t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe table +DESCRIBE t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: -- describe database.table +DESCRIBE db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe database.table +DESCRIBE db1.t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: -- describe table column +DESCRIBE t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe table column +DESCRIBE t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe database.tabe column +DESCRIBE db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe database.tabe column +DESCRIBE db1.t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe table.column +DESCRIBE t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe table.column +DESCRIBE t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe database.table.column +DESCRIBE db1.t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe database.table.column +DESCRIBE db1.t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe table partition +DESCRIBE t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe table partition +DESCRIBE t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: -- describe database.table partition +DESCRIBE db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe database.table partition +DESCRIBE db1.t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: -- describe extended table +DESCRIBE EXTENDED t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended table +DESCRIBE EXTENDED t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: -- describe extended database.table +DESCRIBE EXTENDED db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended database.table +DESCRIBE EXTENDED db1.t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: -- describe extended table column +DESCRIBE EXTENDED t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended table column +DESCRIBE EXTENDED t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe extended database.tabe column +DESCRIBE EXTENDED db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended database.tabe column +DESCRIBE EXTENDED db1.t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe extended table.column +DESCRIBE EXTENDED t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended table.column +DESCRIBE EXTENDED t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe extended database.table.column +DESCRIBE EXTENDED db1.t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended database.table.column +DESCRIBE EXTENDED db1.t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: -- describe extended table partition +DESCRIBE EXTENDED t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended table partition +DESCRIBE EXTENDED t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: -- describe extended database.table partition +DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe extended database.table partition +DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: -- describe formatted table +DESCRIBE FORMATTED t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted table +DESCRIBE FORMATTED t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Table Information +Database: db1 +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 3 + numPartitions 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 +#### 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: -- describe formatted database.table +DESCRIBE FORMATTED db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted database.table +DESCRIBE FORMATTED db1.t1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Table Information +Database: db1 +#### A masked pattern was here #### +Protect Mode: None +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + numFiles 3 + numPartitions 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 +#### 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: -- describe formatted table column +DESCRIBE FORMATTED t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted table column +DESCRIBE FORMATTED t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int from deserializer +PREHOOK: query: -- describe formatted database.tabe column +DESCRIBE FORMATTED db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted database.tabe column +DESCRIBE FORMATTED db1.t1 key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int from deserializer +PREHOOK: query: -- describe formatted table.column +DESCRIBE FORMATTED t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted table.column +DESCRIBE FORMATTED t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int from deserializer +PREHOOK: query: -- describe formatted database.table.column +DESCRIBE FORMATTED db1.t1.key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted database.table.column +DESCRIBE FORMATTED db1.t1.key1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int from deserializer +PREHOOK: query: -- describe formatted table partition +DESCRIBE FORMATTED t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted table partition +DESCRIBE FORMATTED t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Partition Information +Partition Value: [4, 5] +Database: db1 +Table: t1 +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 +#### 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: -- describe formatted database.table partition +DESCRIBE FORMATTED db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: -- describe formatted database.table partition +DESCRIBE FORMATTED db1.t1 PARTITION(ds='4', part='5') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=3,part=3).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=4).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).key1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: t1 PARTITION(ds=4,part=5).value1 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int None +value1 string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Partition Information +Partition Value: [4, 5] +Database: db1 +Table: t1 +#### A masked pattern was here #### +Protect Mode: None +#### A masked pattern was here #### +Partition Parameters: + numFiles 1 + numRows 500 + rawDataSize 5312 + totalSize 5812 +#### 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