hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Vary (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-14146) Column comments with "\n" character "corrupts" table metadata
Date Fri, 29 Jul 2016 21:34:20 GMT

    [ 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)

Mime
View raw message