[ 
https://issues.apache.org/jira/browse/NIFI-9192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17421013#comment-17421013
 ] 

ASF subversion and git services commented on NIFI-9192:
-------------------------------------------------------

Commit 38d26dafa36888826b1017f9f36725628dc40430 in nifi's branch 
refs/heads/main from Peter Gyori
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=38d26da ]

NIFI-9192: ResultSetRecordSet considers value of useLogicalTypes flag when 
determining the object's schema.

NIFI-9192: ResultSetRecordSet consider value of useLogicalType flag when 
sqlType is not handled separately (default) and readerSchema is not null

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>

NIFI-9192: Unit tests added to test the use of useLogicalType flag

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>

NIFI-9192: ResultSetRecordSet consider not using logical type when sqlType is 
OTHER

NIFI-9192: Fixed checkstyle violations

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>

NIFI-9192: Renamed JdbcCommon.getUseLogicalTypes to isUseLogicalTypes

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>

NIFI-9192: Added unit tests for Array types with and without using logical types

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>

NIFI-9192: Review comments considered and unit tests refactored

NIFI-9192: Added further unit tests

NIFI-9192: Minor modifications based on review comments

Signed-off-by: Peter Gyori <peter.gyori....@gmail.com>
Signed-off-by: Matthew Burgess <mattyb...@apache.org>

This closes #5388


> 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
>          Time Spent: 4h
>  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)

Reply via email to