Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-18300

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

    XMLWordPrintableJSON

Details

    Description

      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

      Attachments

        Issue Links

          Activity

            People

              lidavidm David Li
              jarohen James Henderson
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m