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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions