[Java][FlightRPC] Handle binding parameters when server can't provide the expected type
- Vorherrschende Sprache
- Java
- Sterne
- 94
- Forks
- 152
- Ø Merge
- 3 T. 16 Std.
- Gemergte PRs (30 T.)
- 11
Beschreibung
### Describe the enhancement requested
Based on apache/arrow-java#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
Beitragsleitfaden
Rechercherichtung
Beginne damit, die Bindung vorbereiteter Statements in FlightRPC von preparedStatement.getParameterSchema() durch die vor der Bindung verwendeten TypedValues zu verfolgen. Überprüfe die Behandlung eines null- oder leeren Schemas sowie einzelner NullType-Felder, wobei die Vervollständigung angezeigt wird, wenn jedes Feld des Parameterschemas aus dem entsprechenden TypedValue-Typ abgeleitet wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100