Derby
  1. Derby
  2. DERBY-680

In ij, executing a prepared statement with numeric/decimal parameter fails with NullPointerException in J2ME/CDC/FP

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 10.2.1.6
    • Fix Version/s: 10.3.1.4
    • Component/s: Tools
    • Labels:
      None
    • Environment:
      j9_foundation VM in IBM WCTME 5.7

      Description

      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; }

      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      1. derby-680_v2.diff
        6 kB
        Deepa Remesh
      2. derby-680_v2.status
        0.3 kB
        Deepa Remesh

        Activity

        Gavin made changes -
        Workflow jira [ 12343390 ] Default workflow, editable Closed status [ 12797570 ]
        Dyre Tjeldvoll made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Daniel John Debrunner made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Fix Version/s 10.3.0.0 [ 12310800 ]
        Deepa Remesh made changes -
        Attachment derby-680_v2.diff [ 12321832 ]
        Attachment derby-680_v2.status [ 12321833 ]
        Deepa Remesh made changes -
        Attachment derby-680_v2.status [ 12321829 ]
        Deepa Remesh made changes -
        Attachment derby-680_v2.diff [ 12321828 ]
        Deepa Remesh made changes -
        Attachment derby-680_v2.status [ 12321829 ]
        Attachment derby-680_v2.diff [ 12321828 ]
        Deepa Remesh made changes -
        Attachment derby-680.status [ 12321333 ]
        Deepa Remesh made changes -
        Attachment derby-680.diff [ 12321332 ]
        Deepa Remesh made changes -
        Field Original Value New Value
        Attachment derby-680.diff [ 12321332 ]
        Attachment derby-680.status [ 12321333 ]
        Deepa Remesh created issue -

          People

          • Assignee:
            Deepa Remesh
            Reporter:
            Deepa Remesh
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development