diff --git common/src/java/org/apache/hadoop/hive/conf/HiveConf.java common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 2693663..ebd9547 100644 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -629,6 +629,12 @@ public class HiveConf extends Configuration { * This will be removed once the rest of the DML changes are committed. */ HIVE_INTERNAL_DDL_LIST_BUCKETING_ENABLE("hive.internal.ddl.list.bucketing.enable", false), + + /** + * Enable Standard Syntax in Hive Describe Command. + * Default value is false so that we use the hive syntax for describe command. + */ + HIVE_DESCRIBE_STANDARD_SYNTAX("hive.describe.standard.syntax", false), ; public final String varname; 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..ad69982 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,83 @@ 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(ASTNode ast, boolean isStandardSyntax) { + String fullyQualifiedName = getFullyQualifiedName(ast); + // if using standard syntax: + // DESCRIBE [EXTENDED] [database DOT]table [column] + // return database + if (isStandardSyntax == true) { + return fullyQualifiedName.substring(0, + fullyQualifiedName.indexOf('.') == -1 ? + fullyQualifiedName.length() : + fullyQualifiedName.indexOf('.')); + } else { + // in other cases, return null + // database is not validated if null + return null; + } + } + + // get Table Name + static public String getActualTableName(ASTNode ast, boolean isStandardSyntax) { + String fullyQualifiedName = getFullyQualifiedName(ast); + // if: DESCRIBE [EXTENDED] [database DOT]table [column] + if (isStandardSyntax == true) { + // if: DESCRIBE database DOT table + // return: database DOT table + if (ast.getChildCount() == 2) { + return fullyQualifiedName; + } else if (ast.getChildCount() == 3) { + // if: DESCRIBE database DOT table DOT column + // return: database DOT table + return fullyQualifiedName.substring(0, + fullyQualifiedName.lastIndexOf('.')); + } + } + // if: DESCRIBE [EXTENDED] table[DOT col_name] + // return: table + return fullyQualifiedName.substring(0, + fullyQualifiedName.indexOf('.') == -1 ? + fullyQualifiedName.length() : + fullyQualifiedName.indexOf('.')); + } + + // is it qualifiedColumn? + // database DOT table DOT column + static public boolean getIsQualifiedColumn(ASTNode ast, boolean isStandardSyntax) { + if (isStandardSyntax == true && ast.getChildCount() == 3) { + return true; + } + return false; + } } /** @@ -1433,8 +1496,14 @@ 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)); + boolean isStandardSyntax = + HiveConf.getBoolVar(conf, ConfVars.HIVE_DESCRIBE_STANDARD_SYNTAX); + String tableName = + QualifiedNameUtil.getFullyQualifiedName((ASTNode) tableTypeExpr.getChild(0)); + String actualTableName = + QualifiedNameUtil.getActualTableName((ASTNode) tableTypeExpr.getChild(0), isStandardSyntax); + String actualDBName = + QualifiedNameUtil.getActualDBName((ASTNode) tableTypeExpr.getChild(0), isStandardSyntax); HashMap partSpec = null; // get partition metadata if partition specified @@ -1443,12 +1512,17 @@ 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(), tableName, partSpec, isStandardSyntax, + QualifiedNameUtil.getIsQualifiedColumn( + (ASTNode) tableTypeExpr.getChild(0), isStandardSyntax)); if (ast.getChildCount() == 2) { int descOptions = ast.getChild(1).getType(); descTblDesc.setFormatted(descOptions == HiveParser.KW_FORMATTED); @@ -1708,7 +1782,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..10a20c7 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,19 @@ public class DescTableDesc extends DDLDesc implements Serializable { String tableName; HashMap partSpec; String resFile; + + // if the Describe Table/Column is following standard syntax + // true if: + // DESCRIBE [EXTENDED] [database DOT]table [column] + // false if it is following hive syntax: + // DESCRIBE [EXTENDED] table[DOT col_name] + boolean isStandardSyntax = false; + + // true if it is: + // DESCRIBE database DOT table DOT column + // false if not + boolean isQualifiedColumn = false; + boolean isExt; boolean isFormatted; /** @@ -58,12 +71,14 @@ public class DescTableDesc extends DDLDesc implements Serializable { * @param tableName */ public DescTableDesc(Path resFile, String tableName, - HashMap partSpec) { + HashMap partSpec, boolean isStandardSyntax, boolean isQualifiedColumn) { this.isExt = false; this.isFormatted = false; this.partSpec = partSpec; this.resFile = resFile.toString(); this.tableName = tableName; + this.isStandardSyntax = isStandardSyntax; + this.isQualifiedColumn = isQualifiedColumn; } public String getTable() { @@ -75,6 +90,36 @@ public class DescTableDesc extends DDLDesc implements Serializable { } /** + * @return the isStandardSyntax + */ + public boolean isStandardSyntax() { + return isStandardSyntax; + } + + /** + * @param isStandardSyntax + * the isStandardSyntax to set + */ + public void setStandardSyntax(boolean isStandardSyntax) { + this.isStandardSyntax = isStandardSyntax; + } + + /** + * @return the isQualifiedColumn + */ + public boolean isQualifiedColumn() { + return isQualifiedColumn; + } + + /** + * @param isQualifiedColumn + * the isQualifiedColumn to set + */ + public void setQualifiedColumn(boolean isQualifiedColumn) { + this.isQualifiedColumn = isQualifiedColumn; + } + + /** * @return the isExt */ public boolean isExt() { @@ -109,7 +154,21 @@ public class DescTableDesc extends DDLDesc implements Serializable { */ @Explain(displayName = "table") public String getTableName() { - return tableName; + if (isStandardSyntax == true) { + // if: DESCRIBE database DOT table DOT column + // return database DOT table + if (isQualifiedColumn == true) { + return tableName.substring(0, tableName.lastIndexOf('.')); + } else { + // if: DESCRIBE database DOT table + // return database DOT table + return tableName; + } + } + // if DESCRIBE table[DOT column] + // return table + return tableName.substring(0, tableName.indexOf('.') == -1 ? + tableName.length() : tableName.indexOf('.')); } /** @@ -121,6 +180,21 @@ public class DescTableDesc extends DDLDesc implements Serializable { } /** + * @return the columnPath + */ + public String getColumnPath() { + // if: DESCRIBE database DOT table DOT column + // return table DOT column + if (isQualifiedColumn == true) { + return tableName.substring(tableName.indexOf(".") + 1, + tableName.length()); + } + // if not: DESCRIBE database DOT table DOT column + // return tableName + return tableName; + } + + /** * @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..2e31b1c --- /dev/null +++ ql/src/test/queries/clientpositive/describe_syntax.q @@ -0,0 +1,38 @@ +set hive.describe.standard.syntax=false; + +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'); + +set hive.describe.standard.syntax=true; + +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