Index: conf/hive-default.xml.template =================================================================== --- conf/hive-default.xml.template (revision 1579881) +++ conf/hive-default.xml.template (working copy) @@ -1876,6 +1876,17 @@ + hive.display.partition.cols.separately + true + + In older Hive version (0.10 and earlier) no distinction was made between + partition columns or non-partition columns while displaying columns in describe + table. From 0.12 onwards, they are displayed separately. This flag will let you + get old behavior, if desired. See, test-case in patch for HIVE-6689. + + + + hive.transform.escape.input false Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 1579881) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -839,7 +839,7 @@ HIVE_DRIVER_RUN_HOOKS("hive.exec.driver.run.hooks", ""), HIVE_DDL_OUTPUT_FORMAT("hive.ddl.output.format", null), HIVE_ENTITY_SEPARATOR("hive.entity.separator", "@"), - + HIVE_DISPLAY_PARTITION_COLUMNS_SEPARATELY("hive.display.partition.cols.separately",true), HIVE_SERVER2_MAX_START_ATTEMPTS("hive.server2.max.start.attempts", 30L, new LongRangeValidator(0L, Long.MAX_VALUE)), Index: ql/src/test/results/clientpositive/desc_tbl_part_cols.q.out =================================================================== --- ql/src/test/results/clientpositive/desc_tbl_part_cols.q.out (revision 0) +++ ql/src/test/results/clientpositive/desc_tbl_part_cols.q.out (revision 0) @@ -0,0 +1,29 @@ +PREHOOK: query: create table t1 (a int, b string) partitioned by (c int, d string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +POSTHOOK: query: create table t1 (a int, b string) partitioned by (c int, d string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t1 +PREHOOK: query: describe t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe t1 +POSTHOOK: type: DESCTABLE +a int +b string +c int +d string + +# Partition Information +# col_name data_type comment + +c int +d string +PREHOOK: query: describe t1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe t1 +POSTHOOK: type: DESCTABLE +a int +b string +c int +d string Index: ql/src/test/queries/clientpositive/desc_tbl_part_cols.q =================================================================== --- ql/src/test/queries/clientpositive/desc_tbl_part_cols.q (revision 0) +++ ql/src/test/queries/clientpositive/desc_tbl_part_cols.q (revision 0) @@ -0,0 +1,7 @@ +create table t1 (a int, b string) partitioned by (c int, d string); +describe t1; + +set hive.display.partition.cols.separately=false; +describe t1; + +set hive.display.partition.cols.separately=true; Index: ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java (revision 1579881) +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java (working copy) @@ -57,9 +57,11 @@ * If -1, then the current terminal width is auto-detected and used. */ private final int prettyOutputNumCols; + private final boolean showPartColsSeparately; - public TextMetaDataFormatter(int prettyOutputNumCols) { + public TextMetaDataFormatter(int prettyOutputNumCols, boolean partColsSeparately) { this.prettyOutputNumCols = prettyOutputNumCols; + this.showPartColsSeparately = partColsSeparately; } /** @@ -123,7 +125,7 @@ MetaDataPrettyFormatUtils.getAllColumnsInformation( cols, partCols, prettyOutputNumCols) : - MetaDataFormatUtils.getAllColumnsInformation(cols, partCols, isFormatted, isOutputPadded); + MetaDataFormatUtils.getAllColumnsInformation(cols, partCols, isFormatted, isOutputPadded, showPartColsSeparately); } else { output = MetaDataFormatUtils.getAllColumnsInformation(cols, isFormatted, isOutputPadded); } Index: ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java (revision 1579881) +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java (working copy) @@ -29,6 +29,7 @@ import org.apache.commons.lang.StringEscapeUtils; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.Index; @@ -92,14 +93,14 @@ * @return string with formatted column information */ public static String getAllColumnsInformation(List cols, - List partCols, boolean printHeader, boolean isOutputPadded) { + List partCols, boolean printHeader, boolean isOutputPadded, boolean showPartColsSep) { StringBuilder columnInformation = new StringBuilder(DEFAULT_STRINGBUILDER_SIZE); if(printHeader){ formatColumnsHeader(columnInformation); } formatAllFields(columnInformation, cols, isOutputPadded); - if ((partCols != null) && (!partCols.isEmpty())) { + if ((partCols != null) && !partCols.isEmpty() && showPartColsSep) { columnInformation.append(LINE_DELIM).append("# Partition Information") .append(LINE_DELIM); formatColumnsHeader(columnInformation); @@ -371,7 +372,7 @@ if ("json".equals(conf.get(HiveConf.ConfVars.HIVE_DDL_OUTPUT_FORMAT.varname, "text"))) { return new JsonMetaDataFormatter(); } else { - return new TextMetaDataFormatter(conf.getIntVar(HiveConf.ConfVars.CLIPRETTYOUTPUTNUMCOLS)); + return new TextMetaDataFormatter(conf.getIntVar(HiveConf.ConfVars.CLIPRETTYOUTPUTNUMCOLS), conf.getBoolVar(ConfVars.HIVE_DISPLAY_PARTITION_COLUMNS_SEPARATELY)); } } }