[
https://issues.apache.org/jira/browse/ARROW-18294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17631280#comment-17631280
]
James Henderson edited comment on ARROW-18294 at 11/9/22 8:41 PM:
------------------------------------------------------------------
Hey, thanks for the quick turnaround! Yep, PR looks good to me - we got another
error but that looks unrelated:
{code}
1. Unhandled java.lang.NullPointerException
Cannot read field "columns" because "signature" is null
AvaticaResultSet.java: 85
cfjd.org.apache.calcite.avatica.AvaticaResultSet/<init>
ArrowFlightJdbcVectorSchemaRootResultSet.java: 60
org.apache.arrow.driver.jdbc.ArrowFlightJdbcVectorSchemaRootResultSet/<init>
ArrowFlightJdbcFlightStreamResultSet.java: 64
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFlightStreamResultSet/<init>
ArrowFlightJdbcFactory.java: 98
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFactory/newResultSet
ArrowFlightJdbcFactory.java: 38
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFactory/newResultSet
AvaticaConnection.java: 566
cfjd.org.apache.calcite.avatica.AvaticaConnection/executeQueryInternal
AvaticaPreparedStatement.java: 152
cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeLargeUpdate
AvaticaPreparedStatement.java: 147
cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeUpdate
{code}
We return -1 as a result count (because we don't yet know how many rows were
affected) - it seems Avatica is then interpreting that as a requirement to
create and return a result set, which it can't do without a signature -
returning any other negative number and our test passes.
was (Author: jarohen):
Hey, thanks for the quick turnaround! Yep, PR looks good to me - we got another
error but that looks unrelated:
{code}
1. Unhandled java.lang.NullPointerException
Cannot read field "columns" because "signature" is null
AvaticaResultSet.java: 85
cfjd.org.apache.calcite.avatica.AvaticaResultSet/<init>
ArrowFlightJdbcVectorSchemaRootResultSet.java: 60
org.apache.arrow.driver.jdbc.ArrowFlightJdbcVectorSchemaRootResultSet/<init>
ArrowFlightJdbcFlightStreamResultSet.java: 64
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFlightStreamResultSet/<init>
ArrowFlightJdbcFactory.java: 98
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFactory/newResultSet
ArrowFlightJdbcFactory.java: 38
org.apache.arrow.driver.jdbc.ArrowFlightJdbcFactory/newResultSet
AvaticaConnection.java: 566
cfjd.org.apache.calcite.avatica.AvaticaConnection/executeQueryInternal
AvaticaPreparedStatement.java: 152
cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeLargeUpdate
AvaticaPreparedStatement.java: 147
cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeUpdate
{code}
We return -1 as a result count - it seems Avatica is then interpreting that as
a requirement to create and return a result set, which it can't do without a
signature - returning any other negative number and our test passes.
> [Java][FlightRPC] 'Signature not found' calling `executeUpdate` on FlightSQL
> prepared statement
> -----------------------------------------------------------------------------------------------
>
> Key: ARROW-18294
> URL: https://issues.apache.org/jira/browse/ARROW-18294
> Project: Apache Arrow
> Issue Type: Bug
> Components: FlightRPC, Java
> Affects Versions: 10.0.0
> Reporter: James Henderson
> Assignee: David Li
> Priority: Major
> Labels: pull-request-available
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> Hey folks :)
> I'm hitting the 'signature not found' NPE precondition in
> {{ArrowFlightMetaImpl.execute}} when I prepare a DML statement and call
> {{executeUpdate}} (the prepare step seems to work fine):
> {code}
> Preconditions.java: 801
> cfjd.org.apache.arrow.util.Preconditions/checkNotNull
> ArrowFlightMetaImpl.java: 86
> org.apache.arrow.driver.jdbc.ArrowFlightMetaImpl/execute
> ArrowFlightMetaImpl.java: 96
> org.apache.arrow.driver.jdbc.ArrowFlightMetaImpl/execute
> AvaticaConnection.java: 548
> cfjd.org.apache.calcite.avatica.AvaticaConnection/executeQueryInternal
> AvaticaPreparedStatement.java: 152
> cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeLargeUpdate
> AvaticaPreparedStatement.java: 147
> cfjd.org.apache.calcite.avatica.AvaticaPreparedStatement/executeUpdate
> {code}
> It seems that this will always be null in this situation because
> {{AvaticaPreparedStatement.executeLargeUpdate}} calls
> {{executeQueryInternal}} with a null signature, regardless of the signature
> in the prepared statement itself (which is non-null)?
> Otherwise, enjoying playing with FlightSQL so far - thanks!
> James
--
This message was sent by Atlassian Jira
(v8.20.10#820010)