Skip to content

[Java][FlightRPC] Handle binding parameters when server can't provide the expected type #153

Open
@aiguofer

Description

@aiguofer

Describe the enhancement requested

Based on #156, we need to support the case where the server can't specify the expected type of a given parameter.

Not all servers can always provide an accurate type for bind parameters. What should we do there? Note that ADBC uses NA/NullType as a wildcard/placeholder type here. This isn't specified in Flight SQL itself, but perhaps we could adopt that convention as well.

Proposal:

  • When the server doesn't know the type of any of the parameters, it can just set the parameter schema to null (or alternatively, an empty schema).
  • When the server doesn't know the type of only some of the parameters, it can just set the respective Field to NullType.
  • Before we start binding values, we transform the preparedStatement.getParameterSchema() based on the types of the given TypedValues. If the Schema is empty/null, we create every Field for the schema based on the TypedValue type. Otherwise, we replace all NullType fields with a Field based on the TypedValue.

The only potential drawback I see with this approach is that NullTypes can't be used for parameters. That being said, I can't really think of a case why one would want to do that.

Component(s)

Java

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions