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

DisconnectException when executing an SELECT [LOB column] ORDER BY [...] statement with TYPE_SCROLL_[IN]SENSITIVE and CONCUR_UPDATABLE

    XMLWordPrintableJSON

    Details

    • Urgency:
      Normal
    • Issue & fix info:
      High Value Fix, Repro attached
    • Bug behavior facts:
      Crash, Embedded/Client difference, Seen in production

      Description

      Here's a minimal program to reproduce the issue:

      Connection c = DriverManager.getConnection(
      "jdbc:derby://localhost:1527/test;create=true", "TEST", "TEST");
      Statement s = c.createStatement();
      s.executeUpdate(
      "CREATE TABLE t(" +
      "id INT NOT NULL, " +
      "c CLOB" +
      ")");
      s.executeUpdate("INSERT INTO t VALUES (1, null)");
      s.executeUpdate("INSERT INTO t VALUES (2, null)");
      PreparedStatement stmt = c.prepareStatement(
      "SELECT * FROM t ORDER BY id",
      ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
      ResultSet rs = stmt.executeQuery();
      rs.next();

      The above leads to this exception:

      java.sql.SQLNonTransientConnectionException: Netzwerkprotokollausnahme: DSS-Länge ist beim Beenden des Parsing-Vorgangs der ID-Kette größer als 0. Die Verbindung wurde beendet.
      at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
      at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
      at org.apache.derby.client.am.ResultSet.next(Unknown Source)
      at org.jooq.test._.testcases.KeepResultSetTests.testKeepRSWithUpdateOnChangeLazy(KeepResultSetTests.java:330)
      at org.jooq.test.jOOQAbstractTest.testKeepRSWithUpdateOnChangeLazy(jOOQAbstractTest.java:2240)
      ...
      Caused by: org.apache.derby.client.am.DisconnectException: Netzwerkprotokollausnahme: DSS-Länge ist beim Beenden des Parsing-Vorgangs der ID-Kette größer als 0. Die Verbindung wurde beendet.
      at org.apache.derby.client.net.Reply.endOfSameIdChainData(Unknown Source)
      at org.apache.derby.client.net.NetResultSetReply.readPositioningFetch(Unknown Source)
      at org.apache.derby.client.net.ResultSetReply.readPositioningFetch(Unknown Source)
      at org.apache.derby.client.net.NetResultSet.readPositioningFetch_(Unknown Source)
      at org.apache.derby.client.am.ResultSet.getRowCount(Unknown Source)
      at org.apache.derby.client.am.ResultSet.resultSetContainsNoRows(Unknown Source)
      at org.apache.derby.client.am.ResultSet.getNextRowset(Unknown Source)
      at org.apache.derby.client.am.ResultSet.nextX(Unknown Source)
      ... 30 more

      To reproduce the above, all of the following things seem relevant:

      1. There is at least one BLOB or CLOB column being selected
      2. An ORDER BY clause is added
      3. ResultSet.TYPE_SCROLL_SENSITIVE or ResultSet.TYPE_SCROLL_INSENSITIVE is set
      4. ResultSet.CONCUR_UPDATABLE is set

        Attachments

        1. derby-6228-a.diff
          10 kB
          Dyre Tjeldvoll
        2. Derby6228.java
          3 kB
          Dag H. Wanvik

          Issue Links

            Activity

              People

              • Assignee:
                dyret Dyre Tjeldvoll
                Reporter:
                lukas.eder Lukas Eder
              • Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: