Skip to content

[Java][FlightRPC] FlightSQL error: 'Parameter ordinal out of range' executing a prepared stmt with params #33475

@asfimport

Description

@asfimport

Hey again :)

I'm getting a 'parameter ordinal 1 out of range' error trying to set a parameter on the returned AvaticaPreparedStatement. Repro:

  • Open a FlightSQL JDBC connection

  • conn.prepareStatement with a SQL query containing params (e.g. INSERT INTO users (id, name) VALUES (?, ?))

  • ps.setString(1, "foo") -> above error, thrown from AvaticaPreparedStatement.getParameter(int)

    I had a bit of a dig to try to identify a potential cause:

  • the Meta.Signature passed to the AvaticaPreparedStatement on creation has an empty parameter list - this is what causes the out-of-bounds error.

  • in ArrowFlightMetaImpl.prepare, it calls newSignature, but this only takes the SQL query, and so newSignature creates the signature with the empty list. The call to ArrowFlightSqlClientHandler.prepare happens on the line after - could we pass the param Schema from this result to newSignature?

Let me know if I can help narrow this down further or help with the fix :)

James

Reporter: James Henderson / @jarohen
Assignee: David Li / @lidavidm

PRs and other links:

Note: This issue was originally created as ARROW-18300. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions