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..e110612 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,108 @@ 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 { + + /** + * 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; + } } - return getFullyQualifiedName((ASTNode) ast.getChild(0)) + "." - + getFullyQualifiedName((ASTNode) ast.getChild(1)); + // 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) { + String actualTableName = null; + String fullyQualifiedName = getFullyQualifiedName(ast); + + // if database.table or table.column + // first try the whole name as actualTableName + if (ast.getChildCount() == 2) { + actualTableName = fullyQualifiedName; + } else if (ast.getChildCount() == 3) { + // if database.table.column + // return database.table as actualTableName + actualTableName = fullyQualifiedName.substring(0, + fullyQualifiedName.lastIndexOf('.')); + } else { + // if table + // just return table as actualTableName + actualTableName = fullyQualifiedName.substring(0, + fullyQualifiedName.length()); + } + + try { + Table tab = db.getTable(actualTableName); + } catch (HiveException e) { + // if tableName is not valid + // it is table.column + // return table as actualTableName + actualTableName = fullyQualifiedName.substring(0, + fullyQualifiedName.indexOf('.')); + } + return actualTableName; + } + + // get column path + static public String getColPath(ASTNode ast, String tableName) { + if (ast.getChildCount() == 3) { + // if it is database.table.column + // return table.column as column path + return tableName.substring( + tableName.indexOf(".") + 1, tableName.length()); + } else { + // in other cases, column path is the same as tableName + return tableName; + } + } } /** @@ -1433,8 +1521,15 @@ 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)); + + 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))); + String colPath = + QualifiedNameUtil.getColPath((ASTNode) tableTypeExpr.getChild(0), tableName); HashMap partSpec = null; // get partition metadata if partition specified @@ -1443,12 +1538,16 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { partSpec = getPartSpec(partspec); } - // Handle xpath correctly - String actualTableName = tableName.substring(0, - tableName.indexOf('.') == -1 ? tableName.length() : tableName.indexOf('.')); + // if database is not the one currently using + // validate database + if (actualDBName != null) { + validateDatabase(actualDBName); + } validateTable(actualTableName, partSpec); - DescTableDesc descTblDesc = new DescTableDesc(ctx.getResFile(), tableName, partSpec); + DescTableDesc descTblDesc = new DescTableDesc( + ctx.getResFile(), actualTableName, partSpec, colPath); + if (ast.getChildCount() == 2) { int descOptions = ast.getChild(1).getType(); descTblDesc.setFormatted(descOptions == HiveParser.KW_FORMATTED); @@ -1708,7 +1807,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..da344bf --- /dev/null +++ ql/src/test/queries/clientpositive/describe_syntax.q @@ -0,0 +1,35 @@ + +CREATE TABLE test(key INT, value STRING) PARTITIONED BY (ds STRING, part STRING); +INSERT OVERWRITE TABLE test PARTITION (ds='1', part='1') SELECT * FROM src; +INSERT OVERWRITE TABLE test PARTITION (ds='2', part='1') SELECT * FROM src; +INSERT OVERWRITE TABLE test PARTITION (ds='2', part='2') SELECT * FROM src; + +DESCRIBE test; +DESCRIBE test.key; +DESCRIBE test PARTITION(ds='2', part='1'); + +DESCRIBE EXTENDED test; +DESCRIBE EXTENDED test.key; +DESCRIBE EXTENDED test PARTITION(ds='2', part='1'); + +DESCRIBE FORMATTED test; +DESCRIBE FORMATTED test.key; +DESCRIBE FORMATTED test PARTITION(ds='2', part='1'); + +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; + +DESCRIBE db1.t1; +DESCRIBE db1.t1 key1; +DESCRIBE db1.t1 PARTITION(ds='4', part='5'); + +DESCRIBE EXTENDED db1.t1; +DESCRIBE EXTENDED db1.t1 key1; +DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5'); + +DESCRIBE FORMATTED db1.t1; +DESCRIBE FORMATTED db1.t1 key1; +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..5c7e508 --- /dev/null +++ ql/src/test/results/clientpositive/describe_syntax.q.out @@ -0,0 +1,542 @@ +PREHOOK: query: CREATE TABLE test(key INT, value STRING) PARTITIONED BY (ds STRING, part STRING) +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE test(key INT, value STRING) PARTITIONED BY (ds STRING, part STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@test +PREHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='1', part='1') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@test@ds=1/part=1 +POSTHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='1', part='1') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@test@ds=1/part=1 +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='2', part='1') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@test@ds=2/part=1 +POSTHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='2', part='1') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@test@ds=2/part=1 +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='2', part='2') SELECT * FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@test@ds=2/part=2 +POSTHOOK: query: INSERT OVERWRITE TABLE test PARTITION (ds='2', part='2') SELECT * FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@test@ds=2/part=2 +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: DESCRIBE test +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE test +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +ds string +part string +PREHOOK: query: DESCRIBE test.key +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE test.key +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int from deserializer +PREHOOK: query: DESCRIBE test PARTITION(ds='2', part='1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE test PARTITION(ds='2', part='1') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +ds string +part string +PREHOOK: query: DESCRIBE EXTENDED test +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE EXTENDED test +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: DESCRIBE EXTENDED test.key +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE EXTENDED test.key +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int from deserializer +PREHOOK: query: DESCRIBE EXTENDED test PARTITION(ds='2', part='1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE EXTENDED test PARTITION(ds='2', part='1') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +ds string +part string + +#### A masked pattern was here #### +PREHOOK: query: DESCRIBE FORMATTED test +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED test +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Table Information +Database: default +#### 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 test.key +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED test.key +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key int from deserializer +PREHOOK: query: DESCRIBE FORMATTED test PARTITION(ds='2', part='1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED test PARTITION(ds='2', part='1') +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key int None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +part string None + +# Detailed Partition Information +Partition Value: [2, 1] +Database: default +Table: test +#### 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: CREATE DATABASE db1 +PREHOOK: type: CREATEDATABASE +POSTHOOK: query: CREATE DATABASE db1 +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +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 +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: DESCRIBE db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: DESCRIBE db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: DESCRIBE db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int +value1 string +ds string +part string +PREHOOK: query: DESCRIBE EXTENDED db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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 db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key1 int from deserializer +PREHOOK: query: DESCRIBE EXTENDED db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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 db1.t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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 db1.t1 key1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key1 int from deserializer +PREHOOK: query: DESCRIBE FORMATTED db1.t1 PARTITION(ds='4', part='5') +PREHOOK: type: DESCTABLE +POSTHOOK: query: 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), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=1,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: test PARTITION(ds=2,part=2).value 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