Matt Burgess created NIFI-6061:
----------------------------------
Summary: PutDatabaseRecord does not properly handle BLOB/CLOB
fields
Key: NIFI-6061
URL: https://issues.apache.org/jira/browse/NIFI-6061
Project: Apache NiFi
Issue Type: Bug
Components: Extensions
Reporter: Matt Burgess
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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)