Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-3404

EmbedResultSet.getString() returns wrong value after auto-commit with CLOSE_CURSORS_AT_COMMIT

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 10.3.1.4, 10.3.2.1, 10.4.1.3
    • Fix Version/s: 10.3.3.0, 10.4.1.3
    • Component/s: JDBC
    • Labels:
      None
    • Bug behavior facts:
      Regression

      Description

      The following code prints "null" to the console with the embedded driver:

      Statement s = c.createStatement(ResultSet.TYPE_FORWARD_ONLY,
      ResultSet.CONCUR_READ_ONLY,
      ResultSet.CLOSE_CURSORS_AT_COMMIT);
      ResultSet rs = s.executeQuery("select * from sysibm.sysdummy1");
      rs.next();
      c.createStatement().executeQuery("values 1").close(); // causes auto-commit
      System.out.println(rs.getString(1));

      The call to rs.getString() should perhaps have thrown SQLException, since the auto-commit between next() and getString() should close the ResultSet when the holdability is CLOSE_CURSORS_AT_COMMIT, I think. Anyway, the value stored in SYSIBM.SYSDUMMY1 is 'Y' and not NULL, so it should definitely not return null.

        Attachments

        1. d3404-v1.stat
          0.5 kB
          Knut Anders Hatlen
        2. d3404-v1.diff
          7 kB
          Knut Anders Hatlen
        3. CloseOnCommit.java
          0.7 kB
          Knut Anders Hatlen

          Activity

            People

            • Assignee:
              knutanders Knut Anders Hatlen
              Reporter:
              knutanders Knut Anders Hatlen
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: