Lukas Eder created HIVE-4499:
--------------------------------

             Summary: Implement more versatile data type conversion in Hive 
JDBC ResultSet
                 Key: HIVE-4499
                 URL: https://issues.apache.org/jira/browse/HIVE-4499
             Project: Hive
          Issue Type: Improvement
          Components: JDBC
    Affects Versions: 0.10.0
            Reporter: Lukas Eder


The Hive JDBC ResultSet cannot convert from Double to BigDecimal, as can be 
seen in this code extract here:

{code}
 public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
    Object obj = getObject(columnIndex);
    if (obj == null) {
      return null;
    }
    if (obj instanceof BigDecimal) {
      return ((BigDecimal) obj);
    }
    if (obj instanceof HiveDecimal) {
      return ((HiveDecimal) obj).bigDecimalValue();
    }
    throw new SQLException("Cannot convert column " + columnIndex
                           + " to BigDecimal. Found data of type: "
                           + obj.getClass()+", value: " + obj.toString());
}
{code}

Taken from:
https://github.com/apache/hive/blob/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveBaseResultSet.java#L107

This results in interoperability problems with other APIs, such as jOOQ, as can 
be seen in this issue here:
https://github.com/jOOQ/jOOQ/issues/2442

It would be nice if Hive could implement more versatile data type conversions 
in its ResultSet (not just for Double/BigDecimal). Some inspiration could be 
taken from

- Derby (http://db.apache.org/derby)
- H2 (http://www.h2database.com)
- HSQLDB (http://hsqldb.org)
- jOOQ (http://www.jooq.org)

All of the above implement ResultSets with lots of data type conversion 
capabilities.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to