You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@livy.apache.org by "Marco Gaido (Jira)" <ji...@apache.org> on 2020/05/20 17:40:00 UTC

[jira] [Resolved] (LIVY-754) precision and scale are not encoded in decimal type

     [ https://issues.apache.org/jira/browse/LIVY-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marco Gaido resolved LIVY-754.
------------------------------
    Fix Version/s: 0.8.0
         Assignee: Wing Yew Poon
       Resolution: Fixed

Issue resolved by PR: https://github.com/apache/incubator-livy/pull/288.

> precision and scale are not encoded in decimal type
> ---------------------------------------------------
>
>                 Key: LIVY-754
>                 URL: https://issues.apache.org/jira/browse/LIVY-754
>             Project: Livy
>          Issue Type: Bug
>          Components: Thriftserver
>    Affects Versions: 0.7.0
>            Reporter: Wing Yew Poon
>            Assignee: Wing Yew Poon
>            Priority: Major
>             Fix For: 0.8.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> The Livy Thrift server support for decimal type in 0.7 is inadequate.
> Before LIVY-699, decimal is mapped to the catch-all string type. With LIVY-699, decimal is mapped to a decimal type that is inadequate in that it does not encode the precision and scale. The type in Livy is represented by a BasicDataType case class which contains a String field, name; and a DataType (an enum) field, dataType. In the case of decimal, the dataType is DataType.DECIMAL. The precision and scale of the decimal is not encoded.
> When the DataType is converted to a TTypeDesc for sending a Thrift response to a client request for result set metadata, the TTypeDesc contains a TPrimitiveTypeEntry(TTypeId.DECIMAL_TYPE) without TTypeQualifiers (which are needed to capture the precision and scale). This results in problems for clients. E.g., if we connect to the Thrift server in beeline and do a select from a table with column of decimal type, we get
> {noformat}
> java.lang.NullPointerException
> 	at org.apache.hive.jdbc.JdbcColumn.columnPrecision(JdbcColumn.java:310)
> 	at org.apache.hive.jdbc.JdbcColumn.columnDisplaySize(JdbcColumn.java:262)
> 	at org.apache.hive.jdbc.HiveResultSetMetaData.getColumnDisplaySize(HiveResultSetMetaData.java:63)
> 	at org.apache.hive.beeline.IncrementalRows.<init>(IncrementalRows.java:57)
> 	at org.apache.hive.beeline.IncrementalRowsWithNormalization.<init>(IncrementalRowsWithNormalization.java:47)
> 	at org.apache.hive.beeline.BeeLine.print(BeeLine.java:2322)
> 	at org.apache.hive.beeline.Commands.executeInternal(Commands.java:1026)
> 	at org.apache.hive.beeline.Commands.execute(Commands.java:1215)
> 	at org.apache.hive.beeline.Commands.sql(Commands.java:1144)
> 	at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:1497)
> 	at org.apache.hive.beeline.BeeLine.execute(BeeLine.java:1355)
> 	at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:1134)
> 	at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:1082)
> 	at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:546)
> 	at org.apache.hive.beeline.BeeLine.main(BeeLine.java:528)
> {noformat}
> Note: You have to use "--verbose" with beeline to see the stack trace for the NPE.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)