You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/09/28 03:10:47 UTC

[27/33] hive git commit: HIVE-11779 Beeline-cli: Format the output of describe pretty table command in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)

HIVE-11779 Beeline-cli: Format the output of describe pretty table command in new CLI[beeline-cli branch](Ke Jia, reviewed by Ferdinand Xu)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4a91efc3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4a91efc3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4a91efc3

Branch: refs/heads/master
Commit: 4a91efc3c4b0d05b8f333049e0b0e0c1a5517bc3
Parents: 6e3b173
Author: Jia Ke <ke...@intel.com>
Authored: Thu Sep 17 01:50:13 2015 -0400
Committer: Ferdinand Xu <ch...@intel.com>
Committed: Thu Sep 17 01:50:13 2015 -0400

----------------------------------------------------------------------
 .../formatting/MetaDataPrettyFormatUtils.java   |  24 +-
 .../clientpositive/describe_pretty.q.out        | 366 +++++++++----------
 2 files changed, 199 insertions(+), 191 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/4a91efc3/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
index 8f939e6..c653252 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataPrettyFormatUtils.java
@@ -89,7 +89,8 @@ public final class MetaDataPrettyFormatUtils {
     String columnHeaders[] = MetaDataFormatUtils.getColumnsHeader(null);
     formatOutputPretty(columnHeaders[0], columnHeaders[1], columnHeaders[2],
                         columnInformation, maxColNameLen, prettyOutputNumCols);
-    columnInformation.append(MetaDataFormatUtils.LINE_DELIM);
+    columnInformation.append(MetaDataFormatUtils.FIELD_DELIM)
+        .append(MetaDataFormatUtils.FIELD_DELIM).append(MetaDataFormatUtils.LINE_DELIM);
   }
 
   private static void formatAllFieldsPretty(StringBuilder tableInfo,
@@ -202,6 +203,7 @@ public final class MetaDataPrettyFormatUtils {
     String delim = StringUtils.repeat(" ", delimCount);
     sb.append(paddedText);
     sb.append(delim);
+    sb.append(MetaDataFormatUtils.FIELD_DELIM);
 
     return paddedText.length() + delim.length();
   }
@@ -209,23 +211,29 @@ public final class MetaDataPrettyFormatUtils {
   private static void formatOutputPretty(String colName, String colType,
       String colComment, StringBuilder tableInfo, int maxColNameLength,
       int prettyOutputNumCols) {
-    int colsConsumed = 0;
-    colsConsumed += appendFormattedColumn(tableInfo, colName, maxColNameLength + 1);
-    colsConsumed += appendFormattedColumn(tableInfo, colType, PRETTY_ALIGNMENT);
+    int colsNameConsumed = appendFormattedColumn(tableInfo, colName, maxColNameLength + 1);
+    int colsTypeConsumed =appendFormattedColumn(tableInfo, colType, PRETTY_ALIGNMENT);
 
-    colComment = breakCommentIntoMultipleLines(colComment, colsConsumed, prettyOutputNumCols);
+    colComment = breakCommentIntoMultipleLines(colComment, colsNameConsumed + colsTypeConsumed,
+        prettyOutputNumCols);
 
     /* Comment indent processing for multi-line comments.
      * Comments should be indented the same amount on each line
      * if the first line comment starts indented by k,
-     * the following line comments should also be indented by k.
+     * the following line comments should also be indented by k
+     * The following line comments will as a new line,so we need to
+     * add colsNameConsumed spaces as the first column and
+     * colsTypeConsumed spaces as the second column and the
+     * comment as the last column.we use two FIELD_DELIM to
+     * split them.
      */
     String[] commentSegments = colComment.split("\n|\r|\r\n");
     tableInfo.append(trimTrailingWS(commentSegments[0]));
     tableInfo.append(MetaDataFormatUtils.LINE_DELIM);
     for (int i = 1; i < commentSegments.length; i++) {
-      tableInfo.append(StringUtils.repeat(" ", colsConsumed));
-      tableInfo.append(trimTrailingWS(commentSegments[i]));
+      tableInfo.append(String.format(
+          "%" + colsNameConsumed + "s" + MetaDataFormatUtils.FIELD_DELIM + "%" + colsTypeConsumed
+              + "s" + MetaDataFormatUtils.FIELD_DELIM + "%s", "", "", commentSegments[i]));
       tableInfo.append(MetaDataFormatUtils.LINE_DELIM);
     }
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/4a91efc3/ql/src/test/results/clientpositive/describe_pretty.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/describe_pretty.q.out b/ql/src/test/results/clientpositive/describe_pretty.q.out
index 1c05e0d..279f567 100644
--- a/ql/src/test/results/clientpositive/describe_pretty.q.out
+++ b/ql/src/test/results/clientpositive/describe_pretty.q.out
@@ -72,136 +72,136 @@ POSTHOOK: query: -- There will be an extra tab at the end of each comment line i
 DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that is greater than 80	 	 
-                                 chars and is likely to spill into multiple	 	 
-                                 lines	 	 
-col5               string        col5 very long multi-line comment where each	 	 
-                                 line is very long by itself and is likely to	 	 
-                                 spill	 	 
-                                 into multiple lines.  Lorem ipsum dolor sit	 	 
-                                 amet, consectetur adipiscing elit. Proin in	 	 
-                                 dolor nisl, sodales	 	 
-                                 adipiscing tortor. Integer venenatis	 	 
-col6               string        This comment has a very long single word ABCDEF	 	 
-                                 GHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz12	 	 
-                                 3 which will not fit in a line by itself for	 	 
-                                 small column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that is greater than 80
+                   	              	chars and is likely to spill into multiple 
+                   	              	lines
+col5               	string        	col5 very long multi-line comment where each
+                   	              	line is very long by itself and is likely to 
+                   	              	spill
+                   	              	into multiple lines.  Lorem ipsum dolor sit 
+                   	              	amet, consectetur adipiscing elit. Proin in 
+                   	              	dolor nisl, sodales
+                   	              	adipiscing tortor. Integer venenatis
+col6               	string        	This comment has a very long single word ABCDEF
+                   	              	GHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz12
+                   	              	3 which will not fit in a line by itself for 
+                   	              	small column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines	 	 
-col5               string        col5 very long multi-line comment where each line is very long by itself and is likely to spill	 	 
-                                 into multiple lines.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales	 	 
-                                 adipiscing tortor. Integer venenatis	 	 
-col6               string        This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that is greater than 80 chars and is likely to spill into multiple lines
+col5               	string        	col5 very long multi-line comment where each line is very long by itself and is likely to spill
+                   	              	into multiple lines.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin in dolor nisl, sodales
+                   	              	adipiscing tortor. Integer venenatis
+col6               	string        	This comment has a very long single word ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvzxyz123 which will not fit in a line by itself for small column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line	 	 
-                                 comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long	 	 
-                                 comment that is	 	 
-                                 greater than 80	 	 
-                                 chars and is	 	 
-                                 likely to spill	 	 
-                                 into multiple	 	 
-                                 lines	 	 
-col5               string        col5 very long	 	 
-                                 multi-line	 	 
-                                 comment where	 	 
-                                 each line is very	 	 
-                                 long by itself	 	 
-                                 and is likely to	 	 
-                                 spill	 	 
-                                 into multiple	 	 
-                                 lines.  Lorem	 	 
-                                 ipsum dolor sit	 	 
-                                 amet, consectetur	 	 
-                                 adipiscing elit.	 	 
-                                 Proin in dolor	 	 
-                                 nisl, sodales	 	 
-                                 adipiscing	 	 
-                                 tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has	 	 
-                                 a very long	 	 
-                                 single word ABCDE	 	 
-                                 FGHIJKLMNOPQRSTUV	 	 
-                                 XYZabcdefghijklmn	 	 
-                                 opqrstuvzxyz123	 	 
-                                 which will not	 	 
-                                 fit in a line by	 	 
-                                 itself for small	 	 
-                                 column widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line
+                   	              	comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long
+                   	              	comment that is 
+                   	              	greater than 80 
+                   	              	chars and is 
+                   	              	likely to spill 
+                   	              	into multiple 
+                   	              	lines
+col5               	string        	col5 very long
+                   	              	multi-line 
+                   	              	comment where 
+                   	              	each line is very
+                   	              	long by itself 
+                   	              	and is likely to 
+                   	              	spill
+                   	              	into multiple 
+                   	              	lines.  Lorem 
+                   	              	ipsum dolor sit 
+                   	              	amet, consectetur
+                   	              	adipiscing elit. 
+                   	              	Proin in dolor 
+                   	              	nisl, sodales
+                   	              	adipiscing 
+                   	              	tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has
+                   	              	a very long 
+                   	              	single word ABCDE
+                   	              	FGHIJKLMNOPQRSTUV
+                   	              	XYZabcdefghijklmn
+                   	              	opqrstuvzxyz123 
+                   	              	which will not 
+                   	              	fit in a line by 
+                   	              	itself for small 
+                   	              	column widths.
+col7_nocomment     	string        	
 PREHOOK: query: DESCRIBE PRETTY test_table
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table
 POSTHOOK: query: DESCRIBE PRETTY test_table
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that	 	 
-                                 is greater than 80 chars	 	 
-                                 and is likely to spill into	 	 
-                                 multiple lines	 	 
-col5               string        col5 very long multi-line	 	 
-                                 comment where each line is	 	 
-                                 very long by itself and is	 	 
-                                 likely to spill	 	 
-                                 into multiple lines.  Lorem	 	 
-                                 ipsum dolor sit amet,	 	 
-                                 consectetur adipiscing	 	 
-                                 elit. Proin in dolor nisl,	 	 
-                                 sodales	 	 
-                                 adipiscing tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has a very	 	 
-                                 long single word ABCDEFGHIJ	 	 
-                                 KLMNOPQRSTUVXYZabcdefghijkl	 	 
-                                 mnopqrstuvzxyz123 which	 	 
-                                 will not fit in a line by	 	 
-                                 itself for small column	 	 
-                                 widths.	 	 
-col7_nocomment     string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that
+                   	              	is greater than 80 chars 
+                   	              	and is likely to spill into
+                   	              	multiple lines
+col5               	string        	col5 very long multi-line
+                   	              	comment where each line is 
+                   	              	very long by itself and is 
+                   	              	likely to spill
+                   	              	into multiple lines.  Lorem
+                   	              	ipsum dolor sit amet, 
+                   	              	consectetur adipiscing 
+                   	              	elit. Proin in dolor nisl, 
+                   	              	sodales
+                   	              	adipiscing tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has a very
+                   	              	long single word ABCDEFGHIJ
+                   	              	KLMNOPQRSTUVXYZabcdefghijkl
+                   	              	mnopqrstuvzxyz123 which 
+                   	              	will not fit in a line by 
+                   	              	itself for small column 
+                   	              	widths.
+col7_nocomment     	string        	
 PREHOOK: query: CREATE TABLE test_table_very_long_column_name(
     col1 INT COMMENT 'col1 one line comment',
     col2_abcdefghiklmnopqrstuvxyz STRING COMMENT 'col2
@@ -230,48 +230,48 @@ PREHOOK: Input: default@test_table_very_long_column_name
 POSTHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_very_long_column_name
-col_name                          data_type     comment	 	 
-	 	 
-col1                              int           col1 one line comment	 	 
-col2_abcdefghiklmnopqrstuvxyz     string        col2	 	 
-                                                two lines comment	 	 
-col3                              string        col3	 	 
-                                                three lines	 	 
-                                                comment	 	 
-col4                              string        col4 very long comment that is	 	 
-                                                greater than 80 chars and is	 	 
-                                                likely to spill into multiple	 	 
-                                                lines	 	 
+col_name                          	data_type     	comment
+		
+col1                              	int           	col1 one line comment
+col2_abcdefghiklmnopqrstuvxyz     	string        	col2
+                                  	              	two lines comment
+col3                              	string        	col3
+                                  	              	three lines
+                                  	              	comment
+col4                              	string        	col4 very long comment that is
+                                  	              	greater than 80 chars and is 
+                                  	              	likely to spill into multiple 
+                                  	              	lines
 PREHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table_very_long_column_name
 POSTHOOK: query: DESCRIBE PRETTY test_table_very_long_column_name
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_very_long_column_name
-col_name                          data_type     comment	 	 
-	 	 
-col1                              int           col1 one	 	 
-                                                line	 	 
-                                                comment	 	 
-col2_abcdefghiklmnopqrstuvxyz     string        col2	 	 
-                                                two lines	 	 
-                                                comment	 	 
-col3                              string        col3	 	 
-                                                three	 	 
-                                                lines	 	 
-                                                comment	 	 
-col4                              string        col4 very	 	 
-                                                long	 	 
-                                                comment	 	 
-                                                that is	 	 
-                                                greater	 	 
-                                                than 80	 	 
-                                                chars and	 	 
-                                                is likely	 	 
-                                                to spill	 	 
-                                                into	 	 
-                                                multiple	 	 
-                                                lines	 	 
+col_name                          	data_type     	comment
+		
+col1                              	int           	col1 one
+                                  	              	line 
+                                  	              	comment
+col2_abcdefghiklmnopqrstuvxyz     	string        	col2
+                                  	              	two lines 
+                                  	              	comment
+col3                              	string        	col3
+                                  	              	three 
+                                  	              	lines
+                                  	              	comment
+col4                              	string        	col4 very
+                                  	              	long 
+                                  	              	comment 
+                                  	              	that is 
+                                  	              	greater 
+                                  	              	than 80 
+                                  	              	chars and 
+                                  	              	is likely 
+                                  	              	to spill 
+                                  	              	into 
+                                  	              	multiple 
+                                  	              	lines
 PREHOOK: query: CREATE TABLE test_table_partitioned(
     col1 INT COMMENT 'col1 one line comment',
     col2 STRING COMMENT 'col2
@@ -316,40 +316,40 @@ PREHOOK: Input: default@test_table_partitioned
 POSTHOOK: query: DESCRIBE PRETTY test_table_partitioned
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@test_table_partitioned
-col_name           data_type     comment	 	 
-	 	 
-col1               int           col1 one line comment	 	 
-col2               string        col2	 	 
-                                 two lines comment	 	 
-col3               string        col3	 	 
-                                 three lines	 	 
-                                 comment	 	 
-col4               string        col4 very long comment that	 	 
-                                 is greater than 80 chars	 	 
-                                 and is likely to spill into	 	 
-                                 multiple lines	 	 
-col5               string        col5 very long multi-line	 	 
-                                 comment where each line is	 	 
-                                 very long by itself and is	 	 
-                                 likely to spill	 	 
-                                 into multiple lines.  Lorem	 	 
-                                 ipsum dolor sit amet,	 	 
-                                 consectetur adipiscing	 	 
-                                 elit. Proin in dolor nisl,	 	 
-                                 sodales	 	 
-                                 adipiscing tortor. Integer	 	 
-                                 venenatis	 	 
-col6               string        This comment has a very	 	 
-                                 long single word ABCDEFGHIJ	 	 
-                                 KLMNOPQRSTUVXYZabcdefghijkl	 	 
-                                 mnopqrstuvzxyz123 which	 	 
-                                 will not fit in a line by	 	 
-                                 itself for small column	 	 
-                                 widths.	 	 
-col7_nocomment     string        	 	 
-ds                 string        	 	 
+col_name           	data_type     	comment
+		
+col1               	int           	col1 one line comment
+col2               	string        	col2
+                   	              	two lines comment
+col3               	string        	col3
+                   	              	three lines
+                   	              	comment
+col4               	string        	col4 very long comment that
+                   	              	is greater than 80 chars 
+                   	              	and is likely to spill into
+                   	              	multiple lines
+col5               	string        	col5 very long multi-line
+                   	              	comment where each line is 
+                   	              	very long by itself and is 
+                   	              	likely to spill
+                   	              	into multiple lines.  Lorem
+                   	              	ipsum dolor sit amet, 
+                   	              	consectetur adipiscing 
+                   	              	elit. Proin in dolor nisl, 
+                   	              	sodales
+                   	              	adipiscing tortor. Integer 
+                   	              	venenatis
+col6               	string        	This comment has a very
+                   	              	long single word ABCDEFGHIJ
+                   	              	KLMNOPQRSTUVXYZabcdefghijkl
+                   	              	mnopqrstuvzxyz123 which 
+                   	              	will not fit in a line by 
+                   	              	itself for small column 
+                   	              	widths.
+col7_nocomment     	string        	
+ds                 	string        	
 	 	 
 # Partition Information	 	 
-col_name           data_type     comment	 	 
-	 	 
-ds                 string        	 	 
+col_name           	data_type     	comment
+		
+ds                 	string