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

getBinaryStream returns incorrect result (truncated value) if underlying blob is deleted

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.2.2.0, 10.3.1.4, 10.4.1.3, 10.5.3.0, 10.6.1.0
    • Fix Version/s: 10.5.3.1, 10.6.1.0
    • Component/s: JDBC
    • Labels:
      None
    • Urgency:
      Normal
    • Issue & fix info:
      High Value Fix, Repro attached
    • Bug behavior facts:
      Regression, Wrong query result

      Description

      If getBinaryStream is reading a value (READ_UNCOMMITTED) and the row is deleted by another connection, a truncated value will be returned without error. I believe instead either the whole value or an IOException should occur.

      With 10.2 and higher with the repro attahed we get:
      > java TruncatedBlob
      Embedded:
      Read 32669 bytes
      0 rows in BLOBCLOB

      With 10.1
      Embedded:
      Read 40000 bytes (OK)
      0 rows in BLOBCLOB

      Note network server returns the full value for both 10.1 and 10.2 but gives a lock timeout for 10.2+. I will file a separate issue for that.

        Attachments

        1. TruncatedBlob.java
          2 kB
          Kathey Marsden
        2. derby-2992-1b-throw_exception_on_eof.diff
          6 kB
          Kristian Waagan
        3. derby-2992-1a-throw_exception_on_eof.diff
          6 kB
          Kristian Waagan

          Issue Links

            Activity

              People

              • Assignee:
                kristwaa Kristian Waagan
                Reporter:
                kmarsden Kathey Marsden
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: