Derby
  1. Derby
  2. DERBY-2992

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

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major 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.

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

        Issue Links

          Activity

          No work has yet been logged on this issue.

            People

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

              Dates

              • Created:
                Updated:
                Resolved:

                Development