You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "James Henderson (Jira)" <ji...@apache.org> on 2022/11/09 20:42:00 UTC
[jira] [Comment Edited] (ARROW-18294) [Java][FlightRPC] 'Signature not found' calling `executeUpdate` on FlightSQL prepared statement
[ 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)