Community
Participate
Working Groups
Build Identifier: Version: 3.7.1 Build id: M20120111-0800 I have a hive table that contains a BIGINT column. When running a report the column always comes back empty. The ReportEngine log contains a "WARNING: Method not supported" for org.eclipse.birt.report.data.oda.jdbc.ResultSet.getBigDecimal. The org.eclipse.birt.report.data.oda.jdbc.ResultSet is being passed a org.apache.hadoop.hive.jdbc.HiveQueryResultSet, which does not support getBigDecimal. The "getObject" from HiveQueryResultSet returns a Long. That appears to be the reason for my empty columns. By adding the following to the getBigDecimal methods of org.eclipse.birt.report.data.oda.jdbc.ResultSet I am able to get results: if (value instanceof Number) { return new BigDecimal(((Number)value).longValue()); } Reproducible: Always Steps to Reproduce: 1. create a table definition in HIVE that has a BIGINT column 2. create a report that retrieves the BIGINT column
The fix will likely be included in a later 3.7.2 milestone, like RC4 or Final. *** This bug has been marked as a duplicate of bug 362714 ***
This is not exactly a duplicate of 362714. That bug results in an exception that causes the chart to not be shown at all. The solution for that bug allows the chart to be shown, but the BigDecimal columns still appear empty in my chart. In my case BIRT decides the column should be Decimal, but HIVE is returning a Long. So, the fix for 362714 does not work for me. Instead of (or in addition to) checking the return value of rs.getObject() is an instance of BigDecimal it should check that the return value is an instance of Long. Then return a new BigDecimal(Long).
The fix implementation for #362714 is indeed to check that the #getObject returned value is an instance of Long. And then return a new BigDecimal(Long). The fix will be pushed to BIRT Git repo in a later milestone. *** This bug has been marked as a duplicate of bug 362714 ***