Expose Arrow `Struct` columns as JDBC `STRUCT` metadata in the Flight SQL JDBC driver.
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
Piste de recherche
Commencez dans flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java, où ArrowType.Struct est mappé sur Types.JAVA_OBJECT, et examinez l’implémentation associée de ArrowFlightJdbcStructVectorAccessor.java. Mettez à jour le mappage des métadonnées afin que les colonnes Struct indiquent JDBC STRUCT et vérifiez que ResultSetMetaData renvoie STRUCT et "STRUCT" pour ces colonnes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the enhancement requested
Please expose Arrow Struct columns as JDBC STRUCT metadata in the Flight SQL JDBC driver.
Today, Arrow Struct is mapped to java.sql.Types.JAVA_OBJECT, which makes
ResultSetMetaData report:
getColumnType(...) == Types.JAVA_OBJECTgetColumnTypeName(...) == "JAVA_OBJECT"
This hides the fact that the column is structurally a JDBC STRUCT, even though the driver
already has struct-specific accessor support.
Why this matters
JDBC clients often rely on ResultSetMetaData to understand result schemas before reading
rows. When STRUCT columns are reported as JAVA_OBJECT, clients cannot distinguish:
- struct/object-like columns
- generic opaque objects
This makes schema inspection, BI tooling, ORM adapters, and generic JDBC consumers harder.
Current upstream evidence
In
flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java:
ArrowType.Structmaps toTypes.JAVA_OBJECT
In flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/accessor/impl/comple x/ArrowFlightJdbcStructVectorAccessor.java:
getStruct()is already implemented- but
getObjectClass()returnsMap.class getObject()returns aMap
So the data path knows about structs, but metadata does not expose them as JDBC STRUCT.
Expected behavior
For Arrow Struct columns:
ResultSetMetaData.getColumnType(...)should returnjava.sql.Types.STRUCTResultSetMetaData.getColumnTypeName(...)should returnSTRUCT
Optionally, getObject() / object-class behavior could also be aligned with JDBC Struct, but
the most important gap is metadata.
Actual behavior
Arrow Struct columns are exposed as:
Types.JAVA_OBJECT"JAVA_OBJECT"
Version
Observed with:
- Arrow Flight SQL JDBC driver
18.2.0
Confirmed in current upstream code and latest published artifact line:
19.0.0
- Langage dominant
- Java
- Étoiles
- 95
- Forks
- 154
- Merge moyen
- 2 j 16 h
- PR mergées (30 j)
- 9
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/arrow-java
-
Type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/arrow-java#1300 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
apache/arrow-java#1261 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/arrow-java#1236 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/arrow-java#1230 ·
-
Type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
apache/arrow-java#1205 ·
Toutes les issues de apache/arrow-java
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
infinispan/infinispan#18150 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
-
untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100