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

OutOfMemoryError with Clob or Blob hash join: DataTypeDescriptor.estimatedMemoryUsage() has no case for BLOB or CLOB so would underestimate memory usage for those types at zero

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 10.1.3.1, 10.2.2.0, 10.3.3.0, 10.4.2.0, 10.5.3.0, 10.6.2.1, 10.7.1.1, 10.8.3.0, 10.9.1.0, 10.10.1.1
    • 10.11.1.1
    • SQL

    Description

      In discussion on derby-dev regarding how much memory is used for hash joins, Knut noted:

      I haven't verified, but I think HashJoinStrategy uses
      DataTypeDescriptor.estimatedMemoryUsage() to estimate how much memory
      the hash table will consume. That method has no case for BLOB or CLOB,
      so it looks as if it will return zero for LOB columns. If that's so, it
      will definitely overestimate how many rows fits in maxMemoryPerTable
      kilobytes if the rows contain LOBs.

      DataTypeDescriptor.estimatedMemoryUsage() should be updated to include BLOB and CLOB and we should try verify if this theory is correct with a reproduction.

      Attachments

        1. D6096.java
          0.8 kB
          Knut Anders Hatlen
        2. derby-6096_code_diff.txt
          0.9 kB
          Katherine Marsden
        3. derby-6096_diff.txt
          6 kB
          Katherine Marsden
        4. releaseNote.html
          4 kB
          Katherine Marsden
        5. derby-6096_diff2.txt
          6 kB
          Katherine Marsden
        6. less-gc.diff
          2 kB
          Knut Anders Hatlen
        7. releaseNote.html
          2 kB
          Richard N. Hillegas

        Issue Links

          Activity

            People

              kmarsden Katherine Marsden
              kmarsden Katherine Marsden
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: