[
https://issues.apache.org/jira/browse/NIFI-4830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Israel Varea updated NIFI-4830:
-------------------------------
Comment: was deleted
(was: if (javaSqlType == BLOB) {
Blob blob = rs.getBlob(i);
if (blob != null) {
long blobLength = blob.length();
byte[] blobAsBytes = blob.getBytes(1,
(int)blobLength);
ByteBuffer bb = ByteBuffer.wrap(blobAsBytes);
rec.put(i - 1, bb);
blob.free();
} else {
rec.put(i - 1, null);
}
continue;
})
> Blob not being read properly from Database to Avro
> --------------------------------------------------
>
> Key: NIFI-4830
> URL: https://issues.apache.org/jira/browse/NIFI-4830
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Israel Varea
> Priority: Major
>
> When using QueryDatabaseTable or any other component using JdbcCommon.java,
> the Blob column of the database is not fetched correctly to the Avro
> ByteBuffer. Instead of fetching whole file, only first bytes which are
> different to zero are added. Then, the rest of the bytes remain with zero
> value.
> Specifically, this code in JdbcCommon.java should be fixed:
> {code:java}
> if (javaSqlType == BLOB) {
> Blob blob = rs.getBlob(i);
> if (blob != null) {
> long numChars = blob.length();
> byte[] buffer = new byte[(int) numChars];
> InputStream is = blob.getBinaryStream();
> int index = 0;
> int c = is.read();
> while (c > 0) {
> buffer[index++] = (byte) c;
> c = is.read();
> }
> ByteBuffer bb = ByteBuffer.wrap(buffer);
> rec.put(i - 1, bb);
> blob.free();
> } else {
> rec.put(i - 1, null);
> }
> continue;
> }
> {code}
> Notice the while statement.
> The whole block should be replaced for something like
> {code:java}
> if (javaSqlType == BLOB) {
> Blob blob = rs.getBlob(i);
> if (blob != null) {
> long blobLength = blob.length();
>
> byte[] blobAsBytes = blob.getBytes(1,
> (int)blobLength);
> ByteBuffer bb = ByteBuffer.wrap(blobAsBytes);
> rec.put(i - 1, bb);
> blob.free();
> } else {
> rec.put(i - 1, null);
> }
> continue;
> }
> {code}
> This has been tested locally and it works! :)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)