[ 
https://issues.apache.org/jira/browse/HIVE-14146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15400036#comment-15400036
 ] 

Peter Vary commented on HIVE-14146:
-----------------------------------

[~aihuaxu] Checked, and found the following:
- Beeline - when using "describe pretty" the \n is padded and displayed - this 
is as intended - the original behavior is not changed
- Cli - when using "describe pretty" the \n is padded and displayed - this is 
as intended - the original behavior is not changed

What I have missed, that in Cli when using "describe formatted" the following 
code sets the output to padded:
{noformat}
package org.apache.hadoop.hive.ql.exec;
[..]
public class DDLTask extends Task<DDLWork> implements Serializable {
[..]
  private int describeTable(Hive db, DescTableDesc descTbl) throws 
HiveException {
[..]
      // In case the query is served by HiveServer2, don't pad it with spaces,
      // as HiveServer2 output is consumed by JDBC/ODBC clients.
      boolean isOutputPadded = !SessionState.get().isHiveServerQuery();
{noformat}
So the column comments are printed as a formatted strings with new lines - but 
not the table comment. (same as in pretty mode)

What do you think we should do here?
I personally would prefer to remove this code below (pretty comment 
formatting), so every comment should be handled in the same way (printing \n 
instead of newline):
{noformat}
package org.apache.hadoop.hive.ql.metadata.formatting;
[..]
public final class MetaDataFormatUtils {
[..]
  private static void formatWithIndentation(String colName, String colType, 
String colComment,
[..]
    // 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
    String[] commentSegments = colComment.split("\n|\r|\r\n");
    tableInfo.append(String.format("%-" + ALIGNMENT + "s", 
commentSegments[0])).append(LINE_DELIM);
    int colNameLength = ALIGNMENT > colName.length() ? ALIGNMENT : 
colName.length();
    int colTypeLength = ALIGNMENT > colType.length() ? ALIGNMENT : 
colType.length();
    for (int i = 1; i < commentSegments.length; i++) {
      tableInfo.append(String.format("%" + colNameLength + "s" + FIELD_DELIM + 
"%"
          + colTypeLength + "s" + FIELD_DELIM + "%s", "", "", 
commentSegments[i])).append(LINE_DELIM);
    }
{noformat}

> Column comments with "\n" character "corrupts" table metadata
> -------------------------------------------------------------
>
>                 Key: HIVE-14146
>                 URL: https://issues.apache.org/jira/browse/HIVE-14146
>             Project: Hive
>          Issue Type: Bug
>          Components: Beeline
>    Affects Versions: 2.2.0
>            Reporter: Peter Vary
>            Assignee: Peter Vary
>         Attachments: HIVE-14146.2.patch, HIVE-14146.3.patch, 
> HIVE-14146.4.patch, HIVE-14146.5.patch, HIVE-14146.6.patch, HIVE-14146.patch
>
>
> Create a table with the following(noting the \n in the COMMENT):
> {noformat}
> CREATE TABLE commtest(first_nm string COMMENT 'Indicates First name\nof an 
> individual’);
> {noformat}
> Describe shows that now the metadata is messed up:
> {noformat}
> beeline> describe commtest;
> +-------------------+------------+-----------------------+--+
> |     col_name      | data_type  |        comment        |
> +-------------------+------------+-----------------------+--+
> | first_nm             | string       | Indicates First name  |
> | of an individual  | NULL       | NULL                  |
> +-------------------+------------+-----------------------+--+
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to