[ http://issues.apache.org/jira/browse/DERBY-680?page=comments#action_12364002 ]
Kathey Marsden commented on DERBY-680: -------------------------------------- I think we should have a regression test that verifies the fix submitted with the fix, , either by enabling cast.sql with J2ME or adding the case to another test that already runs with J2ME > In ij, executing a prepared statement with numeric/decimal parameter fails > with NullPointerException in J2ME/CDC/FP > ------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-680 > URL: http://issues.apache.org/jira/browse/DERBY-680 > Project: Derby > Type: Bug > Components: Tools > Versions: 10.2.0.0 > Environment: j9_foundation VM in IBM WCTME 5.7 > Reporter: Deepa Remesh > Assignee: Deepa Remesh > Attachments: derby-680_v2.diff, derby-680_v2.status > > NPE is thrown in ij when executing prepared statement which > - has numeric/decimal parameters > - does not return any result set > Repro for this problem is the test lang/cast.sql. This test currently fails > in CDC/FP. > The following lines in the test throw NPE: > execute q10 using 'values 123456.78'; > execute q11 using 'values 123456.78'; > where q10 is "prepare q10 as 'insert into t1 (num) values cast(? as > numeric(18))';" > and q11 is "prepare q11 as 'insert into t1 (dc) values cast(? as > decimal(18))';" > The stack trace for failure is: > java.lang.NullPointerException > at org.apache.derby.impl.tools.ij.util.DisplayMulti(util.java:666) > at > org.apache.derby.impl.tools.ij.utilMain.displayResult(utilMain.java:398) > at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:290) > at org.apache.derby.impl.tools.ij.Main.go(Main.java:203) > at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:169) > at org.apache.derby.impl.tools.ij.Main.main(Main.java:75) > at org.apache.derby.tools.ij.main(ij.java:56) > This happens in the following code. Since the above prepared statements do > not return result sets, call to getMetaData() will return null. But in the > code, no check is done to see if getMetaData() returns null before calling > getColumnType. > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > // In J2ME there is no object > that represents > // a DECIMAL value. By default > use String to > // pass values around, but for > integral types > // first convert to a integral > type from the DECIMAL > // because strings like 3.4 are > not convertible to > // an integral type. > switch > (ps.getMetaData().getColumnType(c)) > { > case Types.BIGINT: > ps.setLong(c, > rs.getLong(c)); > break; > case Types.INTEGER: > case Types.SMALLINT: > case Types.TINYINT: > ps.setInt(c, > rs.getInt(c)); > break; > default: > > ps.setString(c,rs.getString(c)); > break; > } > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira