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

'SQLBinary.readFromStream' can enter endless loop

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 10.2.1.6
    • 10.2.1.6
    • JDBC, SQL
    • None

    Description

      Under certain circumstances, the method 'SQLBinary.readFromStream' can enter an endless loop while reading the stream. The following must be true for the bug to occur:

      • There must be more data in the stream than what can fit into the initial buffer (32 K).
      • The method 'available' of the stream returns 0.

      Since the default return value for 'InputStream.available' is 0, and the method reading the stream can be used for data types CHAR FOR BIT DATA, VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA, the bug should be fixed. The maximum length is 32700 bytes.
      The method will also be used by SQLBlob, but it may be better to introduce a new streaming method for it, since the current implementation has memory-problems for large data (materializes the whole stream). A separate issue should/will be created for this.

      The symptom for this bug is a hang when calling one of the execute methods of Prepared- or CallableStatement and maybe also certain set methods in ResultSet.
      The visibility of this bug is very low, but the impact is severe/critical. When the JDBC 4 length less streaming overloads are added (DERBY-1417), visibility might increase.

      Attachments

        1. derby-1510-1a.diff
          0.5 kB
          Kristian Waagan

        Activity

          People

            kristwaa Kristian Waagan
            kristwaa Kristian Waagan
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: