Expose Arrow `Struct` columns as JDBC `STRUCT` metadata in the Flight SQL JDBC driver.
まだ誰も着手していません。
評価
調査の方向性
flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java から始めます。ここでは ArrowType.Struct が Types.JAVA_OBJECT にマッピングされているため、関連する ArrowFlightJdbcStructVectorAccessor.java の実装を確認してください。Struct 列が JDBC STRUCT を報告するようにメタデータマッピングを更新し、それらの列について ResultSetMetaData が STRUCT と "STRUCT" を返すことを確認してください。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Java
- スター
- 95
- フォーク
- 154
- 平均マージ
- 2日 16時間
- マージ済み PR(30日)
- 9
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/arrow-java のほかの issue
-
Type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/arrow-java#1300 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
apache/arrow-java#1261 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/arrow-java#1236 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/arrow-java#1230 ·
-
Type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
apache/arrow-java#1205 ·
apache/arrow-java の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
infinispan/infinispan#18150 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
-
untriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
opensearch-project/k-NN#3597 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100