Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-6061

PutDatabaseRecord does not properly handle BLOB/CLOB fields

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.11.4
    • 1.14.0
    • Extensions
    • None

    Description

      BLOB/CLOB fields in NiFi's Record API are returned from the record as Object[Byte], but when PutDatabaseRecord tries to insert Object[] via setObject(), the following error occurs:

      2019-02-20 15:11:16,216 WARN [Timer-Driven Process Thread-10] o.a.n.p.standard.PutDatabaseRecord PutDatabaseRecord[id=0c84b9de-0169-1000-0164-3fbad7a17664] Failed to process StandardFlowFileRecord[uuid=d739f432-0871-41bb-a0c9-d6ceeac68a6d,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1550690599998-1, container=default, section=1], offset=1728, length=251],offset=0,name=d739f432-0871-41bb-a0c9-d6ceeac68a6d,size=251] due to org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of [Ljava.lang.Object;. Use setObject() with an explicit Types value to specify the type to use.:

      Somewhere in the value conversion/representation, PutDatabaseRecord would likely need to create a java.sql.Blob object and transfer the bytes into it. One issue I see is that the record field type has been converted to Array[Byte], so the information that the field is a BLOB is lost by that point. If this requires DB-specific code, we'd likely need to add a Database Adapter property and delegate out to the various DB adapters.

      Attachments

        Issue Links

          Activity

            People

              Ku_Cheng ZhangCheng
              mattyb149 Matt Burgess
              Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 3h 20m
                  3h 20m