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

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

Commit 90930ca1970450255ace314d050914293f2e6599 in nifi's branch 
refs/heads/main from Pierre Villard
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=90930ca ]

NIFI-9476 - Fix QueryRecord when no result and with array type column

Signed-off-by: Matthew Burgess <[email protected]>

This closes #5594


> QueryRecord fails when no result and with a column of array type
> ----------------------------------------------------------------
>
>                 Key: NIFI-9476
>                 URL: https://issues.apache.org/jira/browse/NIFI-9476
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Pierre Villard
>            Assignee: Pierre Villard
>            Priority: Major
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> QueryRecord will fail if there is no record matching the query and if one the 
> columns returned as part of the result is of array type.
> This is because we build the schema from the result set metadata (before 
> actually looking if there are rows or not) except for arrays where we have to 
> get the first row of the result set to figure out the type of the array. This 
> raises an exception when we don't have any row in the result set. In such a 
> case, we'll just assume an array of strings if no row available.
> Here is the exception:
> {code:java}
> ERROR org.apache.nifi.processors.standard.QueryRecord - 
> QueryRecord[id=c21e44c4-2e6e-488b-9096-47753dfa429c] Unable to query 
> FlowFile[0,404685028855838.mockFlowFile,50B] due to 
> org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: 
> java.util.NoSuchElementException: Expecting cursor position to be 
> Position.OK, actual is Position.AFTER_END: 
> org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: 
> java.util.NoSuchElementException: Expecting cursor position to be 
> Position.OK, actual is Position.AFTER_END
> org.apache.nifi.processor.exception.ProcessException: java.sql.SQLException: 
> java.util.NoSuchElementException: Expecting cursor position to be 
> Position.OK, actual is Position.AFTER_END
>       at 
> org.apache.nifi.processors.standard.QueryRecord$1.process(QueryRecord.java:343)
>       at 
> org.apache.nifi.util.MockProcessSession.write(MockProcessSession.java:907)
>       at 
> org.apache.nifi.util.MockProcessSession.write(MockProcessSession.java:67)
>       at 
> org.apache.nifi.processors.standard.QueryRecord.onTrigger(QueryRecord.java:332)
>       at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>       at 
> org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:284)
>       at 
> org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:278)
>       at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>       at 
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
>       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:829)
> Caused by: java.sql.SQLException: java.util.NoSuchElementException: Expecting 
> cursor position to be Position.OK, actual is Position.AFTER_END
>       at 
> org.apache.calcite.avatica.util.PositionedCursor$ArrayGetter.getObject(PositionedCursor.java:65)
>       at 
> org.apache.calcite.avatica.util.AbstractCursor$AccessorImpl.getObject(AbstractCursor.java:357)
>       at 
> org.apache.calcite.avatica.util.AbstractCursor$ArrayAccessor.getObject(AbstractCursor.java:1335)
>       at 
> org.apache.calcite.avatica.util.AbstractCursor$ArrayAccessor.getArray(AbstractCursor.java:1403)
>       at 
> org.apache.calcite.avatica.AvaticaResultSet.getArray(AvaticaResultSet.java:731)
>       at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.getArrayDataType(ResultSetRecordSet.java:296)
>       at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.getDataType(ResultSetRecordSet.java:208)
>       at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.createSchema(ResultSetRecordSet.java:185)
>       at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.<init>(ResultSetRecordSet.java:87)
>       at 
> org.apache.nifi.serialization.record.ResultSetRecordSet.<init>(ResultSetRecordSet.java:72)
>       at 
> org.apache.nifi.processors.standard.QueryRecord$1.process(QueryRecord.java:339)
>       ... 11 more
> Caused by: java.util.NoSuchElementException: Expecting cursor position to be 
> Position.OK, actual is Position.AFTER_END
>       at 
> org.apache.calcite.avatica.util.IteratorCursor.current(IteratorCursor.java:71)
>       at 
> org.apache.calcite.avatica.util.PositionedCursor$ArrayGetter.getObject(PositionedCursor.java:55)
>       ... 21 more {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to