You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Matt Burgess (Jira)" <ji...@apache.org> on 2020/11/23 16:06:00 UTC

[jira] [Updated] (NIFI-7973) Oracle JDBC - ExecuteSqlRecord and other components fail on zero precision

     [ https://issues.apache.org/jira/browse/NIFI-7973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Burgess updated NIFI-7973:
-------------------------------
    Summary: Oracle JDBC - ExecuteSqlRecord and other components fail on zero precision  (was: Oracle JDBC - ExcecuteSqlRecord - Unable to determine Avro Schema - Decimal types)

> Oracle JDBC - ExecuteSqlRecord and other components fail on zero precision
> --------------------------------------------------------------------------
>
>                 Key: NIFI-7973
>                 URL: https://issues.apache.org/jira/browse/NIFI-7973
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>         Environment: Centos 8.2
> JDK 11
> Oracle 11.2
> Oracle JDBC 8
>            Reporter: Robin Giesen
>            Assignee: Matt Burgess
>            Priority: Major
>              Labels: AvroSchema, AvroTypeUtil, ExecuteSqlRecord, Oracle
>
> Hi there,
> during the upgrade from 11.4 to 12.1 we noticed that isn't longer possible to reuse the old canvas and settings because the ExecuteSqlRecord Processor cannot handle Oracles Number conversion. We use a ExecuteSqlRecord processor with incoming SQL statements and an AvroRecordWriter where the schema is determined on the fly. We also tested the ExceuteSql Processor which can use default precision and scale. Hence, there was no error. In the 12.0 version, the error doesn't occur.
>  
> We tested the following combinations:
> 1. 
> SELECT 1 as test from dual => FAIL
> 2. 
> SELECT CAST(1 as number(12,2)) as test from dual => SUCCESS
> 2020-10-30 18:08:24,677 ERROR [Timer-Driven Process Thread-9] o.a.n.p.standard.ExecuteSQLRecord ExecuteSQLRecord[id=7a50a193-0175-1000-f2e7-78054e6dcba0] Unable to execute SQL select query SELECT cast(1 as number(12,2)) TEST, 1 as test2 FROM DUAL due to org.apache.nifi.processor.exception.ProcessException: java.io.IOException: org.apache.nifi.processor.exception.ProcessException: Could not determine the Avro Schema to use for writing the content. No FlowFile to route to failure: org.apache.nifi.processor.exception.ProcessException: java.io.IOException: org.apache.nifi.processor.exception.ProcessException: Could not determine the Avro Schema to use for writing the content
> org.apache.nifi.processor.exception.ProcessException: java.io.IOException: org.apache.nifi.processor.exception.ProcessException: Could not determine the Avro Schema to use for writing the content
>     at org.apache.nifi.processors.standard.AbstractExecuteSQL.lambda$onTrigger$1(AbstractExecuteSQL.java:302)
>     at org.apache.nifi.controller.repository.StandardProcessSession.write(StandardProcessSession.java:2751)
>     at org.apache.nifi.processors.standard.AbstractExecuteSQL.onTrigger(AbstractExecuteSQL.java:298)
>     at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>     at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1174)
>     at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:213)
>     at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
>     at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>     at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
>     at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
>     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>     at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.io.IOException: org.apache.nifi.processor.exception.ProcessException: Could not determine the Avro Schema to use for writing the content
>     at org.apache.nifi.processors.standard.sql.RecordSqlWriter.writeResultSet(RecordSqlWriter.java:88)
>     at org.apache.nifi.processors.standard.AbstractExecuteSQL.lambda$onTrigger$1(AbstractExecuteSQL.java:300)
>     ... 13 common frames omitted
> Caused by: org.apache.nifi.processor.exception.ProcessException: Could not determine the Avro Schema to use for writing the content
>     at org.apache.nifi.avro.AvroRecordSetWriter.createWriter(AvroRecordSetWriter.java:154)
>     at jdk.internal.reflect.GeneratedMethodAccessor410.invoke(Unknown Source)
>     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
>     at org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:105)
>     at com.sun.proxy.$Proxy167.createWriter(Unknown Source)
>     at org.apache.nifi.processors.standard.sql.RecordSqlWriter.writeResultSet(RecordSqlWriter.java:81)
>     ... 14 common frames omitted
> Caused by: org.apache.nifi.schema.access.SchemaNotFoundException: Failed to compile Avro Schema
>     at org.apache.nifi.avro.AvroRecordSetWriter.createWriter(AvroRecordSetWriter.java:145)
>     ... 21 common frames omitted
> Caused by: java.lang.IllegalArgumentException: Invalid decimal precision: 0 (must be positive)
>     at org.apache.avro.LogicalTypes$Decimal.validate(LogicalTypes.java:206)
>     at org.apache.avro.LogicalType.addToSchema(LogicalType.java:70)
>     at org.apache.avro.LogicalTypes$Decimal.addToSchema(LogicalTypes.java:182)
>     at org.apache.nifi.avro.AvroTypeUtil.buildAvroSchema(AvroTypeUtil.java:263)
>     at org.apache.nifi.avro.AvroTypeUtil.buildAvroField(AvroTypeUtil.java:127)
>     at org.apache.nifi.avro.AvroTypeUtil.buildAvroSchema(AvroTypeUtil.java:119)
>     at org.apache.nifi.avro.AvroTypeUtil.extractAvroSchema(AvroTypeUtil.java:99)
>     at org.apache.nifi.avro.AvroRecordSetWriter.createWriter(AvroRecordSetWriter.java:142)
>     ... 21 common frames omitted



--
This message was sent by Atlassian Jira
(v8.3.4#803005)