Expose Arrow `Struct` columns as JDBC `STRUCT` metadata in the Flight SQL JDBC driver.
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia in flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java, dove ArrowType.Struct è mappato su Types.JAVA_OBJECT, e rivedi l’implementazione correlata di ArrowFlightJdbcStructVectorAccessor.java. Aggiorna la mappatura dei metadati in modo che le colonne Struct riportino JDBC STRUCT e verifica che ResultSetMetaData restituisca STRUCT e "STRUCT" per tali colonne.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Java
- Stelle
- 95
- Fork
- 154
- Merge medio
- 2g 16h
- PR unite (30g)
- 9
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/arrow-java
-
Type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/arrow-java#1300 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/arrow-java#1261 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/arrow-java#1236 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/arrow-java#1230 ·
-
Type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
apache/arrow-java#1205 ·
Tutte le issue di apache/arrow-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
infinispan/infinispan#18150 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100