Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions