[
https://issues.apache.org/jira/browse/NIFI-9192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matt Burgess resolved NIFI-9192.
--------------------------------
Fix Version/s: 1.15.0
Resolution: Fixed
> Value of QueryDatabaseTableRecord's "Use Avro Logical Types" property ignored
> when determining the schema of the recordset
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: NIFI-9192
> URL: https://issues.apache.org/jira/browse/NIFI-9192
> Project: Apache NiFi
> Issue Type: Bug
> Components: Extensions
> Reporter: Peter Gyori
> Assignee: Peter Gyori
> Priority: Major
> Fix For: 1.15.0
>
> Time Spent: 4h 10m
> Remaining Estimate: 0h
>
> In RecordSqlWriter, the avro schema is determined using this:
> {code:java}
> final Schema avroSchema = JdbcCommon.createSchema(resultSet, options);{code}
> Here, in 'options' the value of "Use Avro Logical Types" is passed and taken
> into consideration. This avroSchema is used to create the recordAvroSchema,
> which is OK:
> {code:java}
> final RecordSchema recordAvroSchema =
> AvroTypeUtil.createSchema(avroSchema);{code}
> *However*, when creating the fullRecordSet object (which contains the schema
> as well, the creation:
> {code:java}
> fullRecordSet = new ResultSetRecordSetWithCallback(resultSet,
> recordAvroSchema, callback, options.getDefaultPrecision(),
> options.getDefaultScale()){code}
> does not consider the value of the useLogicalTypes flag since it is not
> passed to the constructor. recordAvroSchema was created considering the value
> of the flag, and is passed to the constructor but *the settings in this
> schema are overridden during the ResultSetRecordSet creation*, where a schema
> is created based on the metadata received from the database.
> As a result, if we have "Use Avro Logical Types" set to false, and we have a
> column in an Oracle DB table (for the sake of this example) that is of type
> NUMBER, the resulting avro shcema is:
> {code:java}
> "type" : {
> "type" : "bytes",
> "logicalType" : "decimal",
> "precision" : 10,
> "scale" : 0
> }
> {code}
> which unfortunately contains logical avro type.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)