After applying the previous patch, iReport 4.5.0 reports the following error:
Error filling print... Error executing SQL statement for : cash_flow
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : cash_flow
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:229)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:731)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:629)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1159)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:802)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:746)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:879)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Caused by: org.postgresql.util.PSQLException: ERROR: integer out of range
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:222)
... 11 more
The error is caused by the limitation on the monetary amount reported. Specifically, the monetary amount is cast into integer with the assumption that no company is rich enough to have more than EUR 2 billions. The cast into integer is intended to reduce rounding errors. Unfortunately, an Indonesian company can easily exceed the monetary amount of IDR 2 billions causing integer overflow exception thrown by PostgreSQL.
After applying the previous patch, iReport 4.5.0 reports the following error:
Error filling print... Error executing SQL statement for : cash_flow jasperreports. engine. JRException: Error executing SQL statement for : cash_flow jasperreports. engine. query.JRJdbcQue ryExecuter. createDatasourc e(JRJdbcQueryEx ecuter. java:229) jasperreports. engine. fill.JRFillData set.createQuery Datasource( JRFillDataset. java:731) jasperreports. engine. fill.JRFillData set.initDatasou rce(JRFillDatas et.java: 629) jasperreports. engine. fill.JRBaseFill er.setParameter s(JRBaseFiller. java:1159) jasperreports. engine. fill.JRBaseFill er.fill( JRBaseFiller. java:802) jasperreports. engine. fill.JRBaseFill er.fill( JRBaseFiller. java:746) jasperreports. engine. fill.JRFiller. fillReport( JRFiller. java:58) jasperreports. engine. JasperFillManag er.fillReport( JasperFillManag er.java: 417) jasperreports. engine. JasperFillManag er.fillReport( JasperFillManag er.java: 247) ireport. designer. compiler. IReportCompiler .run(IReportCom piler.java: 879) util.RequestPro cessor$ Task.run( RequestProcesso r.java: 572) util.RequestPro cessor$ Processor. run(RequestProc essor.java: 997)
net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at net.sf.
at com.jaspersoft.
at org.openide.
at org.openide.
Caused by: org.postgresql. util.PSQLExcept ion: ERROR: integer out of range core.v3. QueryExecutorIm pl.receiveError Response( QueryExecutorIm pl.java: 1592) core.v3. QueryExecutorIm pl.processResul ts(QueryExecuto rImpl.java: 1327) core.v3. QueryExecutorIm pl.execute( QueryExecutorIm pl.java: 192) jdbc2.AbstractJ dbc2Statement. execute( AbstractJdbc2St atement. java:451) jdbc2.AbstractJ dbc2Statement. executeWithFlag s(AbstractJdbc2 Statement. java:350) jdbc2.AbstractJ dbc2Statement. executeQuery( AbstractJdbc2St atement. java:254) jasperreports. engine. query.JRJdbcQue ryExecuter. createDatasourc e(JRJdbcQueryEx ecuter. java:222)
at org.postgresql.
at org.postgresql.
at org.postgresql.
at org.postgresql.
at org.postgresql.
at org.postgresql.
at net.sf.
... 11 more
The error is caused by the limitation on the monetary amount reported. Specifically, the monetary amount is cast into integer with the assumption that no company is rich enough to have more than EUR 2 billions. The cast into integer is intended to reduce rounding errors. Unfortunately, an Indonesian company can easily exceed the monetary amount of IDR 2 billions causing integer overflow exception thrown by PostgreSQL.